Refactor clipboard management and graphics query scripts
This commit is contained in:
12 files changed
+472
-11
No files matched your search
@@ -1 +1,2 @@
|
|||||||
[?25l[?80l[?8452lP0;1;0q"1;1;192;204#0;2;2;3;4#1;2;2;4;10#2;2;2;5;12#3;2;4;6;5#4;2;4;7;9#5;2;4;9;15#6;2;3;9;19#7;2;4;14;20#8;2;5;15;25#9;2;5;20;28#10;2;6;24;43#11;2;8;9;10#12;2;9;11;13#13;2;6;11;21#14;2;10;14;16#15;2;9;15;21#16;2;9;16;27#17;2;11;18;23#18;2;9;21;27#19;2;10;23;32#20;2;8;22;43#21;2;10;27;34#22;2;9;25;44#23;2;14;15;16#24;2;14;17;20#25;2;14;18;25#26;2;15;18;17#27;2;16;19;22#28;2;15;21;27#29;2;15;22;31#30;2;17;27;28#31;2;16;26;33#32;2;16;28;39#33;2;13;27;46#34;2;17;30;52#35;2;18;32;30#36;2;15;32;39#37;2;16;32;45#38;2;17;33;52#39;2;18;39;40#40;2;20;21;21#41;2;20;23;26#42;2;19;23;32#43;2;22;25;28#44;2;22;28;33#45;2;21;29;38#46;2;22;34;32#47;2;20;32;40#48;2;20;35;46#49;2;20;34;54#50;2;22;36;57#51;2;24;41;37#52;2;23;39;47#53;2;23;41;59#54;2;22;42;66#55;2;22;42;69#56;2;22;46;58#57;2;23;44;66#58;2;27;23;24#59;2;25;25;23#60;2;27;27;28#61;2;25;29;32#62;2;26;30;38#63;2;27;32;28#64;2;29;32;34#65;2;28;33;39#66;2;27;34;46#67;2;29;36;54#68;2;25;39;36#69;2;27;41;40#70;2;28;39;47#71;2;27;39;52#72;2;25;40;58#73;2;25;43;65#74;2;25;43;70#75;2;28;44;40#76;2;28;47;53#77;2;29;46;56#78;2;29;44;66#79;2;26;44;71#80;2;30;49;76#81;2;29;50;57#82;2;30;55;63#83;2;29;61;68#84;2;31;33;29#85;2;33;34;34#86;2;33;36;38#87;2;36;37;36#88;2;35;38;40#89;2;34;40;45#90;2;33;41;51#91;2;34;44;42#92;2;34;46;45#93;2;35;45;51#94;2;34;49;58#95;2;34;48;67#96;2;34;49;70#97;2;36;52;50#98;2;35;50;58#99;2;34;54;63#100;2;35;52;73#101;2;35;53;78#102;2;34;59;65#103;2;34;58;70#104;2;34;64;72#105;2;38;36;35#106;2;37;40;35#107;2;39;40;40#108;2;39;42;45#109;2;37;43;51#110;2;40;44;40#111;2;41;45;46#112;2;41;46;52#113;2;41;48;58#114;2;39;49;66#115;2;40;51;48#116;2;40;52;51#117;2;41;52;60#118;2;39;53;66#119;2;40;53;72#120;2;38;54;77#121;2;41;57;54#122;2;40;58;66#123;2;39;60;70#124;2;38;58;76#125;2;40;63;71#126;2;40;65;81#127;2;41;69;72#128;2;41;71;83#129;2;43;80;91#130;2;45;42;41#131;2;43;43;44#132;2;44;45;42#133;2;46;46;47#134;2;45;48;51#135;2;49;52;43#136;2;47;51;49#137;2;47;51;53#138;2;47;52;58#139;2;46;54;63#140;2;44;56;71#141;2;46;57;55#142;2;47;60;58#143;2;48;57;65#144;2;48;63;60#145;2;46;66;71#146;2;45;66;76#147;2;46;69;73#148;2;46;71;76#149;2;47;72;83#150;2;46;77;86#151;2;46;79;91#152;2;45;80;94#153;2;49;81;94#154;2;52;49;50#155;2;51;50;49#156;2;52;53;53#157;2;52;54;58#158;2;51;55;63#159;2;54;56;54#160;2;53;57;60#161;2;53;59;64#162;2;54;61;70#163;2;52;63;60#164;2;53;67;65#165;2;55;63;71#166;2;55;65;75#167;2;54;69;62#168;2;54;69;66#169;2;51;70;76#170;2;52;78;86#171;2;52;78;90#172;2;57;55;54#173;2;58;58;53#174;2;58;59;60#175;2;58;61;63#176;2;59;63;60#177;2;60;63;65#178;2;59;65;71#179;2;60;67;76#180;2;58;70;65#181;2;61;70;72#182;2;61;69;77#183;2;63;62;62#184;2;63;65;52#185;2;65;64;60#186;2;64;65;66#187;2;63;67;70#188;2;63;68;76#189;2;67;69;62#190;2;65;72;65#191;2;66;70;72#192;2;66;71;77#193;2;66;74;82#194;2;66;76;66#195;2;64;76;69#196;2;67;75;79#197;2;67;76;85#198;2;67;79;89#199;2;68;81;91#200;2;69;68;69#201;2;70;71;67#202;2;70;71;72#203;2;70;73;77#204;2;69;74;82#205;2;70;76;61#206;2;71;76;65#207;2;74;77;70#208;2;72;76;79#209;2;72;78;85#210;2;71;79;89#211;2;72;80;94#212;2;73;81;85#213;2;72;82;91#214;2;73;83;94#215;2;76;74;72#216;2;76;77;65#217;2;77;77;71#218;2;77;78;79#219;2;76;80;83#220;2;75;80;89#221;2;80;82;80#222;2;78;82;85#223;2;78;85;91#224;2;78;86;95#225;2;78;89;87#226;2;80;88;92#227;2;80;88;96#228;2;82;81;73#229;2;82;80;78#230;2;83;82;80#231;2;83;84;84#232;2;83;86;89#233;2;82;87;94#234;2;87;87;87#235;2;84;89;91#236;2;84;90;96#237;2;86;95;97#238;2;90;81;76#239;2;87;85;78#240;2;89;85;84#241;2;89;88;78#242;2;90;88;85#243;2;90;90;90#244;2;89;92;96#245;2;93;94;93#246;2;91;95;98#247;2;97;84;80#248;2;97;86;83#249;2;97;89;85#250;2;97;91;90#251;2;94;93;95#252;2;96;94;86#253;2;99;95;92#254;2;97;98;98#0!192?---#40!122?G?O$#59!124?G$#60!122?O$#85!125?_$#87!120?O$#107!123?G$#110!122?C$#131!120?G$#133!120?C??A$#135!125?O$#137!123?C$#138!124?C$#155!122?A?_$#161!123?O$#175!120?_$#177!119?_$#209!123?_$#222!121?g$#225!122?_$#233!121?O$#250!121?C-#24!125?@$#28!116?_$#40!60?O!56?G$#41!61?_$#44!126?C$#59!127?_$#60!54?G?C??G!66?G$#61!118?A$#64!55?G!60?O$#84!58?C$#86!127?O$#87!118?C$#88!119?@$#89!117?C$#105!118?@$#106!126?A$#107!125?A$#134!117?O$#137!54?O$#143!124?_$#154!54?AC$#157!126?O$#160!55?Q$#172!53?O??G$#173!57?A!69?G$#177!57?G??_!63?O$#181!119?A$#183!56?A$#188!58?GO!65?C$#193!124?G$#203!53?__$#209!57?O!65?C$#210!117?_G???G$#211!119?G???O$#212!121?A_G$#213!119?OOO$#214!118?o??GA$#219!121?@$#220!55?_O!63?@_?@$#222!58?_$#223!57?_!61?CG!5?_$#224!56?_!62?_C?OA@$#225!124?C$#226!121?C?_$#227!120?_$#228!54?C$#232!122?D$#233!58?O!61?A$#234!57?C$#235!59?_!64?A$#236!125?W$#237!125?_-#26!113?_?A$#28!62?@$#30!63?A$#40!114?G!14?O$#42!128?C$#43!114?C$#44!67?O$#58!53?o$#60!53?G!12?G!61?A$#64!53?C$#65!64?C$#84!115?@$#85!65?C!47?O$#88!53?B$#89!125?_$#92!68?_$#105!63?@$#107!69?_!59?_$#112!124?@O$#113!116?@$#117!62?_!62?G$#131!127?@$#134!64?A$#136!129?C$#137!129?G$#138!114?OC!8?A$#154!68?O$#155!128?@?_$#161!125?C$#162!124?C$#174!67?G$#178!65?G$#183!128?G$#196!61?@$#197!123?Line truncated
|
[?25l[?80l[?8452lP0;1;0q"1;1;144;165#0;2;3;4;4#1;2;5;7;9#2;2;5;9;15#3;2;4;9;20#4;2;5;14;21#5;2;3;18;25#6;2;4;20;29#7;2;8;9;10#8;2;8;10;13#9;2;10;13;16#10;2;9;15;20#11;2;10;17;26#12;2;11;19;23#13;2;10;21;27#14;2;10;21;31#15;2;14;15;16#16;2;14;17;20#17;2;13;18;26#18;2;12;19;17#19;2;15;19;22#20;2;15;21;27#21;2;14;23;32#22;2;13;24;38#23;2;12;23;44#24;2;17;25;28#25;2;15;27;34#26;2;14;27;47#27;2;15;32;28#28;2;17;33;42#29;2;16;34;46#30;2;14;32;51#31;2;20;21;21#32;2;20;23;27#33;2;19;24;31#34;2;23;25;24#35;2;21;25;29#36;2;22;28;33#37;2;20;29;40#38;2;21;30;45#39;2;24;33;34#40;2;22;33;38#41;2;22;35;46#42;2;20;34;54#43;2;21;40;48#44;2;24;39;56#45;2;21;40;59#46;2;22;42;66#47;2;22;42;69#48;2;22;43;66#49;2;24;43;69#50;2;27;28;29#51;2;25;29;32#52;2;26;30;37#53;2;29;32;33#54;2;29;34;39#55;2;27;36;45#56;2;29;36;53#57;2;26;38;37#58;2;27;41;40#59;2;27;39;47#60;2;27;40;51#61;2;25;41;59#62;2;26;43;67#63;2;25;43;70#64;2;29;45;41#65;2;30;45;55#66;2;27;47;58#67;2;25;44;65#68;2;26;44;71#69;2;29;54;61#70;2;30;61;70#71;2;31;29;29#72;2;34;35;30#73;2;33;34;34#74;2;33;36;39#75;2;34;38;35#76;2;35;38;40#77;2;35;40;45#78;2;35;42;51#79;2;36;47;46#80;2;33;45;53#81;2;34;47;58#82;2;31;45;67#83;2;33;48;72#84;2;35;52;51#85;2;32;51;60#86;2;33;51;63#87;2;35;54;74#88;2;35;53;78#89;2;37;56;58#90;2;32;58;64#91;2;36;58;70#92;2;36;64;73#93;2;37;37;37#94;2;39;40;40#95;2;39;42;45#96;2;40;44;42#97;2;41;44;47#98;2;41;46;52#99;2;41;48;57#100;2;40;50;48#101;2;40;52;51#102;2;42;51;59#103;2;40;54;66#104;2;40;54;73#105;2;40;54;76#106;2;42;57;54#107;2;39;56;67#108;2;40;60;70#109;2;40;64;72#110;2;42;69;72#111;2;41;70;78#112;2;41;72;81#113;2;43;80;91#114;2;44;45;41#115;2;45;46;47#116;2;45;49;52#117;2;43;49;57#118;2;49;51;47#119;2;47;50;53#120;2;47;52;58#121;2;48;55;63#122;2;43;54;74#123;2;43;56;53#124;2;47;60;58#125;2;48;57;63#126;2;46;60;71#127;2;49;64;63#128;2;46;64;70#129;2;49;69;70#130;2;46;70;75#131;2;44;73;85#132;2;47;78;86#133;2;46;79;90#134;2;51;48;48#135;2;50;52;42#136;2;51;52;47#137;2;52;52;53#138;2;52;54;58#139;2;51;60;54#140;2;53;57;60#141;2;53;59;65#142;2;53;61;69#143;2;53;64;61#144;2;53;66;65#145;2;54;63;70#146;2;54;69;66#147;2;56;70;69#148;2;52;72;76#149;2;51;76;86#150;2;51;78;90#151;2;51;80;94#152;2;58;59;59#153;2;58;61;64#154;2;56;62;72#155;2;57;65;58#156;2;59;64;66#157;2;60;65;71#158;2;60;67;76#159;2;58;70;66#160;2;60;72;71#161;2;61;69;76#162;2;62;79;85#163;2;63;61;61#164;2;66;62;59#165;2;64;65;65#166;2;64;67;70#167;2;65;68;75#168;2;65;72;65#169;2;66;70;72#170;2;65;71;77#171;2;67;74;82#172;2;67;76;66#173;2;64;76;70#174;2;68;75;81#175;2;67;76;85#176;2;67;78;89#177;2;68;81;92#178;2;70;71;67#179;2;70;71;72#180;2;70;74;76#181;2;69;74;82#182;2;71;76;65#183;2;72;76;78#184;2;71;78;85#185;2;70;79;89#186;2;72;80;94#187;2;69;81;80#188;2;74;81;86#189;2;72;82;91#190;2;73;83;94#191;2;80;74;72#192;2;76;77;64#193;2;76;78;70#194;2;77;78;78#195;2;76;80;83#196;2;76;80;88#197;2;78;81;80#198;2;78;82;85#199;2;78;84;90#200;2;78;86;95#201;2;80;87;93#202;2;80;88;96#203;2;82;80;79#204;2;83;83;78#205;2;83;84;85#206;2;82;86;89#207;2;81;87;96#208;2;84;89;91#209;2;84;90;96#210;2;83;94;93#211;2;86;94;98#212;2;90;86;78#213;2;89;86;85#214;2;91;89;79#215;2;90;89;85#216;2;90;90;91#217;2;89;92;96#218;2;92;94;93#219;2;91;95;98#220;2;97;86;83#221;2;97;89;85#222;2;97;91;90#223;2;94;93;94#224;2;94;94;87#225;2;99;95;92#226;2;97;98;98#227;2;93;93;93#0!144?--#58!92?O$#71!93?O$#93!93?_$#94!93?G$#95!89?_$#96!90?O$#115!90?G$#116!92?G$#152!91?O$#156!90?_$#163!91?G$#169!92?_$#199!91?_-#33!87?G$#50!45?G$#51!46?O$#52!47?_!38?_!7?A$#53!94?@$#54!96?_$#71!86?O$#73!41?C!46?A$#74!44?C!50?G$#75!48?_$#77!87?O?@$#94!95?C$#95!40?C$#96!88?C!6?O$#115!39?_??C$#119!42?A$#123!94?C$#125!93?_$#136!43?A$#139!40?G$#140!40?_$#142!93?O$#147!93?G$#157!40?O$#161!41?G$#163!41?A$#171!89?A$#176!88?G$#179!93?@$#181!45?O!46?C$#183!95?_$#184!42?G$#185!91?O$#186!42?O!46?S?_$#187!87?_$#188!41?_!48?A?_$#189!43?_!44?_?w$#190!42?_?O$#195!44?G$#196!41?O!46?O??@O$#197!43?C$#198!43?G??_$#199!44?_!44?G?EJ$#200!43?O?_!43?_CG$#201!94?G$#206!90?@??C$#209!94?o$#211!93?A-#34!84?G$#53!54?O!28?_$#71!85?A$#72!39?i!44?C!11?@$#73!39?O!11?C?G?_!41?C$#74!39?C$#77!48?@?A!33?O!12?A$#78!85?C$#79!86?@$#80!94?_$#93!39?@!58?O$#94!49?@!48?_$#95!52?G!44?G$#96!52?C$#98!94?W$#117!40?_$#120!48?_$#121!47?O$#125!47?G!45?@$#127!46?C$#134!56?_$#137!53?O$#139!96?A$#140!40?P!53?C$#141!40?A$#153!40?G$#156!40?C$#161!94?A??O$#165!49?A$#167!93?A$#171!85?G$#173!84?_$#175!85?O$#176!87?O?O?_C$#177!41?O!46?U@?K_$#184!87?a!5?C$#185!43?A?C!44?O?W$#186!41?c@@KO!40?C?@gL?AO$#187!50?C$#188!86?GG??_O$#189!41?G?oA?g!40?CGEA@$#190!41?BSG`?O!41?_???@$#194!54?_$#195!86?A!6?_$#196!42?I?O!41?o!4?A?G$#199!45?g@_G!36?_?@!6?@?G$#200!42?_C?BAA!47?I$#201!48?OOG!44?__$#202!47?C???O!43?C$#206!95?OC_$#207!49?GOG!43?@$#208!48?E??_$#209!47?@?C_?_!43?O$#211!49?_??O$#226!53?_-#32!100?_$#33!83?@$#34!82?C$#35!56?@!5?_$#52!91?O$#53!60?G$#64!40?_$#71!82?A$#72!61?O!38?O$#73!99?E$#74!89?C!9?@$#75!59?C!21?G!6?A!11?G$#76!39?@!23?_!26?G$#77!95?O$#78!40?O!46?@!7?G$#94!49?_G!7?A$#95!82?G!10?G$#96!Line truncated
|
||||||
|
[?25h
|
||||||
@@ -1 +1,2 @@
|
|||||||
[?25l[?80l[?8452lP0;1;0q"1;1;224;238#0;2;3;3;4#1;2;3;5;7#2;2;1;4;17#3;2;5;5;5#4;2;4;7;9#5;2;4;9;15#6;2;3;9;19#7;2;4;13;16#8;2;4;14;21#9;2;5;18;25#10;2;4;20;28#11;2;3;21;40#12;2;8;9;10#13;2;8;10;13#14;2;8;10;19#15;2;10;13;15#16;2;9;15;20#17;2;10;17;26#18;2;11;18;23#19;2;9;20;27#20;2;10;21;32#21;2;9;22;43#22;2;10;25;28#23;2;9;25;34#24;2;10;26;45#25;2;14;15;16#26;2;14;17;20#27;2;14;18;25#28;2;13;19;17#29;2;16;20;22#30;2;15;21;27#31;2;15;22;31#32;2;18;24;30#33;2;16;26;33#34;2;16;29;40#35;2;14;27;45#36;2;18;31;29#37;2;18;34;30#38;2;16;32;40#39;2;16;33;46#40;2;18;32;52#41;2;16;40;47#42;2;17;39;56#43;2;19;16;16#44;2;20;21;22#45;2;20;23;27#46;2;23;26;23#47;2;22;25;29#48;2;22;28;33#49;2;21;29;38#50;2;21;34;33#51;2;21;32;40#52;2;21;34;45#53;2;23;37;56#54;2;19;38;41#55;2;22;38;47#56;2;23;40;60#57;2;22;42;66#58;2;23;43;69#59;2;23;43;50#60;2;22;43;66#61;2;25;23;21#62;2;26;27;23#63;2;27;27;28#64;2;25;29;32#65;2;26;30;38#66;2;31;33;30#67;2;29;32;34#68;2;28;33;39#69;2;28;35;45#70;2;26;38;36#71;2;28;41;39#72;2;29;39;46#73;2;27;40;52#74;2;27;40;58#75;2;26;42;64#76;2;28;44;41#77;2;28;46;54#78;2;28;47;58#79;2;27;45;65#80;2;26;44;70#81;2;30;49;76#82;2;29;54;58#83;2;30;51;72#84;2;29;61;69#85;2;32;29;28#86;2;33;34;34#87;2;34;36;38#88;2;31;36;43#89;2;34;38;35#90;2;34;38;41#91;2;34;40;46#92;2;34;41;51#93;2;31;46;43#94;2;34;46;46#95;2;35;45;52#96;2;33;48;60#97;2;34;46;65#98;2;34;48;72#99;2;35;51;49#100;2;34;53;62#101;2;35;54;73#102;2;34;54;78#103;2;33;58;68#104;2;36;64;72#105;2;34;66;76#106;2;37;37;36#107;2;39;40;40#108;2;40;42;45#109;2;37;43;50#110;2;40;45;41#111;2;40;44;47#112;2;41;46;52#113;2;39;47;57#114;2;39;49;65#115;2;40;51;48#116;2;40;52;51#117;2;42;51;58#118;2;39;52;66#119;2;40;54;72#120;2;39;54;77#121;2;41;56;56#122;2;40;58;66#123;2;39;60;70#124;2;37;57;75#125;2;40;65;72#126;2;39;64;79#127;2;41;67;83#128;2;42;70;73#129;2;41;72;83#130;2;43;80;91#131;2;43;43;43#132;2;46;46;47#133;2;45;48;51#134;2;46;52;47#135;2;47;51;52#136;2;47;52;58#137;2;47;54;63#138;2;44;54;72#139;2;46;57;54#140;2;47;59;58#141;2;48;58;65#142;2;48;62;59#143;2;45;63;65#144;2;45;65;74#145;2;47;64;82#146;2;46;69;72#147;2;46;71;76#148;2;44;74;85#149;2;47;78;85#150;2;46;79;91#151;2;46;80;93#152;2;50;47;44#153;2;51;53;41#154;2;51;51;48#155;2;52;52;53#156;2;52;54;58#157;2;51;56;63#158;2;51;58;53#159;2;53;57;59#160;2;53;59;64#161;2;53;61;70#162;2;52;64;61#163;2;53;67;65#164;2;52;65;71#165;2;54;69;66#166;2;50;73;82#167;2;52;76;86#168;2;52;78;90#169;2;52;80;94#170;2;51;82;90#171;2;56;54;52#172;2;58;58;55#173;2;58;59;60#174;2;58;61;64#175;2;61;62;56#176;2;58;64;59#177;2;60;64;65#178;2;59;65;70#179;2;59;66;76#180;2;56;70;62#181;2;58;70;66#182;2;59;71;69#183;2;61;69;76#184;2;60;78;84#185;2;67;61;59#186;2;63;64;61#187;2;64;65;65#188;2;64;67;70#189;2;69;70;61#190;2;64;72;65#191;2;66;69;72#192;2;65;71;77#193;2;66;73;82#194;2;68;75;62#195;2;66;76;66#196;2;63;76;69#197;2;67;76;79#198;2;67;76;85#199;2;67;79;89#200;2;68;81;92#201;2;69;67;65#202;2;70;71;67#203;2;70;72;72#204;2;70;74;77#205;2;69;74;81#206;2;71;76;65#207;2;73;76;71#208;2;72;76;78#209;2;72;78;85#210;2;70;79;89#211;2;72;80;94#212;2;73;82;85#213;2;72;82;91#214;2;73;83;94#215;2;76;73;72#216;2;80;74;75#217;2;76;77;65#218;2;77;77;72#219;2;77;78;79#220;2;76;80;83#221;2;76;80;88#222;2;82;83;79#223;2;78;82;85#224;2;78;84;91#225;2;78;86;95#226;2;80;87;92#227;2;80;88;96#228;2;82;80;80#229;2;84;83;73#230;2;83;84;85#231;2;83;86;89#232;2;86;87;87#233;2;84;89;91#234;2;84;90;96#235;2;82;94;92#236;2;86;94;98#237;2;87;79;74#238;2;91;84;80#239;2;89;85;84#240;2;89;88;80#241;2;91;89;85#242;2;90;90;91#243;2;89;92;96#244;2;92;94;92#245;2;91;95;98#246;2;96;85;80#247;2;97;86;83#248;2;94;87;87#249;2;97;89;85#250;2;97;91;90#251;2;94;92;94#252;2;98;95;87#253;2;99;95;92#254;2;96;98;98#0!224?---#155!144?_$#175!145?_$#203!141?__$#237!143?_-#15!143?A$#16!144?@$#25!145?C$#26!146?O$#28!143?C$#44!145?A_$#47!138?_$#67!140?C$#87!145?G$#89!140?A$#91!139?O$#106!65?_$#107!144?A$#110!145?@$#131!143?@$#132!138?O!7?K$#133!147?_$#154!139?C??@$#155!140?@$#156!142?A$#163!140?G$#173!139?G$#188!139?_$#191!145?O$#193!143?G$#201!141?B$#204!64?_!77?C$#211!142?_$#212!140?__??_$#214!141?O$#216!144?C$#219!141?C$#221!140?O$#222!66?_$#223!141?G$#224!142?O_$#226!144?O$#230!143?O$#231!142?G$#235!144?G_-#14!136?G$#16!135?_$#25!147?A$#30!64?C!82?@$#32!71?O$#43!137?A$#44!64?A!83?O$#45!68?A?G$#48!135?O$#61!72?_$#63!69?C!78?G$#64!149?_$#65!136?C$#66!65?@!6?O$#67!73?_$#87!137?@$#89!138?@$#90!70?C!76?C$#106!66?A!4?G$#107!135?G$#110!68?@$#111!134?_!10?_??A$#112!62?_$#121!145?O$#131!63?C@$#132!136?A$#133!66?C$#135!136?O$#136!148?_$#139!137?C$#152!61?_!7?A$#154!67?@$#157!144?C$#158!63?A!82?@?C$#161!144?A$#171!149?O$#173!63?G$#179!144?G$#182!145?G$#187!62?W??A$#193!138?A$#199!142?O$#203!64?G?@$#204!147?G$#205!63?O!6?O$#209!65?O$#210!66?O!70?G?G_A??O$#211!138?G?C??O$#212!64?O!4?G!73?_$#213!137?o?S?gG$#214!67?o!71?_GO$#220!64?_$#221!65?g_?O_!66?_!5?c@$#223!65?C??K??_!74?A$#224!63?_??G!71?OBA?AM?C$#225!68?_?_!67?_!5?`?O$#226!138?C?O?@$#227!140?@C$#230!67?M$#231!69?O!71?@$#234!Line truncated
|
[?25l[?80l[?8452lP0;1;0q"1;1;168;180#0;2;2;4;4#1;2;3;4;7#2;2;5;6;5#3;2;4;7;9#4;2;5;9;14#5;2;3;10;21#6;2;3;13;11#7;2;5;12;16#8;2;4;15;21#9;2;4;19;27#10;2;8;9;10#11;2;8;10;14#12;2;9;11;20#13;2;10;13;15#14;2;9;15;21#15;2;9;16;26#16;2;11;19;22#17;2;10;20;27#18;2;10;23;32#19;2;10;27;28#20;2;11;27;43#21;2;10;28;48#22;2;12;12;12#23;2;14;15;16#24;2;14;17;20#25;2;13;18;25#26;2;13;18;17#27;2;15;19;22#28;2;15;21;27#29;2;14;22;32#30;2;15;23;37#31;2;17;25;29#32;2;17;25;32#33;2;15;28;40#34;2;14;28;47#35;2;16;33;39#36;2;18;31;45#37;2;17;32;52#38;2;20;21;22#39;2;20;23;27#40;2;18;24;32#41;2;24;25;24#42;2;22;25;29#43;2;22;28;33#44;2;21;29;39#45;2;20;30;48#46;2;22;34;32#47;2;21;32;40#48;2;22;34;46#49;2;21;34;53#50;2;20;34;56#51;2;22;39;35#52;2;21;39;47#53;2;23;40;50#54;2;23;40;59#55;2;22;42;66#56;2;22;42;70#57;2;24;46;48#58;2;22;44;65#59;2;23;43;69#60;2;28;25;24#61;2;27;28;28#62;2;25;29;32#63;2;25;30;39#64;2;28;32;30#65;2;29;32;34#66;2;29;33;39#67;2;26;34;45#68;2;29;38;35#69;2;28;41;40#70;2;29;40;47#71;2;30;42;50#72;2;26;40;58#73;2;25;42;66#74;2;25;43;70#75;2;27;43;41#76;2;27;45;53#77;2;30;49;68#78;2;26;44;71#79;2;29;50;74#80;2;30;59;65#81;2;29;61;70#82;2;31;30;30#83;2;31;34;30#84;2;33;34;34#85;2;33;36;39#86;2;32;36;44#87;2;36;38;35#88;2;35;38;40#89;2;34;40;45#90;2;36;43;50#91;2;35;43;60#92;2;32;44;43#93;2;36;46;48#94;2;36;44;54#95;2;32;46;57#96;2;36;48;69#97;2;31;49;76#98;2;36;52;50#99;2;33;52;59#100;2;34;55;64#101;2;36;53;74#102;2;34;53;77#103;2;36;58;67#104;2;34;58;71#105;2;36;60;75#106;2;35;64;72#107;2;37;36;35#108;2;38;39;34#109;2;40;40;41#110;2;39;42;45#111;2;41;45;41#112;2;41;45;47#113;2;40;46;52#114;2;41;49;58#115;2;39;51;49#116;2;40;52;51#117;2;41;52;59#118;2;39;54;64#119;2;40;53;72#120;2;38;54;78#121;2;40;56;55#122;2;42;56;56#123;2;41;58;65#124;2;39;60;71#125;2;42;65;68#126;2;40;64;71#127;2;40;66;82#128;2;42;69;72#129;2;39;71;80#130;2;41;72;83#131;2;43;80;90#132;2;43;43;43#133;2;45;47;47#134;2;45;48;51#135;2;44;49;56#136;2;49;49;48#137;2;47;51;53#138;2;47;52;58#139;2;47;54;63#140;2;44;54;74#141;2;45;58;54#142;2;46;58;58#143;2;48;56;66#144;2;44;61;70#145;2;48;63;59#146;2;49;65;62#147;2;45;63;70#148;2;45;64;76#149;2;47;69;72#150;2;46;71;76#151;2;49;69;87#152;2;47;78;86#153;2;46;79;91#154;2;44;81;94#155;2;47;81;93#156;2;50;44;42#157;2;52;50;49#158;2;52;52;53#159;2;52;55;57#160;2;53;57;60#161;2;53;60;64#162;2;53;60;69#163;2;52;64;60#164;2;53;67;65#165;2;55;63;70#166;2;56;65;75#167;2;54;69;67#168;2;51;71;76#169;2;52;76;85#170;2;51;79;92#171;2;50;81;92#172;2;56;56;54#173;2;58;61;54#174;2;58;59;60#175;2;58;61;64#176;2;57;62;69#177;2;57;62;53#178;2;61;63;60#179;2;59;64;65#180;2;60;65;71#181;2;59;67;76#182;2;60;70;62#183;2;58;70;65#184;2;59;70;70#185;2;61;69;77#186;2;62;61;60#187;2;65;62;63#188;2;64;64;61#189;2;64;65;66#190;2;64;67;70#191;2;63;68;75#192;2;62;70;61#193;2;65;72;64#194;2;66;70;72#195;2;66;72;78#196;2;66;73;82#197;2;66;76;67#198;2;64;75;70#199;2;67;75;79#200;2;67;76;85#201;2;67;78;89#202;2;70;67;67#203;2;71;72;66#204;2;71;71;72#205;2;70;73;77#206;2;69;74;81#207;2;72;76;61#208;2;71;77;65#209;2;74;76;72#210;2;72;76;78#211;2;72;78;85#212;2;70;79;89#213;2;72;80;94#214;2;73;83;85#215;2;72;82;92#216;2;73;83;94#217;2;75;73;73#218;2;76;78;65#219;2;77;77;71#220;2;77;78;79#221;2;76;80;83#222;2;76;80;88#223;2;80;81;81#224;2;78;82;85#225;2;78;84;91#226;2;78;86;95#227;2;76;88;87#228;2;80;88;92#229;2;80;88;96#230;2;82;80;80#231;2;85;84;74#232;2;84;83;78#233;2;83;84;85#234;2;82;86;90#235;2;81;87;94#236;2;86;88;86#237;2;84;89;91#238;2;84;90;96#239;2;84;94;93#240;2;86;94;97#241;2;91;84;80#242;2;90;86;84#243;2;91;89;85#244;2;90;90;90#245;2;89;92;96#246;2;91;95;98#247;2;96;85;81#248;2;97;86;83#249;2;98;87;88#250;2;97;89;85#251;2;97;91;90#252;2;94;92;95#253;2;99;95;92#254;2;97;98;98#0!168?--#178!108?_$#217!106?__-#22!107?A@$#27!110?_$#42!109?C$#61!51?_!55?@$#66!103?o$#68!102?_$#85!49?_!59?G$#108!110?G$#109!104?G$#110!110?O$#132!109?@$#133!105?A$#136!48?_$#138!108?A$#157!105?@$#158!50?O!53?C!4?A$#160!49?O$#174!105?C$#184!107?C$#186!48?O$#190!47?_$#191!104?O!4?O$#205!108?_$#214!106?G$#216!105?G$#217!50?_$#224!107?GC$#225!104?_OO_G$#226!106?_$#227!105?_$#228!107?O$#229!108?O$#234!106?C$#238!106?A??_$#244!106?@-#39!55?G!44?O$#42!101?C@$#43!111?A$#61!52?@A!58?O$#62!112?G$#64!54?C$#65!56?O$#66!48?@$#82!101?A$#83!99?_$#87!58?_$#89!101?G$#107!100?G$#109!57?O$#110!102?A!8?C$#111!46?_!9?G!56?_$#114!109?O$#115!100?_$#132!112?C$#133!46?C$#134!110?@$#136!59?_!51?@$#137!46?O$#138!109?g$#160!46?G$#165!108?A$#172!47?@$#174!57?_!54?_$#181!108?C$#184!47?A$#191!108?@C$#194!50?@$#195!49?@???C$#199!103?@$#200!102?G$#201!102?C?_$#204!111?G$#205!52?A$#211!101?_!6?G$#212!48?GO!57?a$#213!49?GA!51?_?Ac$#215!50?CO!51?wOOCO$#216!49?cWGo!49?OCGApG_$#220!51?@!49?O$#221!47?GAA$#222!47?OC?_e!54?I@$#224!53?G!54?O$#225!47?_O???KOG!49?D??C$#226!48?_!4?_O!50?@$#227!103?A?G!4?_$#228!47?C!6?_!55?C$#229!110?O$#234!55?O!54?A_$#235!111?O$#238!55?_!54?G$#240!109?B$#245!56?_-#25!99?@$#39!98?C$#42!97?_$#46!110?_$#60!63?G$#64!64?O!33?A$#65!59?@$#66!115?_$#68!97?G$#70!100Line truncated
|
||||||
|
[?25h
|
||||||
@@ -1 +1,2 @@
|
|||||||
[?25l[?80l[?8452lP0;1;0q"1;1;256;272#0;2;2;3;4#1;2;3;4;7#2;2;2;5;14#3;2;5;5;5#4;2;4;7;9#5;2;4;9;14#6;2;3;9;20#7;2;4;13;15#8;2;4;14;20#9;2;5;17;26#10;2;4;14;33#11;2;3;19;38#12;2;4;20;30#13;2;7;9;10#14;2;8;10;14#15;2;8;11;19#16;2;10;13;10#17;2;10;13;16#18;2;9;15;21#19;2;8;16;27#20;2;9;16;33#21;2;12;18;14#22;2;11;19;23#23;2;10;21;27#24;2;10;22;32#25;2;9;21;40#26;2;9;24;43#27;2;10;27;28#28;2;10;26;35#29;2;13;28;46#30;2;13;12;12#31;2;14;15;16#32;2;14;17;20#33;2;13;17;26#34;2;16;19;18#35;2;16;19;22#36;2;15;21;27#37;2;14;22;31#38;2;17;26;29#39;2;16;26;33#40;2;16;28;39#41;2;17;32;28#42;2;14;31;36#43;2;15;32;41#44;2;20;34;45#45;2;14;34;52#46;2;18;38;44#47;2;19;19;16#48;2;20;21;22#49;2;20;23;27#50;2;19;23;31#51;2;23;25;22#52;2;22;25;29#53;2;22;28;33#54;2;21;29;39#55;2;25;30;41#56;2;23;35;33#57;2;21;32;40#58;2;21;35;55#59;2;23;40;36#60;2;21;40;45#61;2;23;38;54#62;2;22;40;60#63;2;22;43;66#64;2;23;43;70#65;2;26;44;54#66;2;25;22;22#67;2;27;27;28#68;2;25;29;32#69;2;30;32;29#70;2;28;32;34#71;2;28;34;39#72;2;27;35;45#73;2;27;37;36#74;2;27;40;40#75;2;29;38;47#76;2;26;41;53#77;2;26;41;59#78;2;26;43;65#79;2;29;44;41#80;2;31;46;43#81;2;29;45;58#82;2;26;44;70#83;2;30;48;75#84;2;28;51;54#85;2;28;53;60#86;2;29;61;69#87;2;30;30;30#88;2;33;34;34#89;2;33;36;38#90;2;32;36;43#91;2;36;38;34#92;2;35;38;40#93;2;34;40;45#94;2;34;41;52#95;2;34;43;59#96;2;36;45;47#97;2;34;46;53#98;2;35;48;57#99;2;34;47;65#100;2;34;49;72#101;2;38;50;48#102;2;35;51;52#103;2;34;53;63#104;2;35;53;72#105;2;34;53;78#106;2;34;58;65#107;2;35;58;71#108;2;35;64;71#109;2;39;36;34#110;2;38;38;37#111;2;39;40;41#112;2;40;42;45#113;2;38;43;53#114;2;43;43;42#115;2;41;45;47#116;2;41;47;52#117;2;40;48;57#118;2;38;48;68#119;2;39;52;51#120;2;39;53;59#121;2;40;52;65#122;2;40;54;72#123;2;38;54;77#124;2;42;58;55#125;2;39;58;65#126;2;40;59;70#127;2;43;60;79#128;2;39;64;71#129;2;39;64;78#130;2;41;66;82#131;2;41;69;72#132;2;40;72;79#133;2;44;72;84#134;2;43;76;86#135;2;42;80;90#136;2;44;45;40#137;2;45;46;47#138;2;45;49;51#139;2;43;49;57#140;2;46;51;48#141;2;47;51;53#142;2;47;52;58#143;2;47;54;63#144;2;44;54;72#145;2;46;58;56#146;2;47;58;65#147;2;47;59;70#148;2;49;63;60#149;2;46;65;65#150;2;46;66;73#151;2;45;69;73#152;2;47;71;76#153;2;49;73;84#154;2;47;78;85#155;2;46;80;91#156;2;52;48;47#157;2;50;50;49#158;2;52;52;53#159;2;51;54;58#160;2;51;55;63#161;2;54;59;56#162;2;53;57;59#163;2;53;59;64#164;2;52;61;71#165;2;54;64;61#166;2;53;67;65#167;2;55;63;71#168;2;54;69;66#169;2;51;71;76#170;2;51;77;85#171;2;52;78;90#172;2;53;81;94#173;2;56;55;55#174;2;58;59;59#175;2;58;61;64#176;2;60;65;58#177;2;60;64;65#178;2;60;65;71#179;2;59;67;76#180;2;58;70;65#181;2;61;70;70#182;2;61;69;77#183;2;61;75;71#184;2;58;76;81#185;2;56;76;93#186;2;63;61;61#187;2;65;64;61#188;2;65;65;66#189;2;64;67;70#190;2;69;74;61#191;2;65;72;65#192;2;66;70;72#193;2;66;72;77#194;2;65;73;83#195;2;66;76;66#196;2;64;76;70#197;2;68;74;81#198;2;67;76;85#199;2;67;79;89#200;2;68;82;89#201;2;69;68;67#202;2;70;71;67#203;2;70;71;72#204;2;70;73;77#205;2;72;77;61#206;2;71;77;65#207;2;72;76;70#208;2;72;76;78#209;2;72;78;85#210;2;70;79;89#211;2;72;80;94#212;2;73;81;85#213;2;72;82;91#214;2;73;83;94#215;2;76;74;73#216;2;76;77;65#217;2;76;78;71#218;2;77;78;78#219;2;76;80;83#220;2;76;80;88#221;2;82;81;73#222;2;78;82;85#223;2;78;84;90#224;2;78;86;95#225;2;76;87;86#226;2;80;87;93#227;2;80;88;96#228;2;84;77;72#229;2;82;80;79#230;2;83;82;80#231;2;83;84;85#232;2;83;86;90#233;2;86;87;80#234;2;87;87;87#235;2;84;89;91#236;2;84;90;96#237;2;83;94;93#238;2;87;94;98#239;2;87;80;80#240;2;90;84;80#241;2;89;85;84#242;2;90;89;79#243;2;91;89;85#244;2;90;90;91#245;2;89;92;96#246;2;93;93;94#247;2;91;95;98#248;2;96;84;80#249;2;97;86;84#250;2;97;89;85#251;2;97;91;90#252;2;97;94;86#253;2;99;95;92#254;2;96;98;98#0!255??----#13!163?_$#14!165?G$#16!165?O$#30!163?O$#34!163?G$#70!166?_$#88!165?_$#96!161?O$#111!164?_$#112!160?_???O$#137!160?O$#157!167?_$#158!161?_!4?O$#173!164?G$#174!166?G$#217!165?C$#231!162?SC$#234!162?g?C$#241!161?G-#4!168?_$#13!167?G$#16!73?_$#31!157?_!8?@$#32!158?G$#34!166?AC$#35!75?_$#67!74?G$#68!168?O$#74!158?O$#88!167?O$#89!157?O??@$#109!78?_$#111!158?C$#112!163?@$#115!77?_!81?C$#116!164?@$#137!74?O$#138!77?O!89?A$#141!166?C$#145!159?A$#157!75?O!81?G$#158!156?_$#159!73?O!93?@$#173!169?_$#174!159?@$#179!159?G$#186!168?G$#188!160?A$#189!165?@$#192!167?_$#198!158?_$#203!161?@$#204!165?_$#206!72?O$#211!163?O$#212!166?G$#214!161?_$#218!75?G!88?A$#220!159?OcCCI$#222!73?G!86?GAG?C$#223!159?_??O_$#224!160?O???_$#225!161?GA?G$#226!165?Q$#231!74?_?_$#232!161?O_COG$#236!165?C$#238!166?_$#239!72?_$#244!162?@$#245!166?O$#251!76?O-#13!73?@$#16!84?_$#17!154?O!15?O$#18!155?C$#22!155?G$#30!169?C$#32!83?O$#35!154?_$#36!168?@$#48!156?A$#49!82?G!86?A$#51!81?C$#52!170?_$#68!72?@A!6?C!75?@$#71!79?A$#87!80?A$#88!79?@?GO$#90!78?@$#91!170?G$#93!169?G$#96!166?_$#110!153?_$#112!154?GA$#114!71?_!12?O_!67?O$#115!75?@$#119!156?C$#137!157?@!11?@$#140!71?P$#141!71?AA$#142!155?O$#143!72?C!92?C$#148!165?@$#157!70?O$#158!170?C_$#159!171?O$#160!83?_!81?A$#161!76?@!91?A$#162!76?A!Line truncated
|
[?25l[?80l[?8452lP0;1;0q"1;1;192;210#0;2;2;3;4#1;2;2;4;10#2;2;2;5;12#3;2;4;6;5#4;2;4;7;9#5;2;4;9;15#6;2;3;9;19#7;2;4;14;20#8;2;5;15;25#9;2;5;20;28#10;2;6;24;43#11;2;8;9;10#12;2;9;11;13#13;2;6;11;21#14;2;10;14;16#15;2;9;15;21#16;2;9;16;27#17;2;11;18;23#18;2;9;21;27#19;2;10;23;32#20;2;8;22;43#21;2;10;27;34#22;2;9;25;44#23;2;14;15;16#24;2;14;17;20#25;2;14;18;25#26;2;15;18;17#27;2;16;19;22#28;2;15;21;27#29;2;15;22;31#30;2;17;27;28#31;2;16;26;33#32;2;16;28;39#33;2;13;27;46#34;2;17;30;52#35;2;18;32;30#36;2;15;32;39#37;2;16;32;45#38;2;17;33;52#39;2;18;39;40#40;2;20;21;21#41;2;20;23;26#42;2;19;23;32#43;2;22;25;28#44;2;22;28;33#45;2;21;29;38#46;2;22;34;32#47;2;20;32;40#48;2;20;35;46#49;2;20;34;54#50;2;22;36;57#51;2;24;41;37#52;2;23;39;47#53;2;23;41;59#54;2;22;42;66#55;2;22;42;69#56;2;22;46;58#57;2;23;44;66#58;2;27;23;24#59;2;25;25;23#60;2;27;27;28#61;2;25;29;32#62;2;26;30;38#63;2;27;32;28#64;2;29;32;34#65;2;28;33;39#66;2;27;34;46#67;2;29;36;54#68;2;25;39;36#69;2;27;41;40#70;2;28;39;47#71;2;27;39;52#72;2;25;40;58#73;2;25;43;65#74;2;25;43;70#75;2;28;44;40#76;2;28;47;53#77;2;29;46;56#78;2;29;44;66#79;2;26;44;71#80;2;30;49;76#81;2;29;50;57#82;2;30;55;63#83;2;29;61;68#84;2;31;33;29#85;2;33;34;34#86;2;33;36;38#87;2;36;37;36#88;2;35;38;40#89;2;34;40;45#90;2;33;41;51#91;2;34;44;42#92;2;34;46;45#93;2;35;45;51#94;2;34;49;58#95;2;34;48;67#96;2;34;49;70#97;2;36;52;50#98;2;35;50;58#99;2;34;54;63#100;2;35;52;73#101;2;35;53;78#102;2;34;59;65#103;2;34;58;70#104;2;34;64;72#105;2;38;36;35#106;2;37;40;35#107;2;39;40;40#108;2;39;42;45#109;2;37;43;51#110;2;40;44;40#111;2;41;45;46#112;2;41;46;52#113;2;41;48;58#114;2;39;49;66#115;2;40;51;48#116;2;40;52;51#117;2;41;52;60#118;2;39;53;66#119;2;40;53;72#120;2;38;54;77#121;2;41;57;54#122;2;40;58;66#123;2;39;60;70#124;2;38;58;76#125;2;40;63;71#126;2;40;65;81#127;2;41;69;72#128;2;41;71;83#129;2;43;80;91#130;2;45;42;41#131;2;43;43;44#132;2;44;45;42#133;2;46;46;47#134;2;45;48;51#135;2;49;52;43#136;2;47;51;49#137;2;47;51;53#138;2;47;52;58#139;2;46;54;63#140;2;44;56;71#141;2;46;57;55#142;2;47;60;58#143;2;48;57;65#144;2;48;63;60#145;2;46;66;71#146;2;45;66;76#147;2;46;69;73#148;2;46;71;76#149;2;47;72;83#150;2;46;77;86#151;2;46;79;91#152;2;45;80;94#153;2;49;81;94#154;2;52;49;50#155;2;51;50;49#156;2;52;53;53#157;2;52;54;58#158;2;51;55;63#159;2;54;56;54#160;2;53;57;60#161;2;53;59;64#162;2;54;61;70#163;2;52;63;60#164;2;53;67;65#165;2;55;63;71#166;2;55;65;75#167;2;54;69;62#168;2;54;69;66#169;2;51;70;76#170;2;52;78;86#171;2;52;78;90#172;2;57;55;54#173;2;58;58;53#174;2;58;59;60#175;2;58;61;63#176;2;59;63;60#177;2;60;63;65#178;2;59;65;71#179;2;60;67;76#180;2;58;70;65#181;2;61;70;72#182;2;61;69;77#183;2;63;62;62#184;2;63;65;52#185;2;65;64;60#186;2;64;65;66#187;2;63;67;70#188;2;63;68;76#189;2;67;69;62#190;2;65;72;65#191;2;66;70;72#192;2;66;71;77#193;2;66;74;82#194;2;66;76;66#195;2;64;76;69#196;2;67;75;79#197;2;67;76;85#198;2;67;79;89#199;2;68;81;91#200;2;69;68;69#201;2;70;71;67#202;2;70;71;72#203;2;70;73;77#204;2;69;74;82#205;2;70;76;61#206;2;71;76;65#207;2;74;77;70#208;2;72;76;79#209;2;72;78;85#210;2;71;79;89#211;2;72;80;94#212;2;73;81;85#213;2;72;82;91#214;2;73;83;94#215;2;76;74;72#216;2;76;77;65#217;2;77;77;71#218;2;77;78;79#219;2;76;80;83#220;2;75;80;89#221;2;80;82;80#222;2;78;82;85#223;2;78;85;91#224;2;78;86;95#225;2;78;89;87#226;2;80;88;92#227;2;80;88;96#228;2;82;81;73#229;2;82;80;78#230;2;83;82;80#231;2;83;84;84#232;2;83;86;89#233;2;82;87;94#234;2;87;87;87#235;2;84;89;91#236;2;84;90;96#237;2;86;95;97#238;2;90;81;76#239;2;87;85;78#240;2;89;85;84#241;2;89;88;78#242;2;90;88;85#243;2;90;90;90#244;2;89;92;96#245;2;93;94;93#246;2;91;95;98#247;2;97;84;80#248;2;97;86;83#249;2;97;89;85#250;2;97;91;90#251;2;94;93;95#252;2;96;94;86#253;2;99;95;92#254;2;97;98;98#0!192?---#40!122?G?O$#59!124?G$#60!122?O$#85!125?_$#87!120?O$#107!123?G$#110!122?C$#131!120?G$#133!120?C??A$#135!125?O$#137!123?C$#138!124?C$#155!122?A?_$#161!123?O$#175!120?_$#177!119?_$#209!123?_$#222!121?g$#225!122?_$#233!121?O$#250!121?C-#24!125?@$#28!116?_$#40!60?O!56?G$#41!61?_$#44!126?C$#59!127?_$#60!54?G?C??G!66?G$#61!118?A$#64!55?G!60?O$#84!58?C$#86!127?O$#87!118?C$#88!119?@$#89!117?C$#105!118?@$#106!126?A$#107!125?A$#134!117?O$#137!54?O$#143!124?_$#154!54?AC$#157!126?O$#160!55?Q$#172!53?O??G$#173!57?A!69?G$#177!57?G??_!63?O$#181!119?A$#183!56?A$#188!58?GO!65?C$#193!124?G$#203!53?__$#209!57?O!65?C$#210!117?_G???G$#211!119?G???O$#212!121?A_G$#213!119?OOO$#214!118?o??GA$#219!121?@$#220!55?_O!63?@_?@$#222!58?_$#223!57?_!61?CG!5?_$#224!56?_!62?_C?OA@$#225!124?C$#226!121?C?_$#227!120?_$#228!54?C$#232!122?D$#233!58?O!61?A$#234!57?C$#235!59?_!64?A$#236!125?W$#237!125?_-#26!113?_?A$#28!62?@$#30!63?A$#40!114?G!14?O$#42!128?C$#43!114?C$#44!67?O$#58!53?o$#60!53?G!12?G!61?A$#64!53?C$#65!64?C$#84!115?@$#85!65?C!47?O$#88!53?B$#89!125?_$#92!68?_$#105!63?@$#107!69?_!59?_$#112!124?@O$#113!116?@$#117!62?_!62?G$#131!127?@$#134!64?A$#136!129?C$#137!129?G$#138!114?OC!8?A$#154!68?O$#155!128?@?_$#161!125?C$#162!124?C$#174!67?G$#178!65?G$#183!128?G$#196!61?@$#197!123?Line truncated
|
||||||
|
[?25h
|
||||||
@@ -1 +1,2 @@
|
|||||||
[?25l[?80l[?8452lP0;1;0q"1;1;336;357#0;2;1;2;3#1;2;1;4;7#2;2;1;4;13#3;2;3;7;4#4;2;4;7;9#5;2;3;9;14#6;2;3;9;20#7;2;0;7;27#8;2;0;13;10#9;2;4;14;16#10;2;3;14;21#11;2;2;15;27#12;2;1;14;34#13;2;3;20;38#14;2;4;20;28#15;2;8;6;5#16;2;7;9;9#17;2;8;10;14#18;2;7;11;20#19;2;11;12;10#20;2;10;13;15#21;2;9;15;20#22;2;9;16;26#23;2;7;17;35#24;2;11;19;21#25;2;9;20;27#26;2;10;22;32#27;2;8;21;40#28;2;10;25;46#29;2;9;25;21#30;2;11;27;27#31;2;10;27;35#32;2;14;15;16#33;2;14;17;20#34;2;13;18;25#35;2;14;18;16#36;2;15;19;22#37;2;15;21;27#38;2;15;23;32#39;2;13;24;38#40;2;17;25;29#41;2;16;26;33#42;2;15;28;39#43;2;14;27;45#44;2;18;32;29#45;2;14;32;34#46;2;16;32;41#47;2;18;33;46#48;2;16;32;52#49;2;16;38;43#50;2;14;39;56#51;2;19;17;16#52;2;20;21;21#53;2;20;23;27#54;2;19;24;31#55;2;22;25;23#56;2;21;25;29#57;2;22;28;33#58;2;21;29;39#59;2;22;34;33#60;2;21;32;40#61;2;21;34;45#62;2;23;38;50#63;2;20;35;57#64;2;25;38;36#65;2;22;40;59#66;2;22;43;66#67;2;23;43;70#68;2;25;45;53#69;2;22;45;58#70;2;27;24;23#71;2;27;27;28#72;2;25;29;32#73;2;29;32;33#74;2;28;34;39#75;2;27;36;45#76;2;26;33;50#77;2;27;41;39#78;2;29;38;46#79;2;28;40;52#80;2;26;40;59#81;2;26;42;64#82;2;29;45;41#83;2;29;45;58#84;2;27;45;65#85;2;26;44;70#86;2;32;48;74#87;2;29;53;60#88;2;30;56;70#89;2;29;61;69#90;2;32;30;30#91;2;32;33;23#92;2;33;34;34#93;2;33;36;38#94;2;32;36;45#95;2;35;38;39#96;2;34;40;45#97;2;33;41;52#98;2;36;43;59#99;2;34;45;45#100;2;35;45;52#101;2;34;47;58#102;2;37;48;67#103;2;35;51;50#104;2;32;51;60#105;2;34;54;65#106;2;34;54;73#107;2;34;54;78#108;2;34;60;65#109;2;35;59;69#110;2;35;64;74#111;2;36;69;76#112;2;38;37;36#113;2;39;40;40#114;2;39;42;46#115;2;41;45;41#116;2;41;45;47#117;2;41;47;52#118;2;41;48;57#119;2;40;51;50#120;2;41;51;59#121;2;40;53;65#122;2;40;53;72#123;2;39;54;78#124;2;41;57;55#125;2;40;57;65#126;2;40;60;70#127;2;42;58;76#128;2;41;63;65#129;2;40;65;72#130;2;40;65;79#131;2;41;70;72#132;2;40;70;82#133;2;44;73;85#134;2;42;80;90#135;2;44;42;41#136;2;45;47;41#137;2;46;47;47#138;2;46;49;51#139;2;47;50;45#140;2;47;51;53#141;2;47;52;58#142;2;48;55;65#143;2;44;54;73#144;2;46;58;56#145;2;47;58;65#146;2;46;57;72#147;2;48;63;62#148;2;46;65;73#149;2;46;66;84#150;2;45;70;73#151;2;47;72;77#152;2;46;78;86#153;2;46;79;90#154;2;45;81;93#155;2;50;48;48#156;2;51;52;45#157;2;52;52;53#158;2;52;55;57#159;2;51;58;54#160;2;53;57;60#161;2;53;59;64#162;2;53;60;69#163;2;53;65;61#164;2;53;67;65#165;2;54;63;72#166;2;51;68;75#167;2;54;69;66#168;2;52;71;77#169;2;54;73;87#170;2;52;78;85#171;2;52;78;92#172;2;52;82;93#173;2;57;56;54#174;2;58;59;60#175;2;58;61;64#176;2;57;61;69#177;2;61;63;55#178;2;58;64;60#179;2;59;64;65#180;2;60;65;71#181;2;61;67;76#182;2;58;70;65#183;2;59;71;70#184;2;60;70;77#185;2;63;75;69#186;2;58;77;80#187;2;57;77;91#188;2;58;83;94#189;2;62;61;61#190;2;64;66;60#191;2;64;65;65#192;2;64;67;70#193;2;65;71;64#194;2;66;70;72#195;2;66;72;78#196;2;66;73;82#197;2;69;73;60#198;2;66;76;67#199;2;67;76;77#200;2;67;76;85#201;2;67;79;89#202;2;68;81;92#203;2;69;68;67#204;2;70;71;66#205;2;70;71;72#206;2;70;74;77#207;2;69;74;82#208;2;71;77;65#209;2;73;76;71#210;2;72;76;78#211;2;72;78;85#212;2;71;79;89#213;2;72;80;94#214;2;73;81;85#215;2;72;82;92#216;2;73;83;94#217;2;75;71;65#218;2;76;74;74#219;2;76;77;65#220;2;76;77;71#221;2;77;78;78#222;2;76;80;83#223;2;75;80;88#224;2;81;82;72#225;2;81;82;80#226;2;78;82;85#227;2;78;84;90#228;2;78;86;95#229;2;81;87;93#230;2;80;88;96#231;2;82;94;96#232;2;82;73;68#233;2;82;79;78#234;2;83;84;85#235;2;83;86;90#236;2;88;87;87#237;2;84;89;91#238;2;84;90;96#239;2;86;94;98#240;2;89;80;76#241;2;90;84;78#242;2;89;85;84#243;2;89;88;80#244;2;92;89;85#245;2;90;90;91#246;2;89;92;96#247;2;93;93;94#248;2;91;95;98#249;2;98;86;84#250;2;97;89;85#251;2;97;91;90#252;2;97;94;86#253;2;99;96;92#254;2;96;98;98#0!255?!81?-----#112!214?_$#114!216?_$#155!217?_$#193!211?_$#205!218?_$#209!217?O$#236!215?O$#237!212?_$#245!213?_$#247!213?OO?O$#251!215?_-#0!218?O$#1!210?O!5?@$#3!214?C??A$#4!214?A$#15!211?A??@??C$#16!211?C$#19!215?G?@$#20!215?C??_$#21!219?_$#32!218?G$#51!214?G$#55!218?C$#73!211?G!5?G$#90!216?A$#92!215?A$#113!215?O$#116!209?_$#156!211?@$#157!218?A$#178!210?@$#189!219?O$#191!220?_$#192!210?_$#194!211?O$#203!209?GG!4?@?O$#205!209?OC$#206!214?O$#210!210?A$#218!208?_$#222!212?O_!4?@$#226!212?_??_C$#228!214?_$#230!211?_!4?_$#234!213?A???_?K$#237!212?AC??O$#239!213?O$#246!212?H$#247!213?H??G$#248!212?C-#1!96?_!122?@$#2!208?A$#4!103?_!117?_$#5!207?G$#15!98?G!107?O!12?AG$#17!96?O$#19!220?C$#20!207?C$#32!99?_$#33!206?_$#35!102?O!118?O$#53!220?O$#54!208?@$#55!97?C!107?_$#71!95?_$#74!208?C!11?A$#90!98?O$#92!219?C$#95!206?G$#96!221?G$#112!98?C??G_$#113!99?O$#114!96?G$#135!97?A$#137!207?O!12?@$#139!209?@$#140!101?O$#144!207?A$#157!95?C!124?_$#158!222?O$#160!218?@$#173!96?A!5?G!118?A$#174!222?_$#175!99?A???O_$#177!206?C$#180!209?A$#184!216?_$#191!98?A!106?O$#192!98?_$#195!216?O_?G$#204!100?C$#205!94?O$#206!99?G!107?_$#209!97?_$#212!212?A$#213!208?_??_!4?C$#215!209?_!5?O$#216!213?Q$#222!211?@!5?O$#223!212?`?G@A$#225!94?_$#226!97?G!112?C??@@A@?A$#227!209?G?[KKOc$#228!209?Sg??_$#Line truncated
|
[?25l[?80l[?8452lP0;1;0q"1;1;252;270#0;2;2;3;3#1;2;3;4;7#2;2;1;4;14#3;2;5;5;5#4;2;4;7;9#5;2;4;9;15#6;2;4;10;20#7;2;5;12;17#8;2;4;14;21#9;2;5;17;25#10;2;6;16;36#11;2;4;20;27#12;2;8;9;10#13;2;8;10;14#14;2;6;10;25#15;2;9;13;11#16;2;10;13;16#17;2;10;15;21#18;2;9;16;25#19;2;11;19;23#20;2;10;20;28#21;2;10;23;32#22;2;8;22;41#23;2;9;25;34#24;2;11;25;40#25;2;9;27;45#26;2;12;11;12#27;2;14;15;16#28;2;14;17;20#29;2;13;17;25#30;2;14;19;17#31;2;16;19;22#32;2;15;21;27#33;2;15;22;32#34;2;18;24;30#35;2;16;26;33#36;2;15;27;39#37;2;13;28;49#38;2;18;30;49#39;2;17;34;29#40;2;14;34;36#41;2;17;33;41#42;2;16;32;52#43;2;19;18;18#44;2;20;21;22#45;2;20;23;27#46;2;23;26;23#47;2;21;25;29#48;2;22;28;33#49;2;21;29;38#50;2;21;33;28#51;2;21;34;33#52;2;21;32;40#53;2;21;34;45#54;2;23;37;54#55;2;21;35;57#56;2;23;39;37#57;2;22;40;47#58;2;23;40;60#59;2;22;42;66#60;2;22;43;69#61;2;22;49;57#62;2;23;43;66#63;2;25;23;22#64;2;27;27;28#65;2;25;29;32#66;2;25;30;37#67;2;27;32;27#68;2;29;32;34#69;2;28;34;39#70;2;27;35;46#71;2;27;38;35#72;2;28;40;39#73;2;28;40;47#74;2;26;40;52#75;2;26;42;58#76;2;26;41;64#77;2;26;44;70#78;2;28;45;41#79;2;26;45;52#80;2;29;47;57#81;2;27;45;66#82;2;30;49;76#83;2;27;52;54#84;2;32;51;60#85;2;29;52;68#86;2;29;60;69#87;2;31;30;29#88;2;32;33;30#89;2;33;34;34#90;2;33;36;39#91;2;32;37;45#92;2;35;38;36#93;2;35;38;40#94;2;34;40;45#95;2;33;41;52#96;2;34;42;58#97;2;32;44;42#98;2;34;46;46#99;2;35;46;52#100;2;34;47;58#101;2;33;45;65#102;2;34;49;72#103;2;36;50;48#104;2;36;52;52#105;2;32;54;65#106;2;35;54;72#107;2;34;54;78#108;2;34;58;68#109;2;36;63;66#110;2;35;64;72#111;2;38;70;79#112;2;38;37;38#113;2;39;40;41#114;2;39;42;45#115;2;41;44;46#116;2;41;46;52#117;2;40;47;57#118;2;38;47;65#119;2;40;51;50#120;2;41;51;58#121;2;39;54;64#122;2;40;53;72#123;2;38;54;77#124;2;41;56;54#125;2;40;58;66#126;2;40;60;70#127;2;40;60;78#128;2;40;64;71#129;2;38;65;77#130;2;41;69;72#131;2;45;72;87#132;2;43;75;85#133;2;42;80;90#134;2;43;41;41#135;2;45;44;42#136;2;45;46;47#137;2;45;48;51#138;2;45;49;58#139;2;48;50;38#140;2;48;51;49#141;2;47;51;53#142;2;47;52;58#143;2;47;54;63#144;2;45;54;71#145;2;46;57;58#146;2;47;56;65#147;2;46;58;70#148;2;49;64;60#149;2;47;65;69#150;2;45;65;78#151;2;46;70;75#152;2;47;75;80#153;2;47;78;86#154;2;46;79;91#155;2;46;81;93#156;2;50;49;49#157;2;52;52;47#158;2;52;52;53#159;2;52;54;58#160;2;50;55;63#161;2;53;57;54#162;2;53;57;59#163;2;53;59;64#164;2;54;61;70#165;2;53;63;60#166;2;53;67;65#167;2;56;69;61#168;2;54;69;67#169;2;51;70;76#170;2;50;73;83#171;2;51;72;90#172;2;53;77;85#173;2;51;78;89#174;2;55;79;95#175;2;52;81;90#176;2;58;54;53#177;2;57;56;55#178;2;58;59;60#179;2;58;61;64#180;2;58;64;60#181;2;59;64;66#182;2;59;65;70#183;2;61;67;76#184;2;58;70;65#185;2;59;70;70#186;2;61;69;78#187;2;63;75;69#188;2;60;76;82#189;2;63;63;61#190;2;64;65;65#191;2;64;67;70#192;2;68;69;61#193;2;65;72;65#194;2;65;70;72#195;2;65;72;77#196;2;66;73;82#197;2;66;76;66#198;2;66;75;77#199;2;67;76;85#200;2;67;79;89#201;2;68;81;79#202;2;69;67;66#203;2;70;72;66#204;2;70;71;72#205;2;70;73;77#206;2;69;74;82#207;2;72;77;61#208;2;71;77;65#209;2;73;76;70#210;2;72;76;79#211;2;71;78;85#212;2;70;79;89#213;2;72;80;94#214;2;73;81;85#215;2;72;82;91#216;2;73;83;94#217;2;75;73;72#218;2;76;77;65#219;2;77;79;71#220;2;77;78;78#221;2;76;80;83#222;2;76;80;89#223;2;80;83;80#224;2;78;82;85#225;2;78;84;90#226;2;78;86;95#227;2;80;87;93#228;2;80;88;96#229;2;83;75;70#230;2;81;80;80#231;2;84;83;73#232;2;84;83;78#233;2;83;84;85#234;2;83;86;90#235;2;87;87;87#236;2;84;89;91#237;2;84;90;96#238;2;86;94;97#239;2;89;82;80#240;2;89;85;84#241;2;90;89;80#242;2;91;89;85#243;2;90;90;91#244;2;89;92;96#245;2;93;94;90#246;2;91;95;98#247;2;94;83;79#248;2;97;86;83#249;2;97;89;85#250;2;97;91;90#251;2;94;92;95#252;2;97;94;86#253;2;99;95;92#254;2;96;98;98#0!252?----#12!161?_$#15!162?G_$#17!161?O$#27!158?O$#43!163?O$#45!158?_$#89!160?G$#92!158?G$#112!162?OG$#114!160?O$#115!157?O$#141!160?_$#158!161?G$#177!162?C$#190!160?C$#191!164?O$#197!164?_$#202!157?_!5?C$#204!162?_$#233!159?C?C$#243!159?G$#244!159?_$#250!159?O-#12!164?A$#13!165?O$#27!164?C$#32!155?O$#43!72?_!81?_!10?G$#44!77?_$#45!73?G!82?C$#50!155?G$#64!74?_$#69!163?@$#88!72?O???O$#90!164?@$#93!166?_$#112!165?_$#114!154?O$#135!165?C$#136!71?_?CO!78?_?C?@$#137!77?O$#140!156?A$#141!73?O!82?G!8?A$#148!164?G$#156!78?_$#157!71?G$#158!76?_!84?@!4?O$#160!155?_$#162!70?_$#165!158?@$#178!75?G$#179!162?_$#181!163?A$#182!157?A$#211!157?C$#213!156?O$#214!159?A?A$#215!159?G$#216!161?C$#220!72?G_$#221!159?@$#222!159?Oc$#224!158?CCG$#225!157?oY_AGS$#226!158?_?O_?O$#227!156?_!6?_$#230!74?GO$#233!164?O$#234!75?_!81?G???OI$#235!162?@$#236!160?@$#237!163?G$#238!164?_$#244!71?O!91?C-#13!82?O$#15!153?A$#16!81?G!70?G$#27!80?C!85?@$#28!72?@$#29!78?@$#30!151?_!15?G$#32!79?A???_$#44!166?A?_$#56!154?@$#65!153?C$#66!152?C$#67!71?@$#72!163?O$#87!151?O!15?C$#91!152?O$#92!81?C??_$#93!150?_$#95!163?G$#112!83?O!67?G?@!13?O$#113!69?G!9?@!72?A$#119!70?_$#134!85?_$#136!167?A$#137!74?@!93?O$#138!163?c$#140!169?_$#145!168?G$#156!82?G$#158!70?@!8?C$#159!69?_?A!94?C$#161!78?A$#163!70?G$#17Line truncated
|
||||||
|
[?25h
|
||||||
@@ -36,7 +36,7 @@ binds {
|
|||||||
Alt+Space { spawn-sh "pkill -x rofi || rofi -show drun"; }
|
Alt+Space { spawn-sh "pkill -x rofi || rofi -show drun"; }
|
||||||
|
|
||||||
// Actions
|
// Actions
|
||||||
Mod+V { spawn "shorinclip-wrap"; }
|
Mod+V { spawn-sh "fzfclip-wrap"; }
|
||||||
Mod+Period { spawn-sh "pkill -x rofi || rofi-emoji"; }
|
Mod+Period { spawn-sh "pkill -x rofi || rofi-emoji"; }
|
||||||
Ctrl+Alt+Delete { spawn-sh "pkill -x wlogout || wlogout -p layer-shell"; }
|
Ctrl+Alt+Delete { spawn-sh "pkill -x wlogout || wlogout -p layer-shell"; }
|
||||||
Print { spawn "niri" "msg" "action" "screenshot-screen"; }
|
Print { spawn "niri" "msg" "action" "screenshot-screen"; }
|
||||||
|
|||||||
@@ -13,8 +13,6 @@
|
|||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
trap 'echo $LINENO: $BASH_COMMAND' ERR
|
|
||||||
|
|
||||||
# Lock
|
# Lock
|
||||||
|
|
||||||
exec {LOCK_FD}>/tmp/"$(basename "$0")".lock
|
exec {LOCK_FD}>/tmp/"$(basename "$0")".lock
|
||||||
|
|||||||
Executable
+296
@@ -0,0 +1,296 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# shellcheck disable=SC2016
|
||||||
|
|
||||||
|
# Description:
|
||||||
|
# View and manage clipboard history using fzf, with support for
|
||||||
|
# image previews in compatible terminals.
|
||||||
|
# Requirements:
|
||||||
|
# - cliphist
|
||||||
|
# - wl-clipboard
|
||||||
|
# - fzf
|
||||||
|
# - sixel-query & kgp-query from this repository
|
||||||
|
# - chafa (for image previews)
|
||||||
|
# - ffmpegthumbnailer (optional, for video thumbnails)
|
||||||
|
# Credits:
|
||||||
|
# - Original idea and some code adapted from https://github.com/SHORiN-KiWATA/shorinclip
|
||||||
|
# LICENSE:
|
||||||
|
# # MIT License
|
||||||
|
# #
|
||||||
|
# # Copyright (c) 2026 shorinkiwata
|
||||||
|
# #
|
||||||
|
# # Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# # of this software and associated documentation files (the "Software"), to deal
|
||||||
|
# # in the Software without restriction, including without limitation the rights
|
||||||
|
# # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
# # copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# # furnished to do so, subject to the following conditions:
|
||||||
|
# #
|
||||||
|
# # The above copyright notice and this permission notice shall be included in all
|
||||||
|
# # copies or substantial portions of the Software.
|
||||||
|
# #
|
||||||
|
# # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
# # SOFTWARE.
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
CACHE_DIR=$(mktemp -d)
|
||||||
|
export CACHE_DIR
|
||||||
|
# trap rm later
|
||||||
|
|
||||||
|
export C_TERTIARY='\x1b[1;35m'
|
||||||
|
export C_PRIMARY='\x1b[1;34m'
|
||||||
|
export C_CYAN='\x1b[1;36m'
|
||||||
|
export C_RESET='\x1b[0m'
|
||||||
|
|
||||||
|
# Check for terminal graphics support and set environment variables accordingly
|
||||||
|
|
||||||
|
_check_kitty_icat() {
|
||||||
|
# workaround for WezTerm
|
||||||
|
if [ -n "${WEZTERM_EXECUTABLE:-}" ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
kgp-query
|
||||||
|
}
|
||||||
|
|
||||||
|
_check_sixel() {
|
||||||
|
# workaround for Zellij
|
||||||
|
if [ -n "${ZELLIJ_SESSION_NAME:-}" ]; then
|
||||||
|
return 1
|
||||||
|
# same for tmux, unless otherwise configured
|
||||||
|
elif [ -n "${TMUX:-}" ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
sixel-query
|
||||||
|
}
|
||||||
|
|
||||||
|
_check_iterm2() {
|
||||||
|
iterm2-query
|
||||||
|
}
|
||||||
|
|
||||||
|
ENABLE_ICAT=0
|
||||||
|
ENABLE_SIXEL=0
|
||||||
|
ENABLE_ITERM2=0
|
||||||
|
|
||||||
|
# Priority: KGP > sixel > iterm2
|
||||||
|
if _check_kitty_icat; then
|
||||||
|
export ENABLE_ICAT=1
|
||||||
|
elif _check_sixel; then
|
||||||
|
export ENABLE_SIXEL=1
|
||||||
|
elif _check_iterm2; then
|
||||||
|
export ENABLE_ITERM2=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
export ENABLE_ICAT
|
||||||
|
export ENABLE_SIXEL
|
||||||
|
export ENABLE_ITERM2
|
||||||
|
|
||||||
|
# Preview functions
|
||||||
|
|
||||||
|
_preview_image() {
|
||||||
|
local file="$1"
|
||||||
|
if [ "$ENABLE_ICAT" -eq 1 ]; then
|
||||||
|
printf "\x1b_Ga=d\x1b\\"
|
||||||
|
chafa -f kitty --animate=off --size="${FZF_PREVIEW_COLUMNS}x${FZF_PREVIEW_LINES}" "$file"
|
||||||
|
elif [ "$ENABLE_SIXEL" -eq 1 ]; then
|
||||||
|
chafa -f sixels --animate=off --size="${FZF_PREVIEW_COLUMNS}x${FZF_PREVIEW_LINES}" "$file"
|
||||||
|
elif [ "$ENABLE_ITERM2" -eq 1 ]; then
|
||||||
|
chafa -f iterm2 --animate=off --size="${FZF_PREVIEW_COLUMNS}x${FZF_PREVIEW_LINES}" "$file"
|
||||||
|
else
|
||||||
|
chafa -f symbols --animate=off --size="${FZF_PREVIEW_COLUMNS}x${FZF_PREVIEW_LINES}" "$file"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
export -f _preview_image
|
||||||
|
|
||||||
|
_preview_text() {
|
||||||
|
local content="$1"
|
||||||
|
if [ "$ENABLE_ICAT" -eq 1 ]; then
|
||||||
|
printf "\x1b_Ga=d\x1b\\"
|
||||||
|
fi
|
||||||
|
echo "$content" | head -n 100
|
||||||
|
}
|
||||||
|
export -f _preview_text
|
||||||
|
|
||||||
|
_preview_file() {
|
||||||
|
path="$1"
|
||||||
|
path_mime=$(file -b --mime-type "$path")
|
||||||
|
if [[ $path_mime =~ image ]]; then
|
||||||
|
_preview_image "$path"
|
||||||
|
elif [[ "$path_mime" =~ video ]]; then
|
||||||
|
video_hash=$(echo "$path" | md5sum | cut -d" " -f1)
|
||||||
|
thumb_file="$CACHE_DIR/$video_hash.png"
|
||||||
|
if [ ! -f "$thumb_file" ]; then
|
||||||
|
if command -v ffmpegthumbnailer &>/dev/null;then
|
||||||
|
ffmpegthumbnailer -i "$path" -o "$thumb_file" -s 480 -t 0 >/dev/null 2>&1
|
||||||
|
else
|
||||||
|
_preview_text "ffmpegthumbnailer not installed, cannot generate thumbnail for video."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -s "$thumb_file" ]; then
|
||||||
|
_preview_image "$thumb_file"
|
||||||
|
else
|
||||||
|
_preview_text "Video: $path (No thumbnail)"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
_preview_text "$path"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
export -f _preview_file
|
||||||
|
|
||||||
|
preview() {
|
||||||
|
entry="$1"
|
||||||
|
|
||||||
|
content=$(echo "$entry" | cut -f2-)
|
||||||
|
mimeType=$(echo "$entry" | cliphist decode | file -b --mime-type -)
|
||||||
|
ext=$(echo "$mimeType" | awk -F"/" "{print \$2}")
|
||||||
|
|
||||||
|
if [[ $mimeType =~ image ]]; then
|
||||||
|
img_hash=$(echo "$entry" | cliphist decode | md5sum | cut -d" " -f1)
|
||||||
|
cache_file="$CACHE_DIR/$img_hash.$ext"
|
||||||
|
[ -f "$cache_file" ] || echo "$entry" | cliphist decode > "$cache_file"
|
||||||
|
_preview_image "$cache_file"
|
||||||
|
|
||||||
|
elif [ "$mimeType" = "text/html" ] && echo "$content" | grep -q QQ; then
|
||||||
|
qq_img_file=$(echo "$entry" | cliphist decode | grep -oP "^<img src=\"file://\K[^\"]+")
|
||||||
|
#qq_ext="${qq_img_file##*.}"
|
||||||
|
#qq_img_cache_file=$CACHE_DIR/$id.$qq_ext
|
||||||
|
#cp $qq_img_file $qq_img_cache_file
|
||||||
|
if [ -f "$qq_img_file" ]; then
|
||||||
|
_preview_image "$qq_img_file"
|
||||||
|
else
|
||||||
|
_preview_text "$qq_img_file does not exist."
|
||||||
|
fi
|
||||||
|
|
||||||
|
elif path=$(echo "$entry" | cliphist decode) && [[ "$path" == /* ]]; then
|
||||||
|
if [ -e "$path" ]; then
|
||||||
|
_preview_file "$path"
|
||||||
|
else
|
||||||
|
_preview_text "$path does not exist."
|
||||||
|
fi
|
||||||
|
elif decoded=$(echo "$entry" | cliphist decode) && [[ "$decoded" == file://* ]]; then
|
||||||
|
raw_path="${decoded#file://}"
|
||||||
|
raw_path=$(echo "$raw_path" | python -c "import sys, urllib.parse; print(urllib.parse.unquote(sys.stdin.read().strip()))")
|
||||||
|
if [ -e "$raw_path" ]; then
|
||||||
|
_preview_file "$raw_path"
|
||||||
|
else
|
||||||
|
_preview_text "$raw_path does not exist."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ "$ENABLE_ICAT" = 1 ]; then
|
||||||
|
printf "\x1b_Ga=d\x1b\\"
|
||||||
|
fi
|
||||||
|
_preview_text "$(echo "$entry" | cliphist decode)"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
export -f preview
|
||||||
|
|
||||||
|
# Optimize entry formatting
|
||||||
|
|
||||||
|
format_clip_list() {
|
||||||
|
sed -E \
|
||||||
|
-e "s/(\t).*\.(mp4|mkv|webm|avi|mov|flv|wmv)$/\1${C_TERTIARY}[VIDEO]File.\2${C_RESET}/" \
|
||||||
|
-e "s/(\t)file:\/\/.*\.(mp4|mkv|webm|avi|mov|flv|wmv)$/\1${C_TERTIARY}[VIDEO]Url.\2${C_RESET}/" \
|
||||||
|
-e "s/(\t).*src=\"file:\/\/.*[qQ][qQ].*/\1${C_PRIMARY}[IMG_HTML]QQ${C_RESET}/" \
|
||||||
|
-e "s/(\t)file:\/\/.*xwechat.*temp.*/\1${C_PRIMARY}[IMG]WeChat${C_RESET}/" \
|
||||||
|
-e "s/(\t)file:\/\/.*\.gif$/\1${C_PRIMARY}[IMG]Url.gif${C_RESET}/" \
|
||||||
|
-e "s/(\t)file:\/\/.*\.(png|jpg|jpeg|webp|bmp)$/\1${C_TERTIARY}[IMG]Url.\2${C_RESET}/" \
|
||||||
|
-e "s/(\t)file:\/\/.*/\1${C_CYAN}[URL]File${C_RESET}/" \
|
||||||
|
-e "s/(\t)\/.*\.gif$/\1${C_PRIMARY}[IMG]Path.gif${C_RESET}/" \
|
||||||
|
-e "s/(\t)\/.*\.(png|jpg|jpeg|webp|bmp)$/\1${C_TERTIARY}[IMG]Path.\2${C_RESET}/" \
|
||||||
|
-e "s/\[\[ binary data .* (png|jpg|jpeg|gif|webp) .*\]\]/${C_TERTIARY}[IMG]Bin.\1${C_RESET}/" \
|
||||||
|
-e "s/\[\[ binary data .* \]\]/${C_CYAN}[BINARY]${C_RESET}/"
|
||||||
|
}
|
||||||
|
export -f format_clip_list
|
||||||
|
|
||||||
|
add_num() {
|
||||||
|
awk -F '\t' '{printf "%s\t\x1b[90m%-2d \x1b[0m%s\n", $1, NR, $2}'
|
||||||
|
}
|
||||||
|
export -f add_num
|
||||||
|
|
||||||
|
# Action when confirmed
|
||||||
|
|
||||||
|
copy_selection() {
|
||||||
|
local input="$1"
|
||||||
|
local decoded
|
||||||
|
decoded=$(echo "$input" | cliphist decode)
|
||||||
|
local mime
|
||||||
|
mime=$(echo "$decoded" | file -b --mime-type -)
|
||||||
|
|
||||||
|
url_encode() {
|
||||||
|
python -c "import sys, urllib.parse; print(urllib.parse.quote(sys.argv[1]))" "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Image
|
||||||
|
if [[ "$mime" =~ image ]]; then
|
||||||
|
echo "$decoded" | wl-copy
|
||||||
|
|
||||||
|
# HTML with QQ image
|
||||||
|
elif [ "$mime" = "text/html" ]; then
|
||||||
|
local qq_src
|
||||||
|
qq_src=$(echo "$decoded" | grep -oP "^<img src=\"file://\K[^\"]+")
|
||||||
|
|
||||||
|
if [ -f "$qq_src" ]; then
|
||||||
|
local encoded_path
|
||||||
|
encoded_path=$(url_encode "$qq_src")
|
||||||
|
|
||||||
|
echo "file://$encoded_path" | wl-copy --type text/uri-list
|
||||||
|
else
|
||||||
|
echo "$decoded" | wl-copy
|
||||||
|
fi
|
||||||
|
|
||||||
|
# URL starting with file://
|
||||||
|
elif [[ "$decoded" == file://* ]]; then
|
||||||
|
echo "$decoded" | wl-copy --type text/uri-list
|
||||||
|
|
||||||
|
# file path
|
||||||
|
elif [[ "$decoded" == /* ]] && [ -e "$decoded" ]; then
|
||||||
|
local encoded_path
|
||||||
|
encoded_path=$(url_encode "$decoded")
|
||||||
|
echo "file://$encoded_path" | wl-copy --type text/uri-list
|
||||||
|
|
||||||
|
# Other data, just copy
|
||||||
|
else
|
||||||
|
echo "$decoded" | wl-copy
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
export -f copy_selection
|
||||||
|
|
||||||
|
# Reload mechanism
|
||||||
|
|
||||||
|
FZF_PORT=$(shuf -i 10000-60000 -n 1)
|
||||||
|
RELOAD_CMD="cliphist list | format_clip_list | add_num"
|
||||||
|
wl-paste --watch bash -c "curl -s -X POST -d 'reload($RELOAD_CMD)' http://localhost:$FZF_PORT" >/dev/null 2>&1 &
|
||||||
|
WATCH_PID=$!
|
||||||
|
trap 'rm -rf "$CACHE_DIR"; kill $WATCH_PID 2>/dev/null' EXIT
|
||||||
|
|
||||||
|
# Ensure terminal is large enough
|
||||||
|
|
||||||
|
wait_timeout=50
|
||||||
|
while [[ $(tput cols) -lt 35 || $(tput lines) -lt 25 ]]; do
|
||||||
|
printf "\rWaiting for terminal size at least 35x25... %d" "$wait_timeout"
|
||||||
|
sleep 1
|
||||||
|
((wait_timeout--))
|
||||||
|
[ "$wait_timeout" -eq 0 ] && exit 1
|
||||||
|
done
|
||||||
|
|
||||||
|
cliphist list | format_clip_list | add_num | fzf \
|
||||||
|
--ansi \
|
||||||
|
--listen "$FZF_PORT" \
|
||||||
|
--bind "ctrl-r:reload($RELOAD_CMD)" \
|
||||||
|
--bind "ctrl-x:execute-silent(bash -c 'cliphist delete <<< \"\$1\"' -- {})+reload($RELOAD_CMD)" \
|
||||||
|
--prompt=" > " \
|
||||||
|
--header='CTRL-X: Delete | CTRL-R: Reload | ENTER: Paste' \
|
||||||
|
--color='header:italic:yellow,prompt:blue,pointer:blue' \
|
||||||
|
--info=hidden \
|
||||||
|
--no-sort \
|
||||||
|
--layout=reverse \
|
||||||
|
--with-nth 2.. \
|
||||||
|
--delimiter '\t' \
|
||||||
|
--preview-window=down:60%,wrap \
|
||||||
|
--preview "preview {}" \
|
||||||
|
--bind "enter:execute-silent(bash -c 'copy_selection \"\$1\"' -- {})+accept"
|
||||||
|
|
||||||
Executable
+16
@@ -0,0 +1,16 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Description:
|
||||||
|
# Wrapper for fzfclip to ensure only one instance is
|
||||||
|
# running and to launch it in ghostty.
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
exec {LOCK_FD}>/tmp/"$(basename "$0")".lock
|
||||||
|
|
||||||
|
flock -n "$LOCK_FD" || {
|
||||||
|
echo "Another instance is running. Exiting." >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
ghostty -e fzfclip "$@"
|
||||||
Executable
+103
@@ -0,0 +1,103 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Description:
|
||||||
|
# Query terminal capabilities for graphics support, including:
|
||||||
|
# - Kitty Graphics Protocol (KGP)
|
||||||
|
# - iTerm2 inline images
|
||||||
|
# - Sixel graphics
|
||||||
|
# This script will print three lines of output:
|
||||||
|
# SUPPORT_KGP=1 or 0
|
||||||
|
# SUPPORT_ITERM2=1 or 0
|
||||||
|
# SUPPORT_SIXEL=1 or 0
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# Do NOT source this script directly, as it will modify the terminal state
|
||||||
|
# and print its result directly to stdout.
|
||||||
|
# Instead, use command substitution to capture the output, for example:
|
||||||
|
# eval "$(graphics-query)"
|
||||||
|
# or parse the output manually.
|
||||||
|
#
|
||||||
|
# See also:
|
||||||
|
# - kgp-query: specifically checks for Kitty Graphics Protocol support
|
||||||
|
# - iterm2-query: specifically checks for iTerm2 inline image support
|
||||||
|
# - sixel-query: specifically checks for Sixel graphics support
|
||||||
|
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Ensure in a interactive terminal
|
||||||
|
[ ! -t 0 ] && exit 1
|
||||||
|
|
||||||
|
# Construct query
|
||||||
|
KGP_QUERY_ID=$RANDOM
|
||||||
|
KGP_QUERY_CODE=$(printf "\033_Gi=%d,s=1,v=1,a=q,t=d,f=24;AAAA\033\\" "$KGP_QUERY_ID")
|
||||||
|
ITERM2_QUERY_CODE=$(printf "\033]1337;ReportCellSize\a")
|
||||||
|
KGP_EXPECTED_RESPONSE=$(printf "\033_Gi=%d;OK\033\\" "$KGP_QUERY_ID")
|
||||||
|
ITERM2_EXPECTED_RESPONSE=$(printf "\033]1337;") # followed by "ReportCellSize=...", but only the prefix is enough
|
||||||
|
FENCE_CODE=$(printf "\033[c")
|
||||||
|
|
||||||
|
# Set terminal to raw mode with timeout
|
||||||
|
stty_orig=$(stty -g)
|
||||||
|
trap 'stty "$stty_orig"' EXIT
|
||||||
|
stty -echo -icanon min 1 time 0
|
||||||
|
|
||||||
|
printf "%s%s%s" "$ITERM2_QUERY_CODE" "$KGP_QUERY_CODE" "$FENCE_CODE" > /dev/tty
|
||||||
|
|
||||||
|
response=""
|
||||||
|
support_kgp=0
|
||||||
|
support_iterm2=0
|
||||||
|
while true; do
|
||||||
|
IFS= read -r -N 1 -t 0.3 char || {
|
||||||
|
[ -z "$char" ] && break
|
||||||
|
}
|
||||||
|
|
||||||
|
response+="$char"
|
||||||
|
|
||||||
|
if [[ "$response" == *"$KGP_EXPECTED_RESPONSE"* ]]; then
|
||||||
|
support_kgp=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$response" == *"$ITERM2_EXPECTED_RESPONSE"* ]]; then
|
||||||
|
support_iterm2=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$response" == *$'\033['*'c' ]]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ${#response} -gt 1024 ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
support_sixel=0
|
||||||
|
if [[ "$response" =~ $'\x1b'\[\?([0-9;]*)c ]]; then
|
||||||
|
params="${BASH_REMATCH[1]}"
|
||||||
|
|
||||||
|
IFS=';' read -ra codes <<< "$params"
|
||||||
|
|
||||||
|
for code in "${codes[@]}"; do
|
||||||
|
if [[ "$code" == "4" ]]; then
|
||||||
|
support_sixel=1
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$support_kgp" -eq 1 ]; then
|
||||||
|
echo "SUPPORT_KGP=1"
|
||||||
|
else
|
||||||
|
echo "SUPPORT_KGP=0"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$support_iterm2" -eq 1 ]; then
|
||||||
|
echo "SUPPORT_ITERM2=1"
|
||||||
|
else
|
||||||
|
echo "SUPPORT_ITERM2=0"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$support_sixel" -eq 1 ]; then
|
||||||
|
echo "SUPPORT_SIXEL=1"
|
||||||
|
else
|
||||||
|
echo "SUPPORT_SIXEL=0"
|
||||||
|
fi
|
||||||
Executable
+47
@@ -0,0 +1,47 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Ensure in a interactive terminal
|
||||||
|
[ ! -t 0 ] && exit 1
|
||||||
|
|
||||||
|
# Construct query
|
||||||
|
QUERY_CODE=$(printf "\033]1337;ReportCellSize\a")
|
||||||
|
EXPECTED_RESPONSE=$(printf "\033]1337;") # followed by "ReportCellSize=...", but only the prefix is enough
|
||||||
|
# Construct fence code that most terminals will respond to
|
||||||
|
# to ensure that at least something will be sent back and
|
||||||
|
# to detect the end of the response
|
||||||
|
FENCE_CODE=$(printf "\033[c")
|
||||||
|
|
||||||
|
# Set terminal to raw mode
|
||||||
|
stty_orig=$(stty -g)
|
||||||
|
trap 'stty "$stty_orig"' EXIT
|
||||||
|
stty -echo -icanon min 1 time 0
|
||||||
|
|
||||||
|
printf "%s%s" "$QUERY_CODE" "$FENCE_CODE" > /dev/tty
|
||||||
|
|
||||||
|
response=""
|
||||||
|
ret=1
|
||||||
|
while true; do
|
||||||
|
IFS= read -r -N 1 -t 0.3 char || {
|
||||||
|
[ -z "$char" ] && break
|
||||||
|
}
|
||||||
|
|
||||||
|
response+="$char"
|
||||||
|
|
||||||
|
if [[ "$response" == *"$EXPECTED_RESPONSE"* ]]; then
|
||||||
|
ret=0
|
||||||
|
# Keep reading until response is complete to
|
||||||
|
# avoid leaving unread data in the terminal
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$response" == *$'\033['*'c' ]]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ${#response} -gt 1024 ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
exit $ret
|
||||||
@@ -16,7 +16,7 @@ EXPECTED_RESPONSE=$(printf "\033_Gi=%d;OK\033\\" "$QUERY_ID")
|
|||||||
# to detect the end of the response
|
# to detect the end of the response
|
||||||
FENCE_CODE=$(printf "\033[c")
|
FENCE_CODE=$(printf "\033[c")
|
||||||
|
|
||||||
# Set terminal to raw mode with timeout as 0.5s
|
# Set terminal to raw mode with timeout
|
||||||
stty_orig=$(stty -g)
|
stty_orig=$(stty -g)
|
||||||
trap 'stty "$stty_orig"' EXIT
|
trap 'stty "$stty_orig"' EXIT
|
||||||
stty -echo -icanon min 1 time 0
|
stty -echo -icanon min 1 time 0
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
pkill -f "ghostty -e shorinclip" || ghostty -e shorinclip
|
|
||||||
Reference in new issue
Block a user