Skip to content

Instantly share code, notes, and snippets.

@martinleblanc
Created July 8, 2019 21:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save martinleblanc/f08f588fc4758db4f764caf702ad5192 to your computer and use it in GitHub Desktop.
Save martinleblanc/f08f588fc4758db4f764caf702ad5192 to your computer and use it in GitHub Desktop.
packed: 3AAS0pizzgeSECB6zgAf5JYB3AAazmiPW1fCwMDcAB3SxxpiCZfOBnQ8/cQGTW9zY293xAJSVcQGMTA1MDY2xAZNb3Njb3fEH1NwYXJ0YWtvdnNrYXlhIHVsaWNhLCBkLjE4LGt2MzGQi8QOZm9sbG93ZXJfY291bnTNBcHEHmhhc19wdWJsaXNoZWRfcHJlbWl1bV9pY29uc2V0c8PEDmljb25zZXRzX2NvdW50zQKIxBVwdWJsaWNfaWNvbnNldHNfY291bnTNAojED2lzX2F1dG9hcHByb3ZlZMPEEXB1YmxpY19pY29uX2NvdW50zYGwxBRoYXNfcHJlbWl1bV9pY29uc2V0c8PEEnB1YmxpY19pY29uc19jb3VudM2A8sQVcHVibGljX2ZhbWlsaWVzX2NvdW50F8QYcHVibGljX2NvbGxlY3Rpb25zX2NvdW50AsQXYWxsb3dzX3ByaXZhdGVfbWVzc2FnZXPCxAZJY29qYW3ED2luZm9AaWNvamFtLmNvbcDECVN0YW5pc2xhdsPDwsPCwsPCwsQJS2hvZHpoYWV2wAKXzQfdBBAPLinOAAMgE5fNB+IKEREZMM4ADeQXwJfNB+MHBwMOEM4ACAyHxA1FdXJvcGUvTW9zY293wM2m98QGSWNvamFtxACQkpfS0kBK7x3EFW5ldHdvcmstY29tbXVuaWNhdGlvbsQYTmV0d29yayAmIGNvbW11bmljYXRpb25zxBdOZXR3b3JrICYgY29tbXVuaWNhdGlvbpfNB94CCQAAAACQl9LSQErvJMQHc2VvLXdlYsQJU0VPICYgd2VixAlTRU8gJiB3ZWKXzQfeAgkAAAAAkNwAEtLMo+11wMUBACoqSWNvbnMgZm9yIG9uYm9hcmRpbmcgVUksIGxhbmRpbmcgcGFnZXMgYW5kIHdpemFyZCBzY3JlZW5zIGluIGFwcGxpY2F0aW9ucy4qKg0KDQpTY2VuYXJpdW0gaWNvbnMgYXJlIGRlc2lnbmVkIG9uIGEgMTI4eDEyOCBzaXplZCBwaXhlbCBwZXJmZWN0IGdyaWQgdXNpbmcgdHJhbnNwYXJlbnQgYmFja2dyb3VuZCBlbGVtZW50cyBhbmQgc29mdCBmbGF0IGNvbG9ycy4gVGhhdCBtYWtlcyB0aGVtIGV5ZS1jYXRjaGluZyBvbiBhbnkgYmFja2dyb3VuZC7NKCLECTEwMjc0LmpwZ80Cmg3ECXNjZW5hcml1bcPECVNjZW5hcml1bc0oIpGVzhdJKoKTAJUCBAUAAP6bzk2LecLFEOA8cD48ZW0+VXBkYXRlZCBvbiBGZWJydWFyeSAyMm5kLCAyMDEzPC9lbT48L3A+Cgo8cD5UaGlzIGlzIGEgbGVnYWwgYWdyZWVtZW50IGJldHdlZW4geW91LCB0aGUgUHVyY2hhc2VyLCBhbmQgdGhlIExpY2Vuc29yLiBQdXJjaGFzaW5nIG9yIGRvd25sb2FkaW5nIG9mIGFueSBpY29uIG9yIGljb25zIHNldCAoTGljZW5zZWQgTWF0ZXJpYWwpLCBjb25zdGl0dXRlcyB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhlIHRlcm1zIG9mIHRoaXMgYWdyZWVtZW50LjwvcD4KCjxoMz5HcmFudCBvZiByaWdodHM8L2gzPgoKPHA+VGhlIHN0YW5kYXJkIGxpY2Vuc2UgZ3JhbnRzIHlvdSwgdGhlIFB1cmNoYXNlciwgYSBub24tZXhjbHVzaXZlLCBub24tdHJhbnNmZXJhYmxlIHJpZ2h0IHRvIHVzZSB0aGUgTGljZW5zZWQgTWF0ZXJpYWwuPC9wPgoKPHA+VGhlIExpY2Vuc2VkIE1hdGVyaWFsIGlzIHBlcm1pdHRlZCB0byBiZSB1c2VkOjwvcD4KCjx1bD4KPCEtLSA8bGk+Rm9yIGEgc2luZ2xlIHB1cnBvc2Ugb3IgYXBwbGljYXRpb248L2xpPiAtLT4KPGxpPkZvciBhbnkgcGVyc29uYWwsIGNvbW1lcmNpYWwsIGVkaXRvcmlhbCBvciBjbGllbnQgcHVycG9zZTwvbGk+CjxsaT5JbiBhbiBhbHRlcmVkLCBjcm9wcGVkIG9yIG90aGVyd2lzZSBtb2RpZmllZCBvciBtYW5pcHVsYXRlZCB3YXk8L2xpPgo8L3VsPgoKPHA+VGhlIExpY2Vuc2VkIE1hdGVyaWFsIG1heSBiZSByZXByb2R1Y2VkIGluOjwvcD4KCjx1bD4KPGxpPlByaW50ZWQgTWF0ZXJpYWw8L2xpPgo8bGk+QWR2ZXJ0aXNlbWVudHM8L2xpPgo8bGk+UGFja2FnaW5nPC9saT4KPGxpPlByZXNlbnRhdGlvbnM8L2xpPgo8bGk+VmlkZW88L2xpPgo8bGk+T24tbGluZSBjb250ZW50PC9saT4KPGxpPkNvbXB1dGVyIGdhbWVzPC9saT4KPGxpPk11bHRpbWVkaWEgcHJvamVjdHM8L2xpPgo8bGk+U21hcnRwaG9uZSBhbmQgZGVza3RvcCBhcHBzIC0gYm90aCBmcmVlIGFuZCBwYWlkLjwvbGk+CjwvdWw+CjwvbGk+CjwvdWw+Cgo8aDM+UmVzdHJpY3Rpb25zPC9oMz4KCjxwPkFsbCBvd25lcnNoaXAgYW5kIGNvcHlyaWdodCBvZiB0aGUgTGljZW5zZWQgTWF0ZXJpYWwgcmVtYWluIHRoZSBwcm9wZXJ0eSBvZiBsaWNlbnNvci4gVGhlIGxpY2Vuc2VkIE1hdGVyaWFsIGlzIG5vdCBiZWluZyBzb2xkLCBidXQgcHJvdmlkZWQgdG8gdGhlIHB1cmNoYXNlciB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBhZ3JlZW1lbnQuCgo8cD5UaGUgTGljZW5zZWQgTWF0ZXJpYWwgb3IgYW55IGRlcml2YXRpdmUgd29yayBiYXNlZCBvbiB0aGUgTGljZW5zZWQgTWF0ZXJpYWwgbWF5IG5vdCBiZSBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGxpY2Vuc2VkLCBzdWJsaWNlbnNlZCwgc29sZCwgcmVzb2xkIG9yIHJlZGlzdHJpYnV0ZWQgYWxvbmUgLSBldmVuIGZvciBmcmVlLiA8IS0tIEFsbCBvZiB0aGVzZSB0aGluZ3MgYXJlIHJlZmVycmVkIHRvIGFzIFJlc29sZCwgd2hpY2ggcmVxdWlyZXMgYW4gRXh0ZW5kZWQgTGljZW5zZS4tLT48L3A+Cgo8cD5UaGUgTGljZW5zZWQgTWF0ZXJpYWwgbWF5IG5vdCBiZSBwbGFjZWQ6PC9wPgoKPHVsPgo8bGk+T24gYW55IHdlYnNpdGUgaW4gYSBjb21wbGV0ZSBvciBhcmNoaXZlZCBkb3dubG9hZGFibGUgZm9ybWF0PC9saT4KPGxpPk9uIGFueSBlbGVjdHJvbmljIGJ1bGxldGluIGJvYXJkIG9yIGRvd25sb2FkYWJsZSBmb3JtYXQ8L2xpPgo8bGk+SW4gYSB3YXkgdGhhdCBlbmFibGVzIGl0IHRvIGJlIGRpc3RyaWJ1dGVkIGluIGFueSBvdGhlciB3YXk8L2xpPgo8L3VsPgoKCjxwPlRoZSBMaWNlbnNlZCBNYXRlcmlhbCBtYXkgbm90IGJlOjwvcD4KCjx1bD4KPGxpPlNvbGQgb3IgcmVkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGFuIGljb24gc2V0PC9saT4KPGxpPkluY2x1ZGVkIGluIHdvcmsgaW50ZW5kZWQgdG8gYmUgcmVwcm9kdWNlZCBieSB0aGlyZCBwYXJ0eSBmb3IgZXhhbXBsZToKIDx1bD48bGk+YW55IGVsZWN0cm9uaWMsIHdlYiwgZGVzaWduIG9yIHByZXNlbnRhdGlvbiB0ZW1wbGF0ZTwvbGk+PC91bD4KPC9saT4KPGxpPkluY29ycG9yYXRlZCBpbnRvIGEgbG9nbyBvciBvdGhlciB0cmFkZW1hcms8L2xpPgo8bGk+T24gcGh5c2ljYWwgaXRlbXMgZm9yIHJlc2FsZSBvciBvbiBhbnkgc2ltaWxhciBtYXNzIHByb2R1Y2VkIGl0ZW08L2xpPgo8bGk+VXNlZCB0byBjcmVhdGUgcG9ybm9ncmFwaGljLCBsaWJlbG91cywgb2JzY2VuZSBvciBkZWZhbWF0b3J5IE1hdGVyaWFsLjwvbGk+CjwvdWw+Cgo8IS0tIAo8aDI+RXh0ZW5kZWQgTGljZW5zZTwvaDI+Cgo8cD5UaGlzIGlzIGEgbGVnYWwgYWdyZWVtZW50IGJldHdlZW4geW91LCB0aGUgcHVyY2hhc2VyLCBhbmQgdGhlIGxpY2Vuc29yLiBQdXJjaGFzaW5nIG9yIGRvd25sb2FkaW5nIG9mIGFueSBpY29uIG9yIGljb25zIHNldCAoTGljZW5zZWQgTWF0ZXJpYWwpLCBjb25zdGl0dXRlcyB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhlIHRlcm1zIG9mIHRoaXMgYWdyZWVtZW50LjwvcD4KCjxoMz5HcmFudCBvZiByaWdodHM8L2gzPgoKPHA+VGhlIEV4dGVuZGVkIGxpY2Vuc2UgZ3JhbnRzIHlvdSwgdGhlIHB1cmNoYXNlciwgYSBub24tZXhjbHVzaXZlLCBub24tdHJhbnNmZXJhYmxlIHJpZ2h0IHRvIHVzZSB0aGUgTGljZW5zZWQgTWF0ZXJpYWwuPC9wPgoKPHA+VGhlIExpY2Vuc2VkIE1hdGVyaWFsIG1heSBiZSBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGxpY2Vuc2VkLCBzdWJsaWNlbnNlZCwgc29sZCwgcmVzb2xkIG9yIHJlZGlzdHJpYnV0ZWQsIHJlZmVycmVkIHRvIGFzIFJlc29sZCwgaW4gdGhlIGZvbGxvd2luZyBjaXJjdW1zdGFuY2VzOjwvcD4KCjx1bD4KPGxpPlRoZSBMaWNlbnNlZCBNYXRlcmlhbCBpcyBpbmNvcnBvcmF0ZWQgaW50byBhIGRlcml2YXRpdmUgd29yayB5b3UgaGF2ZSBjcmVhdGVkPC9saT4KPGxpPlRoZSBMaWNlbnNlZCBNYXRlcmlhbCBpcyB1c2VkIGZvciBhIGxpbWl0ZWQgUmUtUHVycG9zaW5nIGFuZCBtb2RpZmllZCBmb3IgUmUtc2FsZSBhcyBhIHRvb2wsIHRlbXBsYXRlLCBzdG9jayBpdGVtLCBvciB3aXRoIHNvdXJjZSBmaWxlcy48L2xpPgo8bGk+VGhlIExpY2Vuc2VkIE1hdGVyaWFsIGlzIHBlcm1pdHRlZCB0byBiZSB1c2VkOjwvbGk+CjxsaT5Gb3IgYSBzaW5nbGUgYXBwbGljYXRpb248L2xpPgo8bGk+Rm9yIGFueSBwZXJzb25hbCwgY29tbWVyY2lhbCwgZWRpdG9yaWFsIG9yIGNsaWVudCBwdXJwb3NlPC9saT4KPGxpPkluIGFuIGFsdGVyZWQsIGNyb3BwZWQgb3Igb3RoZXJ3aXNlIG1vZGlmaWVkIG9yIG1hbmlwdWxhdGVkIHdheTwvbGk+CjxsaT5UaGUgTGljZW5zZWQgTWF0ZXJpYWwgbWF5IGJlIHJlcHJvZHVjZWQgaW46PC9saT4KPGxpPlByaW50ZWQgTWF0ZXJpYWw8L2xpPgo8bGk+QWR2ZXJ0aXNlbWVudHM8L2xpPgo8bGk+UGFja2FnaW5nPC9saT4KPGxpPlByZXNlbnRhdGlvbnM8L2xpPgo8bGk+VmlkZW88L2xpPgo8bGk+T24tbGluZSBjb250ZW50PC9saT4KPGxpPkNvbXB1dGVyIGdhbWVzPC9saT4KPGxpPk11bHRpbWVkaWEgcHJvamVjdHM8L2xpPgo8bGk+UGFpZCBzbWFydHBob25lIGFuZCBkZXNrdG9wIGFwcHMuPC9saT4KPC91bD4KCjxoND5SZXN0cmljdGlvbnM6PC9oND4KCjxwPkFsbCBvd25lcnNoaXAgYW5kIGNvcHlyaWdodCBvZiB0aGUgTGljZW5zZWQgTWF0ZXJpYWwgcmVtYWluIHRoZSBwcm9wZXJ0eSBvZiBsaWNlbnNvci4gVGhlIExpY2Vuc2VkIE1hdGVyaWFsIGlzIG5vdCBiZWluZyBzb2xkLCBidXQgcHJvdmlkZWQgdG8gdGhlIHB1cmNoYXNlciB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBhZ3JlZW1lbnQuClRoZSBMaWNlbnNlZCBNYXRlcmlhbCBtYXkgbm90IGJlIHBsYWNlZDo8L3A+Cgo8dWw+CjxsaT5PbiBhbnkgd2Vic2l0ZSBpbiBhIGNvbXBsZXRlIG9yIGFyY2hpdmVkIGRvd25sb2FkYWJsZSBmb3JtYXQ8L2xpPgo8bGk+T24gYW55IGVsZWN0cm9uaWMgYnVsbGV0aW4gYm9hcmQgb3IgZG93bmxvYWRhYmxlIGZvcm1hdDwvbGk+CjxsaT5JbiBhIHdheSB0aGF0IGVuYWJsZXMgaXQgdG8gYmUgZGlzdHJpYnV0ZWQgaW4gYW55IG90aGVyIHdheTwvbGk+CjwvdWw+Cgo8cD5UaGUgTGljZW5zZWQgTWF0ZXJpYWwgbWF5IG5vdCBiZTo8L3A+Cgo8dWw+CjxsaT5JbmNvcnBvcmF0ZWQgaW50byBhIGxvZ28gb3Igb3RoZXIgdHJhZGVtYXJrPC9saT4KPGxpPlNvbGQgb3IgcmVkaXN0cmlidXRlZCBhbG9uZSBvciBhcyBwYXJ0IG9mIGFuIGljb24gc2V0LjwvbGk+CjwvdWw+Cgo8cD5UaGUgTGljZW5zZWQgTWF0ZXJpYWwgbWF5IG5vdCBiZSB1c2VkIHRvIGNyZWF0ZSBwb3Jub2dyYXBoaWMsIGxpYmVsb3VzLCBvYnNjZW5lIG9yIGRlZmFtYXRvcnkgTWF0ZXJpYWwuPC9wPiAtLT7EBWJhc2ljwkfEDUJhc2ljIGxpY2Vuc2UCl80H3AkLESIkzgAMQLiXzQfcCQsRIiTOAAxAuMCQkwCUBwAAAP6QDQGXzQfhBAQOKiLOAASyjZfNB+MBGxA7Hs4ABDyMzab3kQAyzeTbAcQRc2NlbmFyaXVtLXZvbC0xLTLDw8DED1NjZW5hcml1bSB2b2wuMYKqbWFza19jb2xvcsCwYmFja2dyb3VuZF9jb2xvcqcjZmZmZmZmkZbOBBY1ppvOTYt5wsDEBWJhc2ljwkfEDUJhc2ljIGxpY2Vuc2UCl80H3AkLESIkzgAMQLiXzQfcCQsRIiTOAAxAuMCRAJMAkwMAAP6TAJQCAAAA/pMAlAYAAAD+kDIBKJGWzl8pNyTEDmZpbGxlZF9vdXRsaW5lxA5GaWxsZWQgb3V0bGluZQSXzQffCxkAAAAAkJfNB+EEBQkdMs4ADR0pl80H4QQFCR02zgAHvxqXzQfiChYMGBbOAA5f+sCQzeTbxD4wMzFfc2VydmVyX3BlcmZvcm1hbmNlX2Rhc2hib2FyZF9ob3N0aW5nX2xhcHRvcF9zcGVlZF90ZXN0LnN2Z8PCw8PLQD9DO0h1AOKTxAZsYXB0b3DEBXNwZWVkxAR0ZXN0l80H4QQFCR02zgAHvxqXzQfiChYMCx7OAAZ1LJGczmZjlZCUCAFAzIAIzgAf5JbOACbMmcKZEBQYIEAwzIDNAQDNAgDMgMyAxFRzY2VuYXJpdW0tdm9sLTEtMi8xMjgvMDMxX3NlcnZlcl9wZXJmb3JtYW5jZV9kYXNoYm9hcmRfaG9zdGluZ19sYXB0b3Bfc3BlZWRfdGVzdC5zdmcBkJA=
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment