REDROOM
PHP 8.0.30
Path:
Logout
Edit File
Size: 53.28 KB
Close
//lib64/python3.6/site-packages/librepo/__pycache__/__init__.cpython-36.opt-1.pyc
Text
Base64
Mw0NCpNzJmGs2QAA4wAAAAAAAAAAAAAAAAYAAABAAAAAcwQCAABkAFoAZAFkAmwBWgFkAWQCbAJaA2UBagRlBRkAWgZlB2oIWghpAFoJaQBaCmkAWgtpAFoMeOZlDWUHgwFEAF3aWg5lDmoPgwBzTHE+ZRBlB2UOgwJaEWUSZQZlDmURgwMBAGUOahNkA4MBcm5xPmUOahRkBIMBcoxlEmUGZQ5kBWQChQIZAGURgwMBAGUOahRkBoMBcqplEWUJZQ5qFYMAZAdkAoUCGQA8AGUOahRkCIMBcshlEWUKZQ5qFYMAZAdkAoUCGQA8AGUOahRkCYMBcuZlEWULZQ5qFYMAZAdkAoUCGQA8AGUOahRkCoMBcj5lEmUGZQ5kC2QChQIZAGURgwMBAGURZQxlDmQLZAKFAhkAahWDADwAcT5XAGQCBABaFgQAWhdaGGQCZwEEAFoZBABaGlobZAxkDWQOZAJnBAQAWhwEAFodWh5kD2QQZBFkAmcEBABaHwQAWiBaIWQMZA1kEmQCZwQEAFoiBABaI1okZBNkFIQAWiVHAGQVZBaEAGQWZQdqJoMDWiZHAGQXZBiEAGQYZQdqJ4MDWidHAGQZZBqEAGQaZQdqKIMDWihHAGQbZByEAGQcZQdqKYMDWilkHWQehABaKmQsZCBkIYQBWitkLWQiZCOEAVosZCRkJYQAWi1kLmQmZCeEAVouZChkKYQAWi9kKmQrhABaMGQCUwApL2HVigAAClZlcnNpb24gY29udGFudHMKLS0tLS0tLS0tLS0tLS0tLQoKLi4gZGF0YTo6IFZFUlNJT05fTUFKT1IKICAgICAgICAgIFZFUlNJT05fTUlOT1IKICAgICAgICAgIFZFUlNJT05fUEFUQ0gKICAgICAgICAgIFZFUlNJT04KCiAgICBDb25zdGFudHMgd2l0aCB2ZXJzaW9uIG51bWJlcnMgYW5kIHdob2xlIHZlcnNpb24gc3RyaW5nLgoKLi4gX2hhbmRsZS1vcHRpb25zLWxhYmVsOgoKOmNsYXNzOmB+LkhhbmRsZWAgb3B0aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgKipMUk9fKiogKGFrYSBMaWJSZXBvIE9wdGlvbikgcHJlZml4ZWQgY29uc3RhbnRzIGFyZSB1c2VkIHRvIHNldAogICAgOmNsYXNzOmAuSGFuZGxlYCBvcHRpb25zIHZpYSA6bWV0aDpgfi5IYW5kbGUuc2V0b3B0YCBtZXRob2QuCgogICAgVGhpcyBvcHRpb25zIGNvdWxkIGJlIGFsc28gc2V0IGJ5IDpjbGFzczpgLkhhbmRsZWAgYXR0cmlidXRlcwogICAgd2l0aCB0aGUgc2FtZSBuYW1lcyBidXQgaW4gbG93ZXJjYXNlIGFuZCB3aXRob3V0IGBgTFJPX2BgIHByZWZpeC4KCiAgICBFeGFtcGxlOjoKCiAgICAgICAgICAgICMgVGhlIGNvbW1hbmQ6CiAgICAgICAgICAgIGguc2V0b3B0KGxpYnJlcG8uTFJPX1VSTFMsIFsiaHR0cDovL2Z0cC5saW51eC5uY3N1LmVkdS9wdWIvZmVkb3JhL2xpbnV4L3JlbGVhc2VzLzE3L0V2ZXJ5dGhpbmcvaTM4Ni9vcy8iXSkKICAgICAgICAgICAgIyBpcyBlcXVpdmFsZW50IHRvOgogICAgICAgICAgICBoLnVybHMgPSBbImh0dHA6Ly9mdHAubGludXgubmNzdS5lZHUvcHViL2ZlZG9yYS9saW51eC9yZWxlYXNlcy8xNy9FdmVyeXRoaW5nL2kzODYvb3MvIl0KCiAgICAuLiBub3RlOjogRm9yIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoaXMgb3B0aW9ucyBjb25zdWx0IDpjbGFzczpgLkhhbmRsZWAgcGFnZS4KCi4uIGRhdGE6OiBMUk9fVVBEQVRFCgogICAgKkJvb2xlYW4qLiBTZXQgdG8gYGBUcnVlYGAgaWYgb25seSB3YW50IHVwZGF0ZSBsb2NhbGlzZWQgb3IgZG93bmxvYWRlZAogICAgcmVwb3NpdG9yeSByZXByZXNlbnRlZCBieSA6Y2xhc3M6YC5SZXN1bHRgIG9iamVjdC4gVXBkYXRlIG1vZGUgaXMKICAgIG1lYW50IHRvIGRvd25sb2FkIHByZXZpb3VzbHkgb21pdHRlZCByZXBvc2l0b3J5IGZpbGUocykuCgouLiBkYXRhOjogTFJPX1VSTFMKCiAgICAqTGlzdCBvciBOb25lKi4gU2V0IHJlcG9zaXRvcnkgdXJscyAocmVwb3NpdG9yeSB1cmwgYW5kIGJhc2V1cmwKICAgIGFyZSBpbnRlcmNoYW5nZWFibGUgdGVybXMgaW4gdGhpcyBjb250ZXh0KS4KCi4uIGRhdGE6OiBMUk9fTUlSUk9STElTVAoKICAgICpTdHJpbmcgb3IgTm9uZSouICoqREVQUkVDQVRFRCoqIFNldCBtaXJyb3JsaXN0IHVybCAodXJsIGNvdWxkIHBvaW50CiAgICB0byBhIG1ldGFsaW5rIG1pcnJvcmxpc3Qgb3IgdG8gYSBzaW1wbGUgbWlycm9ybGlzdCB3aGVyZSBlYWNoIGxpbmUgd2l0aG91dAogICAgYGAnIydgYCBpcyBjb25zaWRlcmVkIGFzIG1pcnJvciB1cmwpLgoKLi4gZGF0YTo6IExST19NSVJST1JMSVNUVVJMCgogICAgKlN0cmluZyBvciBOb25lKi4gTWlycm9ybGlzdCBVUkwuCgouLiBkYXRhOjogTFJPX01FVEFMSU5LVVJMCgogICAgKlN0cmluZyBvciBOb25lKi4gTWV0YWxpbmsgVVJMLgoKLi4gZGF0YTo6IExST19MT0NBTAoKICAgICpCb29sZWFuKi4gSWYgc2V0IHRvIFRydWUsIG5vIGxvY2FsIGNvcHkgb2YgcmVwb3NpdG9yeSBpcyBjcmVhdGVkCiAgICBhbmQgcmVwb3NpdG9yeSBpcyBqdXN0IGxvY2FsaXplZCBpbiBpdHMgY3VycmVudCBsb2NhdGlvbi4KICAgIFdoZW4gVHJ1ZSwgdXJsIG9mIHJlcG9zaXRvcnkgTVVTVCBiZSBhIGxvY2FsIGFkZHJlc3MKICAgIChlLmcuICcvaG9tZS91c2VyL3JlcG8nIG9yICdmaWxlOi8vL2hvbWUvdXNlci9yZXBvJykuCgouLiBkYXRhOjogTFJPX0hUVFBBVVRICgogICAgKkJvb2xlYW4qLiBJZiBUcnVlLCBhbGwgc3VwcG9ydGVkIG1ldGhvZHMgb2YgSFRUUCBhdXRoZW50aWNhdGlvbgogICAgYXJlIGVuYWJsZWQuCgouLiBkYXRhOjogTFJPX1VTRVJQV0QKCiAgICAqU3RyaW5nIG9yIE5vbmUqLiBTZXQgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIGZvciBIVFRQIGF1dGhlbnRpY2F0aW9uLgogICAgUGFyYW0gbXVzdCBiZSBpbiBmb3JtYXQgJ3VzZXJuYW1lOnBhc3N3b3JkJy4KCi4uIGRhdGE6OiBMUk9fUFJPWFkKCiAgICAqU3RyaW5nIG9yIE5vbmUqLiBTZXQgcHJveHkgc2VydmVyIGFkZHJlc3MuIFBvcnQgY291bGQgYmUKICAgIHNwZWNpZmllZCBieSBkaWZmZXJlbnQgb3B0aW9uIG9yIGJ5IHRoZSA6W3BvcnRdIHN1ZmZpeCBvZgogICAgdGhpcyBhZGRyZXNzLiBBbnkgcHJvdG9jb2wgcHJlZml4IChgYGh0dHA6Ly9gYCwgLi4uKSB3aWxsIGJlIGlnbm9yZWQuCgouLiBkYXRhOjogTFJPX1BST1hZUE9SVAoKICAgICpJbnRlZ2VyIG9yIE5vbmUqLiBTZXQgcHJveHkgcG9ydCBudW1iZXIgdG8gY29ubmVjdCB1bmxlc3MKICAgIGl0IGlzIHNwZWNpZmllZCBpbiB0aGUgcHJveHkgYWRkcmVzcyBzdHJpbmcuIE5vbmUgc2V0cyBkZWZhdWx0CiAgICB2YWx1ZSAxMDgwLgoKLi4gZGF0YTo6IExST19QUk9YWVRZUEUKCiAgICAqTG9uZyouIFNldCB0eXBlIG9mIHByb3h5IC0gY291bGQgYmUgb25lIG9mIDpyZWY6YHByb3h5LXR5cGUtbGFiZWxgCgouLiBkYXRhOjogTFJPX1BST1hZQVVUSAoKICAgICpCb29sZWFuKi4gSWYgVHJ1ZSwgYWxsIHN1cHBvcnRlZCBwcm94eSBhdXRoZW50aWNhdGlvbiBtZXRob2RzIGFyZSBlbmFibGVkLgogICAgSWYgRmFsc2UsIG9ubHkgYmFzaWMgYXV0aGVudGljYXRpb24gbWV0aG9kIGlzIGVuYWJsZWQuCgouLiBkYXRhOjogTFJPX1BST1hZVVNFUlBXRAoKICAgICpTdHJpbmcgb3IgTm9uZSouIFNldCB1c2VybmFtZSBhbmQgcGFzc3dvcmQgZm9yIHByb3h5CiAgICBhdXRoZW50aWNhdGlvbiBpbiBmb3JtYXQgJ3VzZXJuYW1lOnBhc3N3b3JkJy4KCi4uIGRhdGE6OiBMUk9fUFJPR1JFU1NDQgoKICAgICpGdW5jdGlvbiBvciBOb25lKi4gKFNlZTogOnJlZjpgY2FsbGJhY2stcHJvZ3Jlc3NjYi1sYWJlbGApCiAgICBTZXQgcHJvZ3Jlc3MgY2FsbGJhY2suIENhbGxiYWNrIG11c3QgYmUgaW4gZm9ybWF0OgogICAgYGBjYWxsYmFjayh1c2VyZGF0YSwgdG90YWxfdG9fZG93bmxvYWQsIGRvd25sb2FkZWQpYGAuIElmCiAgICB0b3RhbF90b19kb3dubG9hZCBpcyAwLCB0aGVuIHRvdGFsIHNpemUgaXMgbm90IGtub3duLgogICAgVG90YWwgc2l6ZSAodG90YWxfdG9fZG93bmxvYWQpIGNvdWxkIGNoYW5nZSAoZ3JvdykgYW1vbmcgdHdvIGNhbGxiYWNrCiAgICBjYWxscyAoaWYgc29tZSBkb3dubG9hZCBmYWlsZWQgYW5kIGFub3RoZXIgbWlycm9yIGlzIHRyaWVkKS4KCi4uIGRhdGE6OiBMUk9fUFJPR1JFU1NEQVRBCgogICAgKkFueSBvYmplY3QqLiBTZXQgdXNlciBkYXRhIGZvciB0aGUgcHJvZ3Jlc3MgY2FsbGJhY2suCgouLiBkYXRhOjogTFJPX01BWFNQRUVECgogICAgKkxvbmcgb3IgTm9uZSouIFNldCBtYXhpbWFsIGFsbG93ZWQgc3BlZWQgcGVyIGRvd25sb2FkIGluIGJ5dGVzIHBlciBzZWNvbmQuCiAgICAwID0gdW5saW1pdGVkIHNwZWVkIC0gdGhlIGRlZmF1bHQgdmFsdWUuCgouLiBkYXRhOjogTFJPX0RFU1RESVIKCiAgICAqU3RyaW5nIG9yIE5vbmUqLiBTZXQgZGVzdGluYXRpb24gZGlyZWN0b3J5IGZvciBkb3dubG9hZGVkIGRhdGEKICAgIChtZXRhZGF0YSBvciBwYWNrYWdlcykuCgouLiBkYXRhOjogTFJPX1JFUE9UWVBFCgogICAgKkludGVnZXIqLiBPbmUgb2YgOnJlZjpgcmVwb3R5cGUtY29uc3RhbnRzLWxhYmVsYC4gU2VlIG1vcmUKICAgIDptZXRoOmB+LkhhbmRsZS5yZXBvdHlwZWAgU2V0IHR5cGUgb2YgcmVwb3NpdG9yeS4KCi4uIGRhdGE6OiBMUk9fQ09OTkVDVFRJTUVPVVQKCiAgICAqSW50ZWdlciBvciBOb25lLiBTZXQgbWF4aW1hbCB0aW1lb3V0IGluIHNlYyBmb3IgY29ubmVjdGlvbiBwaGFzZS4KICAgIERlZmF1bHQgdmFsdWUgaXMgMzAuIE5vbmUgYXMgKnZhbCogc2V0cyB0aGUgZGVmYXVsdCB2YWx1ZS4KCi4uIGRhdGE6OiBMUk9fSUdOT1JFTUlTU0lORwoKICAgICpCb29sZWFuKi4gSWYgeW91IHdhbnQgdG8gbG9jYWxpemUgKExST19MT0NBTCBpcyBUcnVlKSBhIGluY29tcGxldGUgbG9jYWwKICAgIHJlcG9zaXRvcnkgKGVnLiBvbmx5IHByaW1hcnkgYW5kIGZpbGVsaXN0cyBhcmUgcHJlc2VudCBidXQgcmVwb21kLnhtbAogICAgY29udGFpbnMgbW9yZSBmaWxlcyksIHlvdSBjb3VsZCB1c2UgTFJPX1lVTURMSVNUIGFuZCBzcGVjaWZ5IG9ubHkgZmlsZQogICAgdGhhdCBhcmUgcHJlc2VudCwgb3IgdXNlIExST19ZVU1CTElTVCBhbmQgc3BlY2lmeSBmaWxlcyB0aGF0IGFyZSBub3QKICAgIHByZXNlbnQgb3IgdXNlIHRoaXMgb3B0aW9uLgoKLi4gZGF0YTo6IExST19JTlRFUlJVUFRJQkxFCgogICAgKkJvb2xlYW4qLiBMaWJyZXBvIHNldHMgdXAgaXRzIG93biBTSUdURVJNIGhhbmRsZXIuIElmIHRoZSBTSUdURVJNIHNpZ25hbAogICAgaXMgY2F0Y2hlZCwgdGhlIGN1cnJlbnQgZG93bmxvYWQgaXMgaW50ZXJydXB0ZWQuCgouLiBkYXRhOjogTFJPX1VTRVJBR0VOVAoKICAgICpTdHJpbmcqLiBTdHJpbmcgZm9yICBVc2VyLUFnZW50OiBoZWFkZXIgaW4gdGhlIGh0dHAgcmVxdWVzdCBzZW50CiAgICB0byB0aGUgcmVtb3RlIHNlcnZlci4KCi4uIGRhdGE6OiBMUk9fRkVUQ0hNSVJST1JTCgogICAgKkJvb2xlYW4qLiBXaXRoIHRoaXMgb3B0aW9uIGVuYWJsZWQsIG9ubHkgbWlycm9ybGlzdCBkb3dubG9hZCBhbmQgcGFyc2luZwogICAgd2lsbCBiZSBwZXJmb3JtZWQgZHVyaW5nIDptZXRoOmBsaWJyZXBvLkhhbmRsZS5wZXJmb3JtYC4KCi4uIGRhdGE6OiBMUk9fTUFYTUlSUk9SVFJJRVMKCiAgICAqSW50ZWdlciBvciBOb25lKi4gSWYgZG93bmxvYWQgZmFpbHMsIHRyeSBhdCBtb3N0IHRoZSBzcGVjaWZpZWQgbnVtYmVyCiAgICBvZiBtaXJyb3JzLiAwIChOb25lKSBtZWFucyB0cnkgYWxsIGF2YWlsYWJsZSBtaXJyb3JzLgoKLi4gZGF0YTo6IExST19NQVhQQVJBTExFTERPV05MT0FEUwoKICAgICpJbnRlZ2VyIG9yIE5vbmUqLiBNYXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCBkb3dubG9hZHMuCiAgICBgYE5vbmVgYCBzZXRzIGRlZmF1bHQgdmFsdWUuCgouLiBkYXRhOjogTFJPX01BWERPV05MT0FEU1BFUk1JUlJPUgoKICAgICpJbnRlZ2VyIG9yIE5vbmUqLiBNYXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCBkb3dubG9hZHMgcGVyIG1pcnJvci4KICAgIGBgTm9uZWBgIHNldHMgZGVmYXVsdCB2YWx1ZS4KCi4uIGRhdGE6OiBMUk9fVkFSU1VCCgogICAgKlsoU3RyaW5nLCBTdHJpbmcpLCAuLi5dIG9yIE5vbmUqLiBTZXQgbGlzdCBvZiBzdWJzdGl0dXRpb25zCiAgICBmb3IgdmFyaWFibGVzIGluIHVscnMgKGUuZy46ICJodHRwOi8vZm9vLyR2ZXJzaW9uLyIpLgogICAgYGBbKCJyZWxlYXNldmVyIiwgImYxOCIpLCAoImJhc2VhcmNoIiwgImkzODYiKV1gYAoKLi4gZGF0YTo6IExST19GQVNURVNUTUlSUk9SCgogICAgKkJvb2xlYW4qLiBJZiBUcnVlLCBpbnRlcm5hbCBtaXJyb3JsaXN0IGlzIHNvcnRlZAogICAgYnkgdGhlIGRldGVybWluZWQgY29ubmVjdGlvbiBzcGVlZCwgYWZ0ZXIgaXQgaXMgY29uc3RydWN0ZWQuCgouLiBkYXRhOjogTFJPX0ZBU1RFU1RNSVJST1JDQUNIRQoKICAgICpTdHJpbmcgb3IgTm9uZSouIFBhdGggdG8gdGhlIGNhY2hlIGZpbGUuIElmIGNhY2hlIGZpbGUgaXQgZG9lc24ndCBleGlzdHMKICAgIGl0IHdpbGwgYmUgY3JlYXRlZC4KCi4uIGRhdGE6OiBMUk9fRkFTVEVTVE1JUlJPUk1BWEFHRQoKICAgICpJbnRlZ2VyIG9yIE5vbmUqLiBNYXggYWdlIG9mIGNhY2hlIHJlY29yZC4gT2xkZXIgcmVjb3JkcyB3aWxsIG5vdCBiZSB1c2VkLgoKLi4gZGF0YTo6IExST19GQVNURVNUTUlSUk9SQ0IKCiAgICAqRnVuY3Rpb24gb3IgTm9uZSouIChTZWU6IDpyZWY6YGNhbGxiYWNrLWZhc3Rlc3RtaXJyb3JjYi1sYWJlbGApCiAgICBGYXN0ZXN0IG1pcnJvciBzdGF0dXMgY2FsbGJhY2suCiAgICBJdHMgcHJvdG90eXBlIGxvb2tzIGxpa2UgYGBjYWxsYmFjayh1c2VyZGF0YSwgc3RhZ2UsIGRhdGEpYGAKICAgIFdoZXJlICp1c2VyZGF0YSogYXJlIGRhdGEgcGFzc2VkIGJ5IHVzZXIgdmlhIExST19GQVNURVNUTUlSUk9SREFUQS4KICAgICpzdGFnZSogaXMgdmFsdWUgZnJvbQogICAgOnJlZjpgZmFzdGVzdG1pcnJvci1zdGFnZXMtY29uc3RhbnRzLWxhYmVsYC4gKmRhdGEqIHZhbHVlIGRlcGVuZHMKICAgIG9uICpzdGFnZSogdmFsdWUuIFNlZSB0aGUgbGlzdCBvZiBhdmFpbGFibGUgc3RhZ2VzLgoKLi4gZGF0YTo6IExST19GQVNURVNUTUlSUk9SREFUQQoKICAgICpBbnkgb2JqZWN0Ki4gVXNlciBkYXRhIGZvciBmYXN0ZXN0IG1pcnJvciBzdGF0dXMgY2FsbGJhY2suCgouLiBkYXRhOjogTFJPX0xPV1NQRUVEVElNRQoKICAgICpJbnRlZ2VyIG9yIE5vbmUqLiBUaGUgdGltZSBpbiBzZWNvbmRzIHRoYXQgdGhlIHRyYW5zZmVyIHNob3VsZCBiZSBiZWxvdwogICAgdGhlIExST19MT1dTUEVFRExJTUlUIGZvciB0aGUgbGlicmFyeSB0byBjb25zaWRlciBpdCB0b28gc2xvdyBhbmQgYWJvcnQuCiAgICBEZWZhdWx0OiAzMCAoc2VjKQoKLi4gZGF0YTo6IExST19MT1dTUEVFRExJTUlUCgogICAgKkludGVnZXIgb3IgTm9uZSouIFRoZSB0cmFuc2ZlciBzcGVlZCBpbiBieXRlcyBwZXIgc2Vjb25kIHRoYXQKICAgIHRoZSB0cmFuc2ZlciBzaG91bGQgYmUgYmVsb3cgZHVyaW5nIExST19MT1dTUEVFRFRJTUUgc2Vjb25kcyBmb3IKICAgIHRoZSBsaWJyYXJ5IHRvIGNvbnNpZGVyIGl0IHRvbyBzbG93IGFuZCBhYm9ydC4gRGVmYXVsdDogMTAwMCAoYnl0ZS9zKQoKLi4gZGF0YTo6IExST19HUEdDSEVDSwoKICAgICpCb29sZWFuKi4gU2V0IFRydWUgdG8gZW5hYmxlIGdwZyBjaGVjayAoaWYgYXZhaWxhYmxlKSBvZiBkb3dubG9hZGVkIHJlcG8uCgouLiBkYXRhOjogTFJPX0NIRUNLU1VNCgogICAgKkJvb2xlYW4qLiBTZXQgRmFsc2UvVHJ1ZSB0byBkaXNhYmxlL2VuYWJsZSBjaGVja3N1bSBjaGVjay4KCiAgICAuLiBub3RlOjogQ2hlY2tzdW0gY2hlY2sgaXMgZW5hYmxlZCBieSBkZWZhdWx0LgogICAgLi4gbm90ZTo6CiAgICAgICAgSWYgY2hlY2tzdW0gY2hlY2sgaXMgZGlzYWJsZWQsIHRoZW4gZXZlbiBleHBsaWNpdGx5IHNwZWNpZmllZAogICAgICAgIGNoZWNrc3VtIHJlbGF0ZWQgcGFyYW1zIGUuZy4gaW4gOm1ldGg6YH5saWJyZXBvLkhhbmRsZS5kb3dubG9hZGAKICAgICAgICBtZXRob2QgYXJlIGlnbm9yZWQgYW5kIGNoZWNrc3VtIGlzIG5vdCBjaGVja2VkIQoKLi4gZGF0YTo6IExST19ZVU1ETElTVAoKICAgICpMaXN0IG9mIHN0cmluZ3MqLiBTb21lIHByZWRlZmluZWQgbGlzdCA6cmVmOmBwcmVkZWZpbmVkLXl1bWRsaXN0cy1sYWJlbGAuCiAgICBTZXQgbGlzdCBvZiB5dW0gbWV0YWRhdGEgZmlsZXMgdG8gZG93bmxvYWQuIGUuZy4gYGBbInByaW1hcnkiLAogICAgImZpbGVsaXN0cyIsICJvdGhlciIsICJwcmltYXJ5X2RiIiwgInByZXN0b2RlbHRhIl1gYCBJZiAqdmFsKiBpcyBOb25lLAogICAgYWxsIG1ldGFkYXRhIGZpbGVzIHdpbGwgYmUgZG93bmxvYWRlZC4gSWYgKnZhbCogaXMgYGBbXWBgIG9yIGBgW05vbmVdYGAKICAgIG9ubHkgYGByZXBvbWQueG1sYGAgd2lsbCBiZSBkb3dubG9hZGVkLgoKLi4gZGF0YTo6IExST19ZVU1TTElTVAoKICAgICpbKFN0cmluZywgU3RyaW5nKSwgLi4uXSBvciBOb25lKi4gU2V0IGxpc3Qgb2Ygc3Vic3RpdHV0aW9ucwogICAgZm9yIHJlcG9tZCByZWNvcmRzLgogICAgYGBbKCJncm91cF9neiIsICJncm91cCIpXWAKCi4uIGRhdGE6OiBMUk9fUlBNTURETElTVAoKICAgIFNlZSBMUk9fWVVNRExJU1QKCi4uIGRhdGE6OiBMUk9fWVVNQkxJU1QKCiAgICAqTGlzdCBvZiBzdHJpbmdzKi4gU2V0IHNraXBsaXN0IG9mIHl1bSBtZXRhZGF0YSBmaWxlcy4KICAgIFRoaXMgZmlsZXMgd2lsbCBub3QgYmUgZG93bmxvYWRlZC4KCi4uIGRhdGE6OiBMUk9fUlBNTURCTElTVAoKICAgIFNlZSBMUk9fWVVNQkxJU1QKCi4uIGRhdGE6OiBMUk9fSE1GQ0IKCiAgICAqRnVuY3Rpb24gb3IgTm9uZSogKFNlZTogOnJlZjpgY2FsbGJhY2staGFuZGxlbWlycm9yZmFpbHVyZWNiLWxhYmVsYCkKICAgIFRoZSBIYW5kbGUgTWlycm9yIEZhaWx1cmUgQ2FsbGJhY2sgaXMgY2FsbGVkCiAgICB3aGVuIGEgbWV0YWRhdGEgZG93bmxvYWQgZmFpbHMuIEl0IHByb3ZpZGVzCiAgICBhIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgZXhhY3RseSBmYWlsZWQuCiAgICBDYWxsIG9mIHRoaXMgY2FsbGJhY2sgZG9lc24ndCBtZWFuIHRoYXQgd2hvbGUgZG93bmxvYWRpbmcgZmFpbGVkLgogICAgSWYgdGhlcmUgYXJlIG90aGVyIG1pcnJvcnMgb24gdGhlIGxpc3QsIHRoZXNlIG1pcnJvcnMgd2lsbCBiZSB0cmllZC4KCi4uIGRhdGE6OiBMUk9fU1NMVkVSSUZZUEVFUgoKICAgICpCb29sZWFuKi4gVGhpcyBvcHRpb24gZGV0ZXJtaW5lcyB3aGV0aGVyIGxpYnJlcG8gdmVyaWZpZXMgdGhlCiAgICBhdXRoZW50aWNpdHkgb2YgdGhlIHBlZXIncyBjZXJ0aWZpY2F0ZS4gVGhpcyB0cnVzdCBpcyBiYXNlZCBvbiBhIGNoYWluCiAgICBvZiBkaWdpdGFsIHNpZ25hdHVyZXMsIHJvb3RlZCBpbiBjZXJ0aWZpY2F0aW9uIGF1dGhvcml0eQogICAgKENBKSBjZXJ0aWZpY2F0ZXMuCgouLiBkYXRhOjogTFJPX1NTTFZFUklGWVNUQVRVUwoKICAgICpCb29sZWFuKi4gIFRoaXMgb3B0aW9uIGRldGVybWluZXMgd2hldGhlciBsaWJyZXBvIHZlcmlmaWVzIHRoZSBzdGF0dXMKICAgIG9mIHRoZSBzZXJ2ZXIgY2VydCB1c2luZyB0aGUgJ0NlcnRpZmljYXRlIFN0YXR1cyBSZXF1ZXN0JyBUTFMgZXh0ZW5zaW9uCiAgICAoYWthLiBPQ1NQIHN0YXBsaW5nKS4KICAgIE5vdGUgdGhhdCBpZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkIGJ1dCB0aGUgc2VydmVyIGRvZXMgbm90IHN1cHBvcnQKICAgIHRoZSBUTFMgZXh0ZW5zaW9uLCB0aGUgdmVyaWZpY2F0aW9uIHdpbGwgZmFpbC4gKi8KCi4uIGRhdGE6OiBMUk9fU1NMVkVSSUZZSE9TVAoKICAgICpCb29sZWFuKi4gVGhpcyBvcHRpb24gZGV0ZXJtaW5lcyB3aGV0aGVyIGxpYnJlcG8gdmVyaWZpZXMgdGhhdAogICAgdGhlIHNlcnZlciBjZXJ0IGlzIGZvciB0aGUgc2VydmVyIGl0IGlzIGtub3duIGFzLgoKLi4gZGF0YTo6IExST19TU0xDTElFTlRDRVJUCgogICAgKlN0cmluZyBvciBOb25lKi4gUGF0aCB0byB0aGUgUEVNIGZvcm1hdCBTU0wgY2xpZW50IGNlcnRpZmljYXRlIHRvIHVzZQogICAgd2hlbiB0YWxraW5nIHRvIHRoZSBzZXJ2ZXIuCgouLiBkYXRhOjogTFJPX1NTTENMSUVOVEtFWQoKICAgICpTdHJpbmcgb3IgTm9uZSouIFBhdGggdG8gdGhlIFBFTSBmb3JtYXQgU1NMIGNsaWVudCBrZXkgdG8gdXNlIHdoZW4KICAgIHRhbGtpbmcgdG8gdGhlIHNlcnZlci4KCi4uIGRhdGE6OiBMUk9fU1NMQ0FDRVJUCgogICAgKlN0cmluZyBvciBOb25lKi4gUGF0aCB0byBhIGZpbGUgY29udGFpbmluZyB0aGUgbGlzdCBvZiBQRU0gZm9ybWF0CiAgICB0cnVzdGVkIENBIGNlcnRpZmljYXRlcy4KCi4uIGRhdGE6OiBMUk9fUFJPWFlfU1NMVkVSSUZZUEVFUgoKICAgICpCb29sZWFuKi4gVGhpcyBvcHRpb24gZGV0ZXJtaW5lcyB3aGV0aGVyIGxpYnJlcG8gdmVyaWZpZXMgdGhlCiAgICBhdXRoZW50aWNpdHkgb2YgdGhlIHByb3h5IGNlcnRpZmljYXRlLiBUaGlzIHRydXN0IGlzIGJhc2VkIG9uIGEgY2hhaW4KICAgIG9mIGRpZ2l0YWwgc2lnbmF0dXJlcywgcm9vdGVkIGluIGNlcnRpZmljYXRpb24gYXV0aG9yaXR5CiAgICAoQ0EpIGNlcnRpZmljYXRlcy4KCi4uIGRhdGE6OiBMUk9fUFJPWFlfU1NMVkVSSUZZSE9TVAoKICAgICpCb29sZWFuKi4gVGhpcyBvcHRpb24gZGV0ZXJtaW5lcyB3aGV0aGVyIGxpYnJlcG8gdmVyaWZpZXMKICAgIHRoZSBuYW1lIG9mIHRoZSBwcm94eSBjZXJ0aWZpY2F0ZSBhZ2FpbnN0IHRoZSBob3N0LgoKLi4gZGF0YTo6IExST19QUk9YWV9TU0xDTElFTlRDRVJUCgogICAgKlN0cmluZyBvciBOb25lKi4gUGF0aCB0byB0aGUgUEVNIGZvcm1hdCBTU0wgY2xpZW50IGNlcnRpZmljYXRlIHRvIHVzZQogICAgd2hlbiB0YWxraW5nIHRvIHRoZSBwcm94eS4KCi4uIGRhdGE6OiBMUk9fUFJPWFlfU1NMQ0xJRU5US0VZCgogICAgKlN0cmluZyBvciBOb25lKi4gUGF0aCB0byB0aGUgUEVNIGZvcm1hdCBTU0wgY2xpZW50IGtleSB0byB1c2Ugd2hlbgogICAgdGFsa2luZyB0byB0aGUgcHJveHkuCgouLiBkYXRhOjogTFJPX1BST1hZX1NTTENBQ0VSVAoKICAgICpTdHJpbmcgb3IgTm9uZSouIFBhdGggdG8gYSBmaWxlIGNvbnRhaW5pbmcgdGhlIGxpc3Qgb2YgUEVNIGZvcm1hdAogICAgdHJ1c3RlZCBDQSBjZXJ0aWZpY2F0ZXMuIFVzZWQgZm9yIHByb3h5LgoKLi4gZGF0YTo6IExST19JUFJFU09MVkUKCiAgICAqSW50ZWdlciBvciBOb25lKiBTZXRzIGtpbmQgb2YgSVAgYWRkcmVzc2VzIHRvIHVzZSB3aGVuIHJlc29sdmluZyBob3N0CiAgICBuYW1lcy4gQ291bGQgYmUgb25lIG9mOiA6cmVmOmBpcHJlc29sdmUtdHlwZS1sYWJlbGAKCi4uIGRhdGE6OiBMUk9fQUxMT1dFRE1JUlJPUkZBSUxVUkVTCgogICAgKkludGVnZXIgb3IgTm9uZSogSWYgYWxsIHRyYW5zZmVycyBmcm9tIGEgbWlycm9yIGZhaWxlZCAobm8gc3VjY2Vzc2Z1bCB0cmFuc2ZlcgogICAgZnJvbSB0aGUgbWlycm9yIGV4aXN0cykgYW5kIHRoZSBudW1iZXIKICAgIG9mIGZhaWxlZCBkb3dubG9hZHMgaXMgaGlnaGVyIG9yIGVxdWFsIHRvIHRoaXMgdmFsdWUKICAgIHRoZSBtaXJyb3Igd2lsbCBiZSBza2lwcGVkIChpZ25vcmVkKSBmb3IgYWxsIG5leHQgZG93bmxvYWRzLgoKICAgICoqTm90ZToqKiBOdW1iZXIgb2YgZmFpbGVkIHRyYW5zZmVycyBmb3IgYSBzaW5nbGUgbWlycm9yIGNhbgogICAgb3V0cmVhY2ggdGhpcyBudW1iZXIhIEZvciBleGFtcGxlLCBpZiB5b3Ugc2V0IHRoaXMgdmFsdWUgdG8gMQogICAgYnV0IHlvdSBhbGxvdyAzIHBhcmFsbGVsIGRvd25sb2FkcyBpdCBpcyBwb3NzaWJsZSB0aGF0IGFsbAogICAgdGhyZWUgZG93bmxvYWRzIHN0YXJ0IGZyb20gdGhlIG1pcnJvciwKICAgIGJlZm9yZSBhbnkgb2YgdGhlbSBjYW4gZmFpbC4gVGhlbiwgaWYgYWxsIHRocmVlIHRyYW5zZmVycwogICAgZmFpbCwgdGhlIG51bWJlciBvZiBmYWlsdXJlcyBmb3IgdGhlIG1pcnJvcgogICAgd2lsbCBiZSAzLCBldmVuIGlmIHRoaXMgb3B0aW9uIHdhcyBzZXQgdG8gMS4KCi4uIGRhdGE6OiBMUk9fQURBUFRJVkVNSVJST1JTT1JUSU5HCgogICAgKkludGVnZXIgb3IgTm9uZSogSWYgZW5hYmxlZCwgaW50ZXJuYWwgbGlzdCBvZiBtaXJyb3JzIGZvciBlYWNoCiAgICBoYW5kbGUgaXMgcmUtc29ydGVkIGFmdGVyIGVhY2ggZmluaXNoZWQgdHJhbnNmZXIuCiAgICBUaGUgdGhlIHNvcnRpbmcgaXMgYmFzZWQgb24gbWlycm9yIGVycm9yIHJhdGUgZXRjLgoKLi4gZGF0YTo6IExST19HTlVQR0hPTUVESVIKCiAgICAqU3RyaW5nIG9yIE5vbmUqIHNldCBvd24gR05VUEcgY29uZmlndXJhdGlvbiBkaXJlY3RvcnkgKGEgZGlyIHdpdGgga2V5cmluZykuCgouLiBkYXRhOjogTFJPX0ZBU1RFU1RNSVJST1JUSU1FT1VUCgogICAgKkZsb2F0IG9mIE5vbmUqIE1heCBsZW5ndGggb2YgZmFzdGVzdCBtaXJyb3IgbWVhc3VyZW1lbnQgaW4gc2Vjb25kcy4KICAgIERlZmF1bHQgdmFsdWUgaXMgMi4wc2VjLgoKLi4gZGF0YTo6IExST19IVFRQSEVBREVSCgogICAgKkxpc3Qgb2Ygc3RyaW5ncyBvciBOb25lKiBMaXN0IG9mIHN0cmluZ3MgdGhhdCByZXByZXNlbnQgaHR0cCBoZWFkZXJzLgogICAgRWFjaCBoZWFkZXIgaGFzIGZvcm1hdCAiaGVhZGVyX25hbWU6IGNvbnRlbnQiLiBJZiB5b3UgYWRkIGEgaGVhZGVyCiAgICB3aXRoIG5vIGNvbnRlbnQgYXMgaW4gJ0FjY2VwdDonIChubyBkYXRhIG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBjb2xvbiksCiAgICB0aGUgaW50ZXJuYWxseSB1c2VkIGhlYWRlciB3aWxsIGdldCBkaXNhYmxlZC4gV2l0aCB0aGlzIG9wdGlvbiB5b3UgY2FuCiAgICBhZGQgbmV3IGhlYWRlcnMsIHJlcGxhY2UgaW50ZXJuYWwgaGVhZGVycyBhbmQgcmVtb3ZlIGludGVybmFsIGhlYWRlcnMuCiAgICBUbyBhZGQgYSBoZWFkZXIgd2l0aCBubyBjb250ZW50IChub3RoaW5nIHRvIHRoZSByaWdodCBzaWRlIG9mIHRoZSBjb2xvbiksCiAgICB1c2UgdGhlIGZvcm0gJ015SGVhZGVyOycgKG5vdGUgdGhlIGVuZGluZyBzZW1pY29sb24pLgogICAgTm90ZTogSGVhZGVycyBtdXN0IG5vdCBiZSBDUkxGLXRlcm1pbmF0ZWQhCgouLiBkYXRhOjogTFJPX09GRkxJTkUKCiAgICAqQm9vbGVhbiogTWFrZSB0aGUgaGFuZGxlIHdvcmsgb25seSBsb2NhbGx5LCBhbGwgcmVtb3RlIFVSTHMgYXJlCiAgICBpZ25vcmVkLiBSZW1vdGUgbWlycm9ybGlzdHMvbWV0YWxpbmtzIChpZiB0aGV5IGFyZSBzcGVjaWZpZWQpCiAgICBhcmUgaWdub3JlZC4gRmFzdGVzdCBtaXJyb3IgY2hlY2sgKGlmIGVuYWJsZWQpIGlzIHNraXBlZC4KCi4uIGRhdGE6OiBMUk9fSFRUUEFVVEhNRVRIT0RTCgogICAgKkxvbmcgKGJpdG1hc2spKiBCaXRtYXNrIHdoaWNoIHRlbGwgTGlicmVwbyB3aGljaCBhdXRoIG1ldG9kcyB0byB1c2UuCiAgICBTZWU6IDpyZWY6YGF1dGgtbWV0aG9kcy1sYWJlbGAKCi4uIGRhdGE6OiBMUk9fUFJPWFlBVVRITUVUSE9EUwoKICAgICpMb25nIChiaXRtYXNrKSogQml0bWFzayB3aGljaCB0ZWxsIExpYnJlcG8gd2hpY2ggYXV0aCBtZXRvZHMgdG8gdXNlCiAgICBmb3IgcHJveHkgYXV0aGVudGljYXRpb24uCiAgICBTZWU6IDpyZWY6YGF1dGgtbWV0aG9kcy1sYWJlbGAKCi4uIGRhdGE6OiBMUk9fRlRQVVNFRVBTVgoKICAgICpCb29sZWFuKiBFbmFibGUvRGlzYWJsZSBFUFNWIChFeHRlbmRlZCBQYXNzaXZlIG1vZGUpIGZvciBGVFAuCgouLiBkYXRhOjogTFJPX1BSRVNFUlZFVElNRQoKICAgICpCb29sZWFuKiBJZiBlbmFibGVkLCBsaWJyZXBvIHdpbGwgdHJ5IHRvIGtlZXAgdGltZXN0YW1wcyBvZiB0aGUgZG93bmxvYWRlZCBmaWxlcwogICAgaW4gc3luYyB3aXRoIHRoYXQgb24gdGhlIHJlbW90ZSBzaWRlLgoKLi4gX2hhbmRsZS1pbmZvLW9wdGlvbnMtbGFiZWw6Cgo6Y2xhc3M6YH4uSGFuZGxlYCBpbmZvIG9wdGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgTFJJIChha2EgTGliUmVwbyBJbmZvcm1hdGlvbikgY29uc3RhbnRzIGFyZSB1c2VkIHRvIGdldCBpbmZvcm1hdGlvbgogICAgZnJvbSA6Y2xhc3M6YC5IYW5kbGVgIHZpYSA6bWV0aDpgfi5IYW5kbGUuZ2V0aW5mb2AgbWV0aG9kLgoKLi4gZGF0YTo6IExSSV9VUERBVEUKLi4gZGF0YTo6IExSSV9VUkxTCi4uIGRhdGE6OiBMUklfTUlSUk9STElTVAouLiBkYXRhOjogTFJJX01JUlJPUkxJU1RVUkwKLi4gZGF0YTo6IExSSV9NRVRBTElOS1VSTAouLiBkYXRhOjogTFJJX0xPQ0FMCi4uIGRhdGE6OiBMUklfUFJPR1JFU1NDQgouLiBkYXRhOjogTFJJX1BST0dSRVNTREFUQQouLiBkYXRhOjogTFJJX0RFU1RESVIKLi4gZGF0YTo6IExSSV9SRVBPVFlQRQouLiBkYXRhOjogTFJJX1VTRVJBR0VOVAouLiBkYXRhOjogTFJJX1lVTURMSVNUCi4uIGRhdGE6OiBMUklfWVVNU0xJU1QKLi4gZGF0YTo6IExSSV9SUE1NRERMSVNUCi4uIGRhdGE6OiBMUklfWVVNQkxJU1QKLi4gZGF0YTo6IExSSV9SUE1NREJMSVNUCi4uIGRhdGE6OiBMUklfRkVUQ0hNSVJST1JTCi4uIGRhdGE6OiBMUklfTUFYTUlSUk9SVFJJRVMKLi4gZGF0YTo6IExSSV9WQVJTVUIKLi4gZGF0YTo6IExSSV9NSVJST1JTCi4uIGRhdGE6OiBMUklfTUVUQUxJTksKLi4gZGF0YTo6IExSSV9GQVNURVNUTUlSUk9SCi4uIGRhdGE6OiBMUklfRkFTVEVTVE1JUlJPUkNBQ0hFCi4uIGRhdGE6OiBMUklfRkFTVEVTVE1JUlJPUk1BWEFHRQouLiBkYXRhOjogTFJJX0hNRkNCCi4uIGRhdGE6OiBMUklfU1NMVkVSSUZZUEVFUgouLiBkYXRhOjogTFJJX1NTTFZFUklGWVNUQVRVUwouLiBkYXRhOjogTFJJX1NTTFZFUklGWUhPU1QKLi4gZGF0YTo6IExSSV9TU0xDTElFTlRDRVJUCi4uIGRhdGE6OiBMUklfU1NMQ0xJRU5US0VZCi4uIGRhdGE6OiBMUklfU1NMQ0FDRVJUCi4uIGRhdGE6OiBMUklfUFJPWFlfU1NMVkVSSUZZUEVFUgouLiBkYXRhOjogTFJJX1BST1hZX1NTTFZFUklGWUhPU1QKLi4gZGF0YTo6IExSSV9QUk9YWV9TU0xDTElFTlRDRVJUCi4uIGRhdGE6OiBMUklfUFJPWFlfU1NMQ0xJRU5US0VZCi4uIGRhdGE6OiBMUklfUFJPWFlfU1NMQ0FDRVJUCi4uIGRhdGE6OiBMUklfSVBSRVNPTFZFCi4uIGRhdGE6OiBMUklfQUxMT1dFRE1JUlJPUkZBSUxVUkVTCi4uIGRhdGE6OiBMUklfQURBUFRJVkVNSVJST1JTT1JUSU5HCi4uIGRhdGE6OiBMUklfR05VUEdIT01FRElSCi4uIGRhdGE6OiBMUklfRkFTVEVTVE1JUlJPUlRJTUVPVVQKLi4gZGF0YTo6IExSSV9IVFRQSEVBREVSCi4uIGRhdGE6OiBMUklfT0ZGTElORQouLiBkYXRhOjogTFJJX0hUVFBBVVRITUVUSE9EUwouLiBkYXRhOjogTFJJX1BST1hZQVVUSE1FVEhPRFMKLi4gZGF0YTo6IExSSV9GVFBVU0VFUFNWCgouLiBfcHJveHktdHlwZS1sYWJlbDoKClByb3h5IHR5cGUgY29uc3RhbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tCgouLiBkYXRhOjogUFJPWFlfSFRUUCAoTFJfUFJPWFlfSFRUUCkKLi4gZGF0YTo6IFBST1hZX0hUVFBfMV8wIChMUl9QUk9YWV9IVFRQXzFfMCkKLi4gZGF0YTo6IFBST1hZX1NPQ0tTNCAoTFJfUFJPWFlfU09DS1M0KQouLiBkYXRhOjogUFJPWFlfU09DS1M1IChMUl9QUk9YWV9TT0NLUzUpCi4uIGRhdGE6OiBQUk9YWV9TT0NLUzRBIChMUl9QUk9YWV9TT0NLUzRBKQouLiBkYXRhOjogUFJPWFlfU09DS1M1X0hPU1ROQU1FIChMUl9QUk9YWV9TT0NLUzVfSE9TVE5BTUUpCgouLiBfaXByZXNvbHZlLXR5cGUtbGFiZWw6CgpTdXBwb3J0ZWQgSVAgcmVzb2x2aW5nCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi4uIGRhdGE6OiBJUFJFU09MVkVfV0hBVEVWRVIKCiAgICBEZWZhdWx0IHZhbHVlLCByZXNvbHZlcyBhZGRyZXNzZXMgdG8gYWxsIElQIHZlcnNpb25zIHRoYXQKICAgIHlvdXIgc3lzdGVtIGFsbG93cy4KCi4uIGRhdGE6OiBJUFJFU09MVkVfVjQKCiAgICBSZXNvbHZlIHRvIElQdjQgYWRkcmVzc2VzLgoKLi4gZGF0YTo6IElQUkVTT0xWRV9WNgoKICAgIFJlc29sdmUgdG8gSVB2NiBhZGRyZXNzZXMuCgouLiBfcmVwb3R5cGUtY29uc3RhbnRzLWxhYmVsOgoKUmVwbyB0eXBlIGNvbnN0YW50cwotLS0tLS0tLS0tLS0tLS0tLS0tCgouLiBkYXRhOjogUlBNTURSRVBPIChMUl9SUE1NRFJFUE8pCgogICAgQ2xhc3NpY2FsIHJlcG9zaXRvcnkgaW4gcmVwby1tZCBmb3JtYXQgd2l0aCBgYHJlcG9kYXRhL2BgIGRpcmVjdG9yeS4KCi4uIGRhdGE6OiBZVU1SRVBPIChMUl9ZVU1SRVBPKQoKICAgIFNlZSBSUE1NRFJFUE8KCi4uIGRhdGE6OiBTVVNFUkVQTyAoTFJfU1VTRVJFUE8pCgogICAgWWFTVDIgcmVwb3NpdG9yeSAoaHR0cDovL2VuLm9wZW5zdXNlLm9yZy9vcGVuU1VTRTpTdGFuZGFyZHNfWWFTVDJfUmVwb3NpdG9yeV9NZXRhZGF0YV9jb250ZW50KS4KCiAgICAuLiBub3RlOjogVGhpcyBvcHRpb24gaXMgbm90IHN1cHBvcnRlZCB5ZXQhCgouLiBkYXRhOjogREVCUkVQTyAoTFJfREVCUkVQTykKCiAgICBEZWJpYW4gcmVwb3NpdG9yeQoKICAgIC4uIG5vdGU6OiBUaGlzIG9wdGlvbiBpcyBub3Qgc3VwcG9ydGVkIHlldCEKCi4uIF9wcmVkZWZpbmVkLXl1bWRsaXN0cy1sYWJlbDoKClByZWRlZmluZWQgeXVtZGxpc3QgbGlzdHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLi4gZGF0YTo6IFJQTU1EX0ZVTEwgKFlVTV9GVUxMLCBMUl9ZVU1fRlVMTCkKCiAgICBEb3dubG9hZCBhbGwgcmVwb2RhdGEgZmlsZXMKCi4uIGRhdGE6OiBSUE1NRF9SRVBPTURPTkxZIChZVU1fUkVQT01ET05MWSwgTFJfWVVNX1JFUE9NRE9OTFkpCgogICAgRG93bmxvYWQgb25seSByZXBvbWQueG1sIGZpbGUKCi4uIGRhdGE6OiBSUE1NRF9CQVNFWE1MIChZVU1fQkFTRVhNTCwgTFJfWVVNX0JBU0VYTUwpCgogICAgRG93bmxvYWQgb25seSBwcmltYXJ5LnhtbCwgZmlsZWxpc3RzLnhtbCBhbmQgb3RoZXIueG1sCgouLiBkYXRhOjogUlBNTURfQkFTRURCIChZVU1fQkFTRURCLCBMUl9ZVU1fQkFTRURCKQoKICAgIERvd25sb2FkIG9ubHkgcHJpbWFyeSwgZmlsZWxpc3RzIGFuZCBvdGhlciBkYXRhYmFzZXMuCgouLiBkYXRhOjogUlBNTURfSEFXS0VZIChZVU1fSEFXS0VZLCBMUl9ZVU1fSEFXS0VZKQoKICAgIERvd25sb2FkIG9ubHkgZmlsZXMgdXNlZCBieSBIYXdrZXkgKGh0dHBzOi8vZ2l0aHViLmNvbS9ha296dW1wbC9oYXdrZXkvKS4KICAgIChwcmltYXJ5LCBmaWxlbGlzdHMsIHByZXN0b2RlbHRhKQoKCi4uIF9hdXRoLW1ldGhvZHMtbGFiZWw6CgpBdXRoIG1ldGhvZHMKLS0tLS0tLS0tLS0tCgpTdXBwb3J0ZWQgYXV0aCBtZXRob2RzIGZvciA6ZGF0YTpgfi5MUk9fSFRUUEFVVEhNRVRIT0RTYCBhbmQKOmRhdGE6YH4uTFJPX1BST1hZQVVUSE1FVEhPRFNgIG9wdGlvbnMuCgouLiBkYXRhOjogTFJfQVVUSF9OT05FCgogICAgTm8gYXV0aCBtZXRob2QgZW5hYmxlZC4KCi4uIGRhdGE6OiBMUl9BVVRIX0JBU0lDCgogICAgSFRUUCBCYXNpYyBhdXRoZW50aWNhdGlvbiAoRGVmYXVsdCkuCgouLiBkYXRhOjogTFJfQVVUSF9ESUdFU1QKCiAgICBIVFRQIERpZ2VzdCBhdXRoZW50aWNhdGlvbi4KCi4uIGRhdGE6OiBMUl9BVVRIX05FR09USUFURQoKICAgIEhUVFAgTmVnb3RpYXRlIChTUE5FR08pIGF1dGhlbnRpY2F0aW9uLgoKLi4gZGF0YTo6IExSX0FVVEhfTlRMTQoKICAgIEhUVFAgTlRMTSBhdXRoZW50aWNhdGlvbi4KCi4uIGRhdGE6OiBMUl9BVVRIX0RJR0VTVF9JRQoKICAgIEhUVFAgRGlnZXN0IGF1dGhlbnRpY2F0aW9uIHdpdGggYW4gSUUgZmxhdm9yLgoKLi4gZGF0YTo6IExSX0FVVEhfTlRMTV9XQgoKICAgIE5UTE0gZGVsZWdhdGluZyB0byB3aW5iaW5kIGhlbHBlci4KCi4uIGRhdGE6OiBMUl9BVVRIX09OTFkKCiAgICBUaGlzIGlzIGEgbWV0YSBzeW1ib2wuIE9SIHRoaXMgdmFsdWUKICAgIHRvZ2V0aGVyIHdpdGggYSBzaW5nbGUgc3BlY2lmaWMgYXV0aAogICAgdmFsdWUgdG8gZm9yY2UgbGliY3VybCB0byBwcm9iZSBmb3IKICAgIHVuLXJlc3RyaWN0ZWQgYXV0aCBhbmQgaWYgbm90LCBvbmx5CiAgICB0aGF0IHNpbmdsZSBhdXRoIGFsZ29yaXRobSBpcwogICAgYWNjZXB0YWJsZS4KCi4uIGRhdGE6OiBMUl9BVVRIX0FOWQoKICAgIEFsbCBzdWl0YWJsZSBtZXRob2RzLgoKCi4uIF9mYXN0ZXN0bWlycm9yLXN0YWdlcy1jb25zdGFudHMtbGFiZWw6CgpGYXN0ZXN0IG1pcnJvciBzdGFnZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpWYWx1ZXMgdXNlZCBieSBmYXN0ZXN0IG1pcnJvciBjYWxsYmFjayAoOmRhdGE6YH4uTFJPX0ZBU1RFU1RNSVJST1JDQmApOgoKLi4gZGF0YTo6IEZNU1RBR0VfSU5JVAoKICAgICgwKSBGYXN0ZXN0IG1pcnJvciBkZXRlY3Rpb24ganVzdCBzdGFydGVkLiAqZGF0YSogaXMgTm9uZS4KCi4uIGRhdGE6OiBGTVNUQUdFX0NBQ0hFTE9BRElORwoKICAgICgxKSBDYWNoZSBmaWxlIGlzIHNwZWNpZmllZC4gKmRhdGEqIGlzIHBhdGggdG8gdGhlIGNhY2hlIGZpbGUuCgouLiBkYXRhOjogRk1TVEFHRV9DQUNIRUxPQURJTkdTVEFUVVMKCiAgICAoMikgQ2FjaGUgbG9hZGluZyBmaW5pc2hlZC4gSWYgc3VjY2Vzc2Z1bCwgKmRhdGEqIGlzIE5vbmUsIG90aGVyd2lzZQogICAgICAgICpkYXRhKiBpcyBzdHJpbmcgd2l0aCBlcnJvciBtZXNzYWdlLgoKLi4gZGF0YTo6IEZNU1RBR0VfREVURUNUSU9OCgogICAgKDMpIERldGVjdGlvbiBpbiBwcm9ncmVzcy4gKmRhdGEqIGlzIG51bWJlciBvZiBtaXJyb3JzIHRoYXQgd2lsbCBiZSBwaW5nZWQuCiAgICBJZiBhbGwgdGltZXMgd2VyZSBsb2FkZWQgZnJvbSBjYWNoZSwgdGhpcyBzdGFnZSBpcyBza2lwZWQuCgouLiBkYXRhOjogRk1TVEFHRV9GSU5JU0hJTkcKCiAgICAoNCkgRGV0ZWN0aW9uIGlzIGRvbmUsIHNvcnRpbmcgbWlycm9ycywgdXBkYXRpbmcgY2FjaGUsIGV0Yy4KICAgICAgICAqZGF0YSogaXMgTm9uZS4KCi4uIGRhdGE6OiBGTVNUQUdFX1NUQVRVUwoKICAgICg1KSBUaGUgdmVyeSBsYXN0IGludm9jYXRpb24gb2YgZmFzdGVzdCBtaXJyb3IgY2FsbGJhY2suCiAgICAgICAgSWYgZmFzdGVzdCBtaXJyb3IgZGV0ZWN0aW9uIHdhcyBzdWNjZXNzZnVsICpkYXRhKiwKICAgICAgICBvdGhlcndpc2UgKmRhdGEqIGNvbnRhaW4gc3RyaW5nIHdpdGggZXJyb3IgbWVzc2FnZS4KCi4uIF9lcnJvci1jb2Rlcy1sYWJlbDoKCkVycm9yIGNvZGVzCi0tLS0tLS0tLS0tCgpMaWJSZXBvIEVycm9yIGNvZGVzLgoKLi4gZGF0YTo6IExSRV9PSwoKICAgICgwKSBFdmVyeXRoaW5nIGlzIG9rLgoKLi4gZGF0YTo6IExSRV9CQURGVU5DQVJHCgogICAgKDEpIEJhZCBmdW5jdGlvbiBhcmd1bWVudChzKS4KCi4uIGRhdGE6OiBMUkVfQkFET1BUQVJHCgogICAgKDIpIEJhZCBhcmd1bWVudCBmb3IgdGhlIG9wdGlvbiBpbiA6bWV0aDpgfi5IYW5kbGUuc2V0b3B0YC4KCi4uIGRhdGE6OiBMUkVfVU5LTk9XTk9QVAoKICAgICgzKSBVbmtub3duIG9wdGlvbi4KCi4uIGRhdGE6OiBMUkVfQ1VSTFNFVE9QVAoKICAgICg0KSBjVVJMIGRvZXNuJ3Qga25vdyBhbiBvcHRpb24gdXNlZCBieSBsaWJyZXBvLiBQcm9iYWJseQogICAgICAgIHRvbyBvbGQgY1VSTCB2ZXJzaW9uIGlzIHVzZWQuCgouLiBkYXRhOjogTFJFX0FMUkVBRFlVU0VEUkVTVUxUCgogICAgKDUpIDpjbGFzczpgLlJlc3VsdGAgb2JqZWN0IGlzIG5vdCAiY2xlYW4iIChpdCBoYXMgYmVlbiBhbHJlYWR5IHVzZWQpLgoKLi4gZGF0YTo6IExSRV9JTkNPTVBMRVRFUkVTVUxUCgogICAgKDYpIDpjbGFzczpgLlJlc3VsdGAgb2JqZWN0IGRvZXNuJ3QgY29udGFpbiBhbGwgd2hhdCBpcyBuZWVkZWQuCgouLiBkYXRhOjogTFJFX0NVUkxEVVAKCiAgICAoNykgQ2Fubm90IGR1cGxpY2F0ZSBjVVJMIGhhbmRsZS4gTm8gZnJlZSBtZW1vcnk/CgouLiBkYXRhOjogTFJFX0NVUkwKCiAgICAoOCkgQSBjVVJMIGVycm9yLgoKLi4gZGF0YTo6IExSRV9DVVJMTQoKICAgICg5KSBBIG11bHRpIGNVUkwgaGFuZGxlIGVycm9yLgoKLi4gZGF0YTo6IExSRV9CQURTVEFUVVMKCiAgICAoMTApIEVycm9yIEhUVFAgb3IgRlRQIHN0YXR1cyBjb2RlLgoKLi4gZGF0YTo6IExSRV9URU1QT1JBUllFUlIKCiAgICAoMTEpIEFuIGVycm9yIHRoYXQgc2hvdWxkIGJlIHRlbXBvcmFyeSAoZS5nLiBIVFRQIHN0YXR1cyBjb2RlcyA1MDAsIDUwMi01MDQsIC4uKQoKLi4gZGF0YTo6IExSRV9OT1RMT0NBTAoKICAgICgxMikgVVJMIGlzIG5vdCBhIGxvY2FsIGFkZHJlc3MuCiAgICAgICAgRS5nLiBpbiBjYXNlIHdoZW4gOmRhdGE6YH4uTFJPX1VQREFURWAgb3B0aW9uIGlzIGBgVHJ1ZWBgIGFuZCBVUkwKICAgICAgICBpcyBhIHJlbW90ZSBhZGRyZXNzLgoKLi4gZGF0YTo6IExSRV9DQU5OT1RDUkVBVEVESVIKCiAgICAoMTMpIENhbm5vdCBjcmVhdGUgZGlyZWN0b3J5IGZvciBkb3dubG9hZGVkIGRhdGEuIEJhZCBwZXJtaXNzaW9uPwoKLi4gZGF0YTo6IExSRV9JTwoKICAgICgxNCkgSW5wdXQvT3V0cHV0IGVycm9yLgoKLi4gZGF0YTo6IExSRV9NTEJBRAoKICAgICgxNSkgQmFkIG1pcnJvcmxpc3Qgb3IgbWV0YWxpbmsgZmlsZS4gRS5nLiBtZXRhbGluayBkb2Vzbid0IGNvbnRhaW4KICAgICAgICByZWZlcmVuY2UgdG8gdGFyZ2V0IGZpbGUgKHJlcG9tZC54bWwpLCBtaXJyb3JsaXN0IGlzIGVtcHR5LCAuLgoKLi4gZGF0YTo6IExSRV9NTFhNTAoKICAgICgxNikgQ2Fubm90IHBhcnNlIG1ldGFsaW5rIHhtbC4gTm9uLXZhbGlkIG1ldGFsaW5rIGZpbGU/CiAgICAgICAgRS5nLiAobWV0YWxpbmsgZG9lc24ndCBjb250YWluIG5lZWRlZAogICAgICAgIGZpbGUsIG1pcnJvcmxpc3QgZG9lc24ndCBjb250YWluIHVybHMsIC4uKQoKLi4gZGF0YTo6IExSRV9CQURDSEVDS1NVTQoKICAgICgxNykgQmFkIGNoZWNrc3VtLgoKLi4gZGF0YTo6IExSRV9SRVBPTURYTUwKCiAgICAoMTgpIENhbm5vdCBwYXJzZSByZXBvbWQueG1sIGZpbGUuIE5vbi12YWxpZCByZXBvbWQueG1sIGZpbGU/CgouLiBkYXRhOjogTFJFX05PVVJMCgogICAgKDE5KSBObyB1c2FibGUgVVJMIGZvdW5kLiBFLmcuIGJhZCBsaW5rcyBvciBubyBsaW5rcyBpbiBtZXRhbGluay4KCi4uIGRhdGE6OiBMUkVfQ0FOTk9UQ1JFQVRFVE1QCgogICAgKDIwKSBDYW5ub3QgY3JlYXRlIHRlbXBvcmFyeSBkaXJlY3RvcnkuCgouLiBkYXRhOjogTFJFX1VOS05PV05DSEVDS1NVTQoKICAgICgyMSkgVW5rbm93biB0eXBlIG9mIGNoZWNrc3VtIGlzIG5lZWRlZCBmb3IgdmVyaWZpY2F0aW9uIG9mIG9uZQogICAgICAgIG9yIG1vcmUgZmlsZXMuCgouLiBkYXRhOjogTFJFX0JBRFVSTAoKICAgICgyMikgQmFkIFVSTCBzcGVjaWZpZWQuCgouLiBkYXRhOjogTFJFX0dQR05PVFNVUFBPUlRFRAoKICAgICgyMykgT3BlblBHUCBwcm90b2NvbCBpcyBub3Qgc3VwcG9ydGVkLgoKLi4gZGF0YTo6IExSRV9HUEdFUlJPUgoKICAgICgyNCkgR1BHIGVycm9yLgoKLi4gZGF0YTo6IExSRV9CQURHUEcKCiAgICAoMjUpIEJhZCBHUEcgc2lnbmF0dXJlLgoKLi4gZGF0YTo6IExSRV9JTkNPTVBMRVRFUkVQTwoKICAgICgyNikgUmVwb3NpdG9yeSBtZXRhZGF0YSBhcmUgbm90IGNvbXBsZXRlLgoKLi4gZGF0YTo6IExSRV9JTlRFUlJVUFRFRAoKICAgICgyNykgRG93bmxvYWQgd2FzIGludGVycnVwdGVkIGJ5IFNJR1RFUk0gc2lnbmFsLgoKLi4gZGF0YTo6IExSRV9TSUdBQ1RJT04KCiAgICAoMjgpIFNpZ2FjdGlvbiBzeXN0ZW0gY2FsbCBmYWlsZWQuCgouLiBkYXRhOjogTFJFX0FMUkVBRFlET1dOTE9BREVECgogICAgKDI5KSBUaGUgZmlsZSBpcyBhbHJlYWR5IGRvd25sb2FkZWQgYW5kIGl0cyBjaGVja3N1bSBtYXRjaGVzLgoKLi4gZGF0YTo6IExSRV9VTkZJTklTSEVECgogICAgKDMwKSBEb3dubG9hZCB3YXNuJ3QgKG9yIGNhbm5vdCBiZSkgZmluaXNoZWQuCgouLiBkYXRhOjogTFJFX1NFTEVDVAoKICAgICgzMSkgc2VsZWN0KCkgY2FsbCBmYWlsZWQuCgouLiBkYXRhOjogTFJFX09QRU5TU0wKCiAgICAoMzIpIE9wZW5TU0wgbGlicmFyeSByZWxhdGVkIGVycm9yLgoKLi4gZGF0YTo6IExSRV9NRU1PUlkKCiAgICAoMzMpIENhbm5vdCBhbGxvY2F0ZSBtb3JlIG1lbW9yeS4KCi4uIGRhdGE6OiBMUkVfWE1MUEFSU0VSCgogICAgKDM0KSBYTUwgcGFyc2VyIGVycm9yLgoKLi4gZGF0YTo6IExSRV9DQklOVEVSUlVQVEVECgogICAgKDM1KSBJbnRlcnJ1cHRlZCBieSB1c2VyIGNiLgoKLi4gZGF0YTo6IExSRV9VTktOT1dORVJST1IKCiAgICBBbiB1bmtub3duIGVycm9yLgoKLi4gX3Jlc3VsdC1vcHRpb25zLWxhYmVsOgoKOmNsYXNzOmB+LlJlc3VsdGAgb3B0aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpMaWJSZXBvIFJlc3VsdCBvcHRpb25zIGZvciB1c2UgaW4gOm1ldGg6YH4uUmVzdWx0LmdldGluZm9gIG1ldGhvZC4KCi4uIGRhdGE6OiBMUlJfWVVNX1JFUE8gKGRlcHJlY2F0ZWQgLSB1c2UgTFJSX1JQTU1EX1JFUE8gaW5zdGVhZCkKCiAgICBSZXR1cm5zIGEgZmxhdCBkaWN0aW9uYXJ5IHdpdGggbG9jYWwgcGF0aHMgdG8gZG93bmxvYWRlZC9sb2NhbGlzZWQKICAgIHJwbW1kIHJlcG9zaXRvcnkgYW5kIGJhc2ljIHJlcG9zaXRvcnkncyBpbmZvcm1hdGlvbi46OgoKICAgICAgICB7J3JlcG9tZCc6IHUnL3RtcC9saWJyZXBvdGVzdC1qUE1tWDUvcmVwb2RhdGEvcmVwb21kLnhtbCcsCiAgICAgICAgICd1cmwnOiB1J2h0dHA6Ly8xMjcuMC4wLjE6NTAwMC95dW0vc3RhdGljLzAxLycKICAgICAgICAgJ2Rlc3RkaXInOiB1Jy90bXAvbGlicmVwb3Rlc3QtalBNbVg1JywKICAgICAgICAgJ21ldGFsaW5rJzogTm9uZSwKICAgICAgICAgJ21pcnJvcmxpc3QnOiBOb25lLAogICAgICAgICAnc2lnbmF0dXJlJzogTm9uZSwKICAgICAgICAgJ3ByaW1hcnknOiB1Jy90bXAvbGlicmVwb3Rlc3QtalBNbVg1L3JlcG9kYXRhLzQ1NDNhZDYyZTRkODYzMzdjZDE5NDkzNDZmOWFlYzk3NmI4NDdiNTgtcHJpbWFyeS54bWwuZ3onLAogICAgICAgICAncHJpbWFyeV9kYic6IHUnL3RtcC9saWJyZXBvdGVzdC1qUE1tWDUvcmVwb2RhdGEvNzM1Y2Q2Mjk0ZGYwOGJkZjI4ZTJiYTExMzkxNWNhMDVhMTUxMTE4ZS1wcmltYXJ5LnNxbGl0ZS5iejInLAogICAgICAgICAnZmlsZWxpc3RzJzogdScvdG1wL2xpYnJlcG90ZXN0LWpQTW1YNS9yZXBvZGF0YS9hZWNhMDhmY2NkM2MxYWI4MzFlMWRmMWE2MjcxMWE0NGJhMTkyMmM5LWZpbGVsaXN0cy54bWwuZ3onLAogICAgICAgICAnZmlsZWxpc3RzX2RiJzogdScvdG1wL2xpYnJlcG90ZXN0LWpQTW1YNS9yZXBvZGF0YS80MDM0ZGNlYTc2Yzk0ZDNmN2E5NjE2Nzc5NTM5YTRlYThjYWMyODhmLWZpbGVsaXN0cy5zcWxpdGUuYnoyJywKICAgICAgICAgJ290aGVyJzogdScvdG1wL2xpYnJlcG90ZXN0LWpQTW1YNS9yZXBvZGF0YS9hODk3N2NkYWEwYjE0MzIxZDlhY2ZhYjgxY2U4YTg1ZTg2OWVlZTMyLW90aGVyLnhtbC5neicsCiAgICAgICAgICdvdGhlcl9kYic6IHUnL3RtcC9saWJyZXBvdGVzdC1qUE1tWDUvcmVwb2RhdGEvZmQ5Njk0MmM5MTk2Mjg4OTUxODc3Nzg2MzMwMDFjZmY2MWU4NzJiOC1vdGhlci5zcWxpdGUuYnoyJywKICAgICAgICB9CgouLiBkYXRhOjogTFJSX1JQTU1EX1JFUE8KCiAgICBSZXR1cm5zIGEgZGljdCB3aXRoIGxvY2FsIHBhdGhzIHRvIGRvd25sb2FkZWQvbG9jYWxpc2VkCiAgICBycG1tZCByZXBvc2l0b3J5IGFuZCBiYXNpYyByZXBvc2l0b3J5J3MgaW5mb3JtYXRpb24uOjoKCiAgICAgICAgeydyZXBvbWQnOiB1Jy90bXAvbGlicmVwb3Rlc3QtalBNbVg1L3JlcG9kYXRhL3JlcG9tZC54bWwnLAogICAgICAgICAndXJsJzogdSdodHRwOi8vMTI3LjAuMC4xOjUwMDAveXVtL3N0YXRpYy8wMS8nCiAgICAgICAgICdkZXN0ZGlyJzogdScvdG1wL2xpYnJlcG90ZXN0LWpQTW1YNScsCiAgICAgICAgICdtZXRhbGluayc6IE5vbmUsCiAgICAgICAgICdtaXJyb3JsaXN0JzogTm9uZSwKICAgICAgICAgJ3NpZ25hdHVyZSc6IE5vbmUsCiAgICAgICAgICdwYXRocyc6IHsncHJpbWFyeSc6IHUnL3RtcC9saWJyZXBvdGVzdC1qUE1tWDUvcmVwb2RhdGEvNDU0M2FkNjJlNGQ4NjMzN2NkMTk0OTM0NmY5YWVjOTc2Yjg0N2I1OC1wcmltYXJ5LnhtbC5neicsCiAgICAgICAgICAgICAgICAgICAncHJpbWFyeV9kYic6IHUnL3RtcC9saWJyZXBvdGVzdC1qUE1tWDUvcmVwb2RhdGEvNzM1Y2Q2Mjk0ZGYwOGJkZjI4ZTJiYTExMzkxNWNhMDVhMTUxMTE4ZS1wcmltYXJ5LnNxbGl0ZS5iejInLAogICAgICAgICAgICAgICAgICAgJ2ZpbGVsaXN0cyc6IHUnL3RtcC9saWJyZXBvdGVzdC1qUE1tWDUvcmVwb2RhdGEvYWVjYTA4ZmNjZDNjMWFiODMxZTFkZjFhNjI3MTFhNDRiYTE5MjJjOS1maWxlbGlzdHMueG1sLmd6JywKICAgICAgICAgICAgICAgICAgICdmaWxlbGlzdHNfZGInOiB1Jy90bXAvbGlicmVwb3Rlc3QtalBNbVg1L3JlcG9kYXRhLzQwMzRkY2VhNzZjOTRkM2Y3YTk2MTY3Nzk1MzlhNGVhOGNhYzI4OGYtZmlsZWxpc3RzLnNxbGl0ZS5iejInLAogICAgICAgICAgICAgICAgICAgJ290aGVyJzogdScvdG1wL2xpYnJlcG90ZXN0LWpQTW1YNS9yZXBvZGF0YS9hODk3N2NkYWEwYjE0MzIxZDlhY2ZhYjgxY2U4YTg1ZTg2OWVlZTMyLW90aGVyLnhtbC5neicsCiAgICAgICAgICAgICAgICAgICAnb3RoZXJfZGInOiB1Jy90bXAvbGlicmVwb3Rlc3QtalBNbVg1L3JlcG9kYXRhL2ZkOTY5NDJjOTE5NjI4ODk1MTg3Nzc4NjMzMDAxY2ZmNjFlODcyYjgtb3RoZXIuc3FsaXRlLmJ6Mid9CiAgICAgICAgfQoKLi4gZGF0YTo6IExSUl9ZVU1fUkVQT01EIChkZXByZWNhdGVkIC0gdXNlIExSUl9SUE1NRF9SRVBPTUQgaW5zdGVhZCkKCiAgICBSZXR1cm5zIGEgZmxhdCBkaWN0IHJlcHJlc2VudGluZyBhIHJlcG9tZC54bWwgZmlsZSBvZiBkb3dubG9hZGVkCiAgICBycG1tZCByZXBvc2l0b3J5Ljo6CgogICAgICAgIHsncmV2aXNpb24nOiB1JzEzNDc0NTk5MzEnLAogICAgICAgICAncmVwb190YWdzJzogW10sCiAgICAgICAgICdjb250ZW50X3RhZ3MnOiBbXSwKICAgICAgICAgJ2Rpc3Ryb190YWdzJzogW10sCiAgICAgICAgICdwcmltYXJ5JzogeydjaGVja3N1bSc6IHUnNDU0M2FkNjJlNGQ4NjMzN2NkMTk0OTM0NmY5YWVjOTc2Yjg0N2I1OCcsCiAgICAgICAgICAgICAgICAgICAgICdjaGVja3N1bV9vcGVuJzogdSc2ODQ1N2NlYjhlMjBiZGEwMDRkNDZlMGE0ZGZhNGE2OWNlNzFkYjQ4JywKICAgICAgICAgICAgICAgICAgICAgJ2NoZWNrc3VtX29wZW5fdHlwZSc6IHUnc2hhMScsCiAgICAgICAgICAgICAgICAgICAgICdjaGVja3N1bV90eXBlJzogdSdzaGExJywKICAgICAgICAgICAgICAgICAgICAgJ2RiX3ZlcnNpb24nOiAwTCwKICAgICAgICAgICAgICAgICAgICAgJ2xvY2F0aW9uX2hyZWYnOiB1J3JlcG9kYXRhLzQ1NDNhZDYyZTRkODYzMzdjZDE5NDkzNDZmOWFlYzk3NmI4NDdiNTgtcHJpbWFyeS54bWwuZ3onLAogICAgICAgICAgICAgICAgICAgICAnc2l6ZSc6IDkzNkwsCiAgICAgICAgICAgICAgICAgICAgICdzaXplX29wZW4nOiAzMzg1TCwKICAgICAgICAgICAgICAgICAgICAgJ3RpbWVzdGFtcCc6IDEzNDc0NTk5MzBMfSwKICAgICAgICAgJ3ByaW1hcnlfZGInOiB7J2NoZWNrc3VtJzogdSc3MzVjZDYyOTRkZjA4YmRmMjhlMmJhMTEzOTE1Y2EwNWExNTExMThlJywKICAgICAgICAgICAgICAgICAgICAgICAgJ2NoZWNrc3VtX29wZW4nOiB1J2JhNjM2Mzg2MzEyZTFiNTk3ZmM0ZmViMTgyZDA0YzA1OWIyYTc3ZDUnLAogICAgICAgICAgICAgICAgICAgICAgICAnY2hlY2tzdW1fb3Blbl90eXBlJzogdSdzaGExJywKICAgICAgICAgICAgICAgICAgICAgICAgJ2NoZWNrc3VtX3R5cGUnOiB1J3NoYTEnLAogICAgICAgICAgICAgICAgICAgICAgICAnZGJfdmVyc2lvbic6IDEwTCwKICAgICAgICAgICAgICAgICAgICAgICAgJ2xvY2F0aW9uX2hyZWYnOiB1J3JlcG9kYXRhLzczNWNkNjI5NGRmMDhiZGYyOGUyYmExMTM5MTVjYTA1YTE1MTExOGUtcHJpbWFyeS5zcWxpdGUuYnoyJywKICAgICAgICAgICAgICAgICAgICAgICAgJ3NpemUnOiAyNjAzTCwKICAgICAgICAgICAgICAgICAgICAgICAgJ3NpemVfb3Blbic6IDIzNTUyTCwKICAgICAgICAgICAgICAgICAgICAgICAgJ3RpbWVzdGFtcCc6IDEzNDc0NTk5MzFMfSwKICAgICAgICAgJ2ZpbGVsaXN0cyc6IHsnY2hlY2tzdW0nOiB1J2FlY2EwOGZjY2QzYzFhYjgzMWUxZGYxYTYyNzExYTQ0YmExOTIyYzknLAogICAgICAgICAgICAgICAgICAgICAgICdjaGVja3N1bV9vcGVuJzogdSc1MmQzMGFlMzE2MmNhODYzYzYzYzM0NWZmZGI3ZjBlMTBjMTQxNGE1JywKICAgICAgICAgICAgICAgICAgICAgICAnY2hlY2tzdW1fb3Blbl90eXBlJzogdSdzaGExJywKICAgICAgICAgICAgICAgICAgICAgICAnY2hlY2tzdW1fdHlwZSc6IHUnc2hhMScsCiAgICAgICAgICAgICAgICAgICAgICAgJ2RiX3ZlcnNpb24nOiAwTCwKICAgICAgICAgICAgICAgICAgICAgICAnbG9jYXRpb25faHJlZic6IHUncmVwb2RhdGEvYWVjYTA4ZmNjZDNjMWFiODMxZTFkZjFhNjI3MTFhNDRiYTE5MjJjOS1maWxlbGlzdHMueG1sLmd6JywKICAgICAgICAgICAgICAgICAgICAgICAnc2l6ZSc6IDQzMzEwTCwKICAgICAgICAgICAgICAgICAgICAgICAnc2l6ZV9vcGVuJzogNzM1MDg4TCwKICAgICAgICAgICAgICAgICAgICAgICAndGltZXN0YW1wJzogMTM0NzQ1OTkzMEx9LAogICAgICAgICAnZmlsZWxpc3RzX2RiJzogeydjaGVja3N1bSc6IHUnNDAzNGRjZWE3NmM5NGQzZjdhOTYxNjc3OTUzOWE0ZWE4Y2FjMjg4ZicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NoZWNrc3VtX29wZW4nOiB1Jzk0OWM2YjdiNjA1YjJiYzY2ODUyNjMwYzg0MWE1MDAzNjAzY2E1YjInLAogICAgICAgICAgICAgICAgICAgICAgICAgICdjaGVja3N1bV9vcGVuX3R5cGUnOiB1J3NoYTEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICdjaGVja3N1bV90eXBlJzogdSdzaGExJywKICAgICAgICAgICAgICAgICAgICAgICAgICAnZGJfdmVyc2lvbic6IDEwTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAnbG9jYXRpb25faHJlZic6IHUncmVwb2RhdGEvNDAzNGRjZWE3NmM5NGQzZjdhOTYxNjc3OTUzOWE0ZWE4Y2FjMjg4Zi1maWxlbGlzdHMuc3FsaXRlLmJ6MicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpemUnOiAyMjU3NUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpemVfb3Blbic6IDIwMTcyOEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpbWVzdGFtcCc6IDEzNDc0NTk5MzFMfSwKICAgICAgICAgJ290aGVyJzogeydjaGVja3N1bSc6IHUnYTg5NzdjZGFhMGIxNDMyMWQ5YWNmYWI4MWNlOGE4NWU4NjllZWUzMicsCiAgICAgICAgICAgICAgICAgICAnY2hlY2tzdW1fb3Blbic6IHUnNGI1Yjg4NzRmYjIzM2E2MjZiMDNiMzI2MGExYWEwOGRjZTkwZTgxYScsCiAgICAgICAgICAgICAgICAgICAnY2hlY2tzdW1fb3Blbl90eXBlJzogdSdzaGExJywKICAgICAgICAgICAgICAgICAgICdjaGVja3N1bV90eXBlJzogdSdzaGExJywKICAgICAgICAgICAgICAgICAgICdkYl92ZXJzaW9uJzogMEwsCiAgICAgICAgICAgICAgICAgICAnbG9jYXRpb25faHJlZic6IHUncmVwb2RhdGEvYTg5NzdjZGFhMGIxNDMyMWQ5YWNmYWI4MWNlOGE4NWU4NjllZWUzMi1vdGhlci54bWwuZ3onLAogICAgICAgICAgICAgICAgICAgJ3NpemUnOiA4MDdMLAogICAgICAgICAgICAgICAgICAgJ3NpemVfb3Blbic6IDE5MTBMLAogICAgICAgICAgICAgICAgICAgJ3RpbWVzdGFtcCc6IDEzNDc0NTk5MzBMfSwKICAgICAgICAgJ290aGVyX2RiJzogeydjaGVja3N1bSc6IHUnZmQ5Njk0MmM5MTk2Mjg4OTUxODc3Nzg2MzMwMDFjZmY2MWU4NzJiOCcsCiAgICAgICAgICAgICAgICAgICAgICAnY2hlY2tzdW1fb3Blbic6IHUnYzUyNjJmNjJiNmIzMzYwNzIyYjliMmZiNWQwYTkzMzVkMGE1MTExMicsCiAgICAgICAgICAgICAgICAgICAgICAnY2hlY2tzdW1fb3Blbl90eXBlJzogdSdzaGExJywKICAgICAgICAgICAgICAgICAgICAgICdjaGVja3N1bV90eXBlJzogdSdzaGExJywKICAgICAgICAgICAgICAgICAgICAgICdkYl92ZXJzaW9uJzogMTBMLAogICAgICAgICAgICAgICAgICAgICAgJ2xvY2F0aW9uX2hyZWYnOiB1J3JlcG9kYXRhL2ZkOTY5NDJjOTE5NjI4ODk1MTg3Nzc4NjMzMDAxY2ZmNjFlODcyYjgtb3RoZXIuc3FsaXRlLmJ6MicsCiAgICAgICAgICAgICAgICAgICAgICAnc2l6ZSc6IDE0MDdMLAogICAgICAgICAgICAgICAgICAgICAgJ3NpemVfb3Blbic6IDgxOTJMLAogICAgICAgICAgICAgICAgICAgICAgJ3RpbWVzdGFtcCc6IDEzNDc0NTk5MzFMfSwKICAgICAgICB9CgouLiBkYXRhOjogTFJSX1JQTU1EX1JFUE9NRAoKICAgIFJldHVybnMgYSBkaWN0IHJlcHJlc2VudGluZyBhIHJlcG9tZC54bWwgZmlsZSBvZiBkb3dubG9hZGVkCiAgICBycG1tZCByZXBvc2l0b3J5Ljo6CgogICAgICAgIHsncmV2aXNpb24nOiB1JzEzNDc0NTk5MzEnLAogICAgICAgICAncmVwb190YWdzJzogW10sCiAgICAgICAgICdjb250ZW50X3RhZ3MnOiBbXSwKICAgICAgICAgJ2Rpc3Ryb190YWdzJzogW10sCiAgICAgICAgICdyZWNvcmRzJzogeydwcmltYXJ5JzogeydjaGVja3N1bSc6IHUnNDU0M2FkNjJlNGQ4NjMzN2NkMTk0OTM0NmY5YWVjOTc2Yjg0N2I1OCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaGVja3N1bV9vcGVuJzogdSc2ODQ1N2NlYjhlMjBiZGEwMDRkNDZlMGE0ZGZhNGE2OWNlNzFkYjQ4JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NoZWNrc3VtX29wZW5fdHlwZSc6IHUnc2hhMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaGVja3N1bV90eXBlJzogdSdzaGExJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RiX3ZlcnNpb24nOiAwTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvY2F0aW9uX2hyZWYnOiB1J3JlcG9kYXRhLzQ1NDNhZDYyZTRkODYzMzdjZDE5NDkzNDZmOWFlYzk3NmI4NDdiNTgtcHJpbWFyeS54bWwuZ3onLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2l6ZSc6IDkzNkwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXplX29wZW4nOiAzMzg1TCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpbWVzdGFtcCc6IDEzNDc0NTk5MzBMfSwKICAgICAgICAgICAgICAgICAgICAgJ3ByaW1hcnlfZGInOiB7J2NoZWNrc3VtJzogdSc3MzVjZDYyOTRkZjA4YmRmMjhlMmJhMTEzOTE1Y2EwNWExNTExMThlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NoZWNrc3VtX29wZW4nOiB1J2JhNjM2Mzg2MzEyZTFiNTk3ZmM0ZmViMTgyZDA0YzA1OWIyYTc3ZDUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hlY2tzdW1fb3Blbl90eXBlJzogdSdzaGExJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NoZWNrc3VtX3R5cGUnOiB1J3NoYTEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGJfdmVyc2lvbic6IDEwTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvY2F0aW9uX2hyZWYnOiB1J3JlcG9kYXRhLzczNWNkNjI5NGRmMDhiZGYyOGUyYmExMTM5MTVjYTA1YTE1MTExOGUtcHJpbWFyeS5zcWxpdGUuYnoyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpemUnOiAyNjAzTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpemVfb3Blbic6IDIzNTUyTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpbWVzdGFtcCc6IDEzNDc0NTk5MzFMfX0sCiAgICAgICAgICAgICAgICAgICAgICdmaWxlbGlzdHMnOiB7J2NoZWNrc3VtJzogdSdhZWNhMDhmY2NkM2MxYWI4MzFlMWRmMWE2MjcxMWE0NGJhMTkyMmM5JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hlY2tzdW1fb3Blbic6IHUnNTJkMzBhZTMxNjJjYTg2M2M2M2MzNDVmZmRiN2YwZTEwYzE0MTRhNScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NoZWNrc3VtX29wZW5fdHlwZSc6IHUnc2hhMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NoZWNrc3VtX3R5cGUnOiB1J3NoYTEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYl92ZXJzaW9uJzogMEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvY2F0aW9uX2hyZWYnOiB1J3JlcG9kYXRhL2FlY2EwOGZjY2QzYzFhYjgzMWUxZGYxYTYyNzExYTQ0YmExOTIyYzktZmlsZWxpc3RzLnhtbC5neicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpemUnOiA0MzMxMEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpemVfb3Blbic6IDczNTA4OEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpbWVzdGFtcCc6IDEzNDc0NTk5MzBMfSwKICAgICAgICAgICAgICAgICAgICAgJ2ZpbGVsaXN0c19kYic6IHsnY2hlY2tzdW0nOiB1JzQwMzRkY2VhNzZjOTRkM2Y3YTk2MTY3Nzk1MzlhNGVhOGNhYzI4OGYnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaGVja3N1bV9vcGVuJzogdSc5NDljNmI3YjYwNWIyYmM2Njg1MjYzMGM4NDFhNTAwMzYwM2NhNWIyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hlY2tzdW1fb3Blbl90eXBlJzogdSdzaGExJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hlY2tzdW1fdHlwZSc6IHUnc2hhMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RiX3ZlcnNpb24nOiAxMEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvY2F0aW9uX2hyZWYnOiB1J3JlcG9kYXRhLzQwMzRkY2VhNzZjOTRkM2Y3YTk2MTY3Nzk1MzlhNGVhOGNhYzI4OGYtZmlsZWxpc3RzLnNxbGl0ZS5iejInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXplJzogMjI1NzVMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXplX29wZW4nOiAyMDE3MjhMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aW1lc3RhbXAnOiAxMzQ3NDU5OTMxTH0sCiAgICAgICAgICAgICAgICAgICAgICdvdGhlcic6IHsnY2hlY2tzdW0nOiB1J2E4OTc3Y2RhYTBiMTQzMjFkOWFjZmFiODFjZThhODVlODY5ZWVlMzInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NoZWNrc3VtX29wZW4nOiB1JzRiNWI4ODc0ZmIyMzNhNjI2YjAzYjMyNjBhMWFhMDhkY2U5MGU4MWEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NoZWNrc3VtX29wZW5fdHlwZSc6IHUnc2hhMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hlY2tzdW1fdHlwZSc6IHUnc2hhMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGJfdmVyc2lvbic6IDBMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvY2F0aW9uX2hyZWYnOiB1J3JlcG9kYXRhL2E4OTc3Y2RhYTBiMTQzMjFkOWFjZmFiODFjZThhODVlODY5ZWVlMzItb3RoZXIueG1sLmd6JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXplJzogODA3TCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXplX29wZW4nOiAxOTEwTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aW1lc3RhbXAnOiAxMzQ3NDU5OTMwTH0sCiAgICAgICAgICAgICAgICAgICAgICdvdGhlcl9kYic6IHsnY2hlY2tzdW0nOiB1J2ZkOTY5NDJjOTE5NjI4ODk1MTg3Nzc4NjMzMDAxY2ZmNjFlODcyYjgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NoZWNrc3VtX29wZW4nOiB1J2M1MjYyZjYyYjZiMzM2MDcyMmI5YjJmYjVkMGE5MzM1ZDBhNTExMTInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NoZWNrc3VtX29wZW5fdHlwZSc6IHUnc2hhMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hlY2tzdW1fdHlwZSc6IHUnc2hhMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGJfdmVyc2lvbic6IDEwTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb2NhdGlvbl9ocmVmJzogdSdyZXBvZGF0YS9mZDk2OTQyYzkxOTYyODg5NTE4Nzc3ODYzMzAwMWNmZjYxZTg3MmI4LW90aGVyLnNxbGl0ZS5iejInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpemUnOiAxNDA3TCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXplX29wZW4nOiA4MTkyTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aW1lc3RhbXAnOiAxMzQ3NDU5OTMxTH0sCiAgICAgICAgfQoKLi4gZGF0YTo6IExSUl9SUE1NRF9USU1FU1RBTVAgKExSUl9ZVU1fVElNRVNUQU1QKQoKICAgIFJldHVybnMgdGhlIGhpZ2hlc3QgdGltZXN0YW1wIGZyb20gYWxsIHJlY29yZHMgaW4gdGhlIHJlcG9tZC4KICAgIFNlZTogaHR0cDovL3l1bS5iYXNldXJsLm9yZy9naXR3ZWI/cD15dW0uZ2l0O2E9Y29tbWl0ZGlmZjtoPTU5ZDNkNjdmCgouLiBfZW5kY2Itc3RhdHVzZXMtbGFiZWw6CgpUcmFuc2ZlciBzdGF0dXNlcyBmb3IgZW5kY2Igb2YgOmNsYXNzOmB+LlBhY2thZ2VUYXJnZXRgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi4uIGRhdGE6OiBUUkFOU0ZFUl9TVUNDRVNTRlVMCi4uIGRhdGE6OiBUUkFOU0ZFUl9BTFJFQURZRVhJU1RTCi4uIGRhdGE6OiBUUkFOU0ZFUl9FUlJPUgoKQ2FsbGJhY2tzIHByb3RvdHlwZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0KClNvbWUgbGlicmVwbydzIGZ1bmN0aW9ucyBhbmQgY2xhc3NlcyBjYW4gdGFrZSBhIGNhbGxiYWNrcyBpbiB0aGVpciBhcmd1bWVudHMuClRoaXMgc2VjdGlvbiBjb250YWluIHRoZSBjYWxsYmFja3MgcHJvdG90eXBlcyBhbmQgZXhwbGFuYXRpb24gb2YgdGhlaXIKYXJndW1lbnRzLgoKQnkgZGVmYXVsdCBhbGwgY2FsbGJhY2tzIHNob3VsZCByZXR1cm4gKk5vbmUqICh0aGlzIGlzIGRlZmF1bHQgYmVoYXZpb3VyCm9mIHB5dGhvbiBmdW5jdGlvbiBpZiBpdCBkb2Vzbid0IGhhdmUgYSBzcGVjaWZpZWQgcmV0dXJuIHN0YXRlbWVudCAtCml0IHJldHVybnMgTm9uZSkuCgpCdXQgdGhlcmUgYXJlIHNvbWUgY2FsbGJhY2tzIHRoYXQgY2FuIHJldHVybiBhIHNwZWNpZmljIHZhbHVlcyBkZWZpbmVkCmluIDpyZWY6YGNhbGxiYWNrcy1yZXR1cm4tdmFsdWVzYC4KCi4uIF9jYWxsYmFjay1wcm9ncmVzc2NiLWxhYmVsOgoKUHJvZ3Jlc3MgY2FsbGJhY2sgLSBwcm9ncmVzc2NiCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKYGBwcm9ncmVzc2NiKHVzZXJkYXRhLCB0b3RhbHNpemUsIGRvd25sb2FkZWQpYGAKCkNhbGxiYWNrIGZyZXF1ZW50bHkgY2FsbGVkIGR1cmluZyBhIGRvd25sb2FkLgoKOnVzZXJkYXRhOiBVc2VyIHNwZWNpZmllZCBkYXRhIG9yICpOb25lKgo6dG90YWxzaXplOiBUb3RhbCBzaXplIChpbiBieXRlcykgb2YgdGhlIHRhcmdldCAoZmxvYXQpLgo6ZG93bmxvYWRlZDogQ3VycmVudGx5IGRvd25sb2FkZWQgc2l6ZSAoaW4gYnl0ZXMpLgo6cmV0dXJuczogVGhpcyBjYWxsYmFjayBjYW4gcmV0dXJuIHZhbHVlcyBmcm9tIDpyZWY6YGNhbGxiYWNrcy1yZXR1cm4tdmFsdWVzYAoKLi4gX2NhbGxiYWNrLWVuZGNiLWxhYmVsOgoKRW5kIGNhbGxiYWNrIC0gZW5kY2IKLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmBgZW5kY2IodXNlcmRhdGEsIHN0YXR1cywgbXNnKWBgCgpDYWxsYmFjayBjYWxsZWQgd2hlbiBhIHRyYW5zZmVyIGlzIGRvbmUgZWl0aGVyIHN1Y2Nlc3NmdWxseSBvciB1bnN1Y2Nlc3NmdWxseS4KCjp1c2VyZGF0YTogVXNlciBzcGVjaWZpZWQgZGF0YSBvciAqTm9uZSoKOnN0YXR1czogOnJlZjpgZW5kY2Itc3RhdHVzZXMtbGFiZWxgCjptc2c6IFN0cmluZyB3aXRoIGVycm9yIG1lc3NhZ2Ugb3IgKk5vbmUqCjpyZXR1cm5zOiBUaGlzIGNhbGxiYWNrIGNhbiByZXR1cm4gdmFsdWVzIGZyb20gOnJlZjpgY2FsbGJhY2tzLXJldHVybi12YWx1ZXNgCgouLiBfY2FsbGJhY2stbWlycm9yZmFpbHVyZWNiLWxhYmVsOgoKTWlycm9yIEZhaWx1cmUgQ2FsbGJhY2sgLSBtaXJyb3JmYWlsdXJlY2IKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmBgbWlycm9yZmFpbHVyZWNiKHVzZXJkYXRhLCBtc2csIHVybClgYAoKQ2FsbGJhY2sgY2FsbGVkIHdoZW4gYSB0cmFuc2ZlciBmYWlsZWQuCgo6dXNlcmRhdGE6IFVzZXIgc3BlY2lmaWVkIGRhdGEgb3IgKk5vbmUqCjptc2c6IFN0cmluZyB3aXRoIGVycm9yIG1lc3NhZ2UKOnVybDogU3RyaW5nIHdpdGggbWlycm9yIFVSTAo6cmV0dXJuczogVGhpcyBjYWxsYmFjayBjYW4gcmV0dXJuIHZhbHVlcyBmcm9tIDpyZWY6YGNhbGxiYWNrcy1yZXR1cm4tdmFsdWVzYAoKLi4gX2NhbGxiYWNrLWZhc3Rlc3RtaXJyb3JjYi1sYWJlbDoKCkZhc3Rlc3RtaXJyb3IgY2FsbGJhY2sgLSBmYXN0ZXN0bWlycm9yY2IKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKYGBmYXN0ZXN0bWlycm9yY2IodXNlcmRhdGEsIHN0YWdlLCBkYXRhKWBgCgo6dXNlcmRhdGE6IFVzZXIgc3BlY2lmaWVkIGRhdGEgb3IgKk5vbmUqCjpzdGFnZTogOnJlZjpgZmFzdGVzdG1pcnJvci1zdGFnZXMtY29uc3RhbnRzLWxhYmVsYAo6ZGF0YTogQ29udGVudCBvZiAqZGF0YSogaXMgZGlmZmVyZW50IGZvciBkaWZmZXJlbnQgc3RhZ2VzLgogICAgICAgU2VlIDpyZWY6YGZhc3Rlc3RtaXJyb3Itc3RhZ2VzLWNvbnN0YW50cy1sYWJlbGAKOnJldHVybnM6IFRoaXMgY2FsbGJhY2sgbXVzdCByZXR1cm4gKk5vbmUqIGVhY2ggb3RoZXIgdmFsdWUgd2lsbCBiZSBpZ25vcmVkLgoKCi4uIF9jYWxsYmFjay1oYW5kbGVtaXJyb3JmYWlsdXJlY2ItbGFiZWw6CgpIYW5kbGUgTWlycm9yIEZhaWx1cmUgQ2FsbGJhY2sgLSBobWZjYgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKYGBobWZjYih1c2VyZGF0YSwgbXNnLCB1cmwsIG1ldGFkYXRhKWBgCgpDYWxsYmFjayBjYWxsZWQgd2hlbiBhIGRvd25sb2FkIG9mIGEgbWV0YWRhdGEgZHVyaW5nCjptZXRoOmB+LkhhbmRsZS5wZXJmb3JtKClgIGZhaWxzLgoKOnVzZXJkYXRhOiBVc2VyIHNwZWNpZmllZCBkYXRhIG9yICpOb25lKgo6bXNnOiBTdHJpbmcgd2l0aCBlcnJvciBtZXNzYWdlCjp1cmw6IFN0cmluZyB3aXRoIG1pcnJvciBVUkwKOm1ldGFkYXRhOiBTdHJpbmcgd2l0aCBtZXRhZGF0YSBuYW1lICgicHJpbWFyeSIsICJmaWxlbGlzdHMiLCAuLi4pCjpyZXR1cm5zOiBUaGlzIGNhbGxiYWNrIGNhbiByZXR1cm4gdmFsdWVzIGZyb20gOnJlZjpgY2FsbGJhY2tzLXJldHVybi12YWx1ZXNgCgouLiBfY2FsbGJhY2tzLXJldHVybi12YWx1ZXM6CgpDYWxsYmFja3MgcmV0dXJuIHZhbHVlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKRWFjaCBjYWxsYmFjayBjYW4gc2FmZWx5IHJldHVybiBgYE5vbmVgYCAodGhpcyBpcyBpbXBsaWNpdCByZXR1cm4gdmFsdWUKd2hlbiBubyByZXR1cm4gc3RhdGVtZW50IGlzIGRlZmluZWQpLgoKYGByZXR1cm4gTm9uZWBgIGlzIGVxdWl2YWxlbnQgZm9yIGBgcmV0dXJuIGxpYnJlcG8uQ0JfT0tgYC4KCi4uIGRhdGE6OiBDQl9PSwoKICAgIEV2ZXJ5dGhpbmcgaXMgT0sKCi4uIGRhdGE6OiBDQl9BQk9SVAoKICAgIEFib3J0IGp1c3QgdGhlIGN1cnJlbnQgdHJhbnNmZXIuCiAgICBOb3RlOiBJZiBmYWlsZmFzdCBvcHRpb24gZm9yIHRoZSBkb3dubG9hZGluZyBpcyBlbmFibGVkLAogICAgdGhlIHdob2xlIGRvd25sb2FkaW5nIHdpbGwgYmUgYWJvcnRlZC4KCi4uIGRhdGE6OiBDQl9FUlJPUgoKICAgIEFib3J0IHRoZSB3aG9sZSBkb3dubG9hZGluZyAoYWxsIHRyYW5zZmVycykuCiAgICAoTm90ZTogVGhpcyBjb2RlIGlzIGF1dG9tYXRpY2FsbHkgaW50ZXJuYWxseSByZXR1cm5lZCB3aGVuCiAgICBhbiBleGNlcHRpb24gaXMgcmFpc2VkIGluIHRoZSBjYWxsYmFjay4pCgouLiBfY2hlY2tzdW0tY29uc3RhbnRzLWxhYmVsOgoKQ2hlY2tzdW0gKGhhc2gpIHR5cGUgY29uc3RhbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLi4gZGF0YTo6IE1ENSAoQ0hFQ0tTVU1fTUQ1KQouLiBkYXRhOjogU0hBMSAoQ0hFQ0tTVU1fU0hBMSkKLi4gZGF0YTo6IFNIQTIyNCAoQ0hFQ0tTVU1fU0hBMjI0KQouLiBkYXRhOjogU0hBMjU2IChDSEVDS1NVTV9TSEEyNTYpCi4uIGRhdGE6OiBTSEEzODQgKENIRUNLU1VNX1NIQTM4NCkKLi4gZGF0YTo6IFNIQTUxMiAoQ0hFQ0tTVU1fU0hBNTEyKQoK6QAAAABOWglfU0VOVElORUxaA0xSX+kDAAAAWgRMUk9f6QQAAABaBExSSV9aBExSUl9aDExSX0NIRUNLU1VNX+kMAAAAWgdwcmltYXJ5WglmaWxlbGlzdHPaBW90aGVyWgpwcmltYXJ5X2RiWgxmaWxlbGlzdHNfZGJaCG90aGVyX2RiWgtwcmVzdG9kZWx0YWMBAAAAAAAAAAEAAAADAAAAQwAAAHMUAAAAfABqAIMAfQB0AWoCfAB0A4MCUwApAXr0CiAgICBDb252ZXJ0IHN0cmluZyB3aXRoIG5hbWUgb2YgaGFzaCBmdW5jdGlvbiB0byBudW1lcmljIHZhbHVlCiAgICB0aGF0IHJlcHJlc2VudHMgdGhlIGhhc2ggaW4gY3JlYXRlcmVwb19jLgoKICAgIDpwYXJhbSBuYW1lOiBDaGVja3N1bSBuYW1lIChlLmcuICJzaGEyNTYiLCAic2hhNTEyIiwgLi4uKQogICAgOnJldHVybnM6IEludGVnZXIgdmFsdWUgKGZyb20gOnJlZjpgY2hlY2tzdW0tY29uc3RhbnRzLWxhYmVsYCkKICAgICkE2gVsb3dlctoYX0NIRUNLU1VNX1NUUl9UT19WQUxfTUFQ2gNnZXTaEENIRUNLU1VNX1VOS05PV04pAdoEbmFtZakAcgsAAAD6IC91c3IvbGliNjQvcHl0aG9uMy42L19faW5pdF9fLnB52hRjaGVja3N1bV9zdHJfdG9fdHlwZY4EAABzBAAAAAAICAFyDQAAAGMAAAAAAAAAAAAAAAAGAAAAQAAAAHMWAAAAZQBaAWQAWgJkBGQCZAOEAVoDZAFTACkF2g5NZXRhZGF0YVRhcmdldE5jBwAAAAAAAAAHAAAACAAAAEMAAABzHAAAAHQAagFqAnwAfAF8AnwDfAR8BXwGgwcBAGQAUwApAU4pA9oIX2xpYnJlcG9yDgAAANoIX19pbml0X18pB9oEc2VsZtoGaGFuZGxl2gZjYmRhdGHaCnByb2dyZXNzY2LaD21pcnJvcmZhaWx1cmVjYtoFZW5kY2JaDGdudXBnaG9tZWRpcnILAAAAcgsAAAByDAAAAHIQAAAAmwQAAHMCAAAAAAF6F01ldGFkYXRhVGFyZ2V0Ll9faW5pdF9fKQZOTk5OTk4pBNoIX19uYW1lX1/aCl9fbW9kdWxlX1/aDF9fcXVhbG5hbWVfX3IQAAAAcgsAAAByCwAAAHILAAAAcgwAAAByDgAAAJkEAABzAgAAAAgCcg4AAABjAAAAAAAAAAAAAAAADQAAAEAAAABzNAAAAGUAWgFkAFoCZAFaA2QCZQRkAmQDZAJkBGQCZAJkAmQCZAJkA2QDZg1kBWQGhAFaBWQCUwApB9oNUGFja2FnZVRhcmdldHpnCiAgICBSZXByZXNlbnQgYSBzaW5nbGUgcGFja2FnZSB0aGF0IHdpbGwgYmUgZG93bmxvYWRlZCBieQogICAgOmZ1bmM6YH5saWJyZXBvLmRvd25sb2FkX3BhY2thZ2VzYC4KICAgIE5yAQAAAEZjDwAAAAAAAAAPAAAAEAAAAEMAAABzLAAAAHQAagFqAnwAfAp8AXwCfAN8BHwFfAZ8B3wIfAl8C3wMfA18DoMPAQBkAVMAKQJhXwUAAAogICAgICAgIDpwYXJhbSByZWxhdGl2ZV91cmw6IFRhcmdldCBVUkwuIElmICpoYW5kbGUqIG9yICpiYXNlX3VybCogc3BlY2lmaWVkLAogICAgICAgICAgICB0aGUgKnVybCogY2FuIGJlIChhbmQgbG9naWNhbGx5IHNob3VsZCBiZSkgb25seSBhIHJlbGF0aXZlIHBhcnQgb2YgcGF0aC4KICAgICAgICA6cGFyYW0gZGVzdDogRGVzdGluYXRpb24gZmlsZW5hbWUgb3IgZGlyZWN0b3J5IChmaWxlIGJhc2VuYW1lIHdpbGwKICAgICAgICAgICAgYmUgZGVyaXZlZCBmcm9tIHRoZSByZWxhdGl2ZV91cmwpLiBJZiAqTm9uZSogY3VycmVudAogICAgICAgICAgICB3b3JraW5nIGRpcmVjdG9yeSB3aWxsIGJlIHVzZWQuCiAgICAgICAgOnBhcmFtIGNoZWNrc3VtX3R5cGU6IDpyZWY6YGNoZWNrc3VtLWNvbnN0YW50cy1sYWJlbGAKICAgICAgICA6cGFyYW0gY2hlY2tzdW06IEV4cGVjdGVkIGNoZWNrc3VtIHZhbHVlLgogICAgICAgIDpwYXJhbSBleHBlY3RlZHNpemU6IEV4cGVjdGVkIHNpemUgb2YgdGhlIHRhcmdldC4gSWYgc2VydmVyIHJlcG9ydHMKICAgICAgICAgICAgZGlmZmVyZW50IHNpemUsIHRoZW4gZG93bmxvYWQgd29uJ3QgYmUgcGVyZm9ybWVkLgogICAgICAgIDpwYXJhbSBiYXNlX3VybDogQmFzZSBwYXJ0IG9mIFVSTAogICAgICAgIDpwYXJhbSByZXN1bWU6IElmIFRydWUgdGhlbiBkb3dubG9hZGVyIHdpbGwgdHJ5IHRvIHJlc3VtZSBkb3dubG9hZAogICAgICAgICAgICBpZiB0aGUgZGVzdGluYXRpb24gZmlsZSBhbHJlYWR5IGV4aXN0cy4gSWYgdGhlIGZpbGUgZG9lc24ndCBleGlzdAogICAgICAgICAgICB5ZXQsIGl0IHdpbGwgYmUgZG93bmxvYWRlZC4KICAgICAgICA6cGFyYW0gcHJvZ3Jlc3NjYjogOnJlZjpgY2FsbGJhY2stcHJvZ3Jlc3NjYi1sYWJlbGAKICAgICAgICA6cGFyYW0gY2JkYXRhOiBVc2VyIGRhdGEgZm9yIHRoZSBjYWxsYmFjay4KICAgICAgICA6cGFyYW0gaGFuZGxlOiA6Y2xhc3M6YH5saWJyZXBvLkhhbmRsZWAKICAgICAgICA6cGFyYW0gZW5kY2I6IDpyZWY6YGNhbGxiYWNrLWVuZGNiLWxhYmVsYAogICAgICAgIDpwYXJhbSBtaXJyb3JmYWlsdXJlY2I6IFNlZSA6cmVmOmBjYWxsYmFjay1taXJyb3JmYWlsdXJlY2ItbGFiZWxgCiAgICAgICAgOnBhcmFtIGJ5dGVyYW5nZXN0YXJ0OiBTdGFydCBkb3dubG9hZGluZyBmcm9tIHRoZSBzcGVjaWZpZWQgYnl0ZS4KICAgICAgICA6cGFyYW0gYnl0ZXJhbmdlZW5kOiBTdG9wIGRvd25sb2FkaW5nIGF0IHRoZSBzcGVjaWZpZWQgYnl0ZS4KICAgICAgICAgICAgKk5vdGU6IElmIHRoZSBieXRlcmFuZ2VlbmQgaXMgbGVzcyBvciBlcXVhbCB0byBieXRlcmFuZ2VzdGFydCwKICAgICAgICAgICAgdGhlbiBpdCBpcyBpZ25vcmVkISoKICAgICAgICBOKQNyDwAAAHIaAAAAchAAAAApD3IRAAAA2gxyZWxhdGl2ZV91cmzaBGRlc3TaDWNoZWNrc3VtX3R5cGXaCGNoZWNrc3Vt2gxleHBlY3RlZHNpemXaCGJhc2VfdXJs2gZyZXN1bWVyFAAAAHITAAAAchIAAAByFgAAAHIVAAAAWg5ieXRlcmFuZ2VzdGFydFoMYnl0ZXJhbmdlZW5kcgsAAAByCwAAAHIMAAAAchAAAACkBAAAcwoAAAAAHA4BBgEIAQYBehZQYWNrYWdlVGFyZ2V0Ll9faW5pdF9fKQZyFwAAAHIYAAAAchkAAADaB19fZG9jX19yCQAAAHIQAAAAcgsAAAByCwAAAHILAAAAcgwAAAByGgAAAJ4EAABzCgAAAAgEBAIEAQgBCAFyGgAAAGMAAAAAAAAAAAAAAAAGAAAAQAAAAHNYAAAAZQBaAWQAWgJkAVoDZAJkA4QAWgRkBGQFhABaBWQGZAeEAFoGZAhkCYQAWgdkCmUIZApkC2QKZAtmBmQMZA2EAVoJZBJkDmQPhAFaCmQQZBGEAFoLZApTACkT2gZIYW5kbGVh+hIAAExpYnJlcG8gaGFuZGxlIGNsYXNzLgogICAgSGFuZGxlIGhvbGQgaW5mb3JtYXRpb24gYWJvdXQgYSByZXBvc2l0b3J5IGFuZCBjb25maWd1cmF0aW9uIGZvcgogICAgZG93bmxvYWRpbmcgZnJvbSB0aGUgcmVwb3NpdG9yeS4KCiAgICAqKkF0dHJpYnV0ZXM6KioKCiAgICAuLiBhdHRyaWJ1dGU6OiB1cGRhdGU6CgogICAgICAgIFNlZTogOmRhdGE6YC5MUk9fVVBEQVRFYAoKICAgIC4uIGF0dHJpYnV0ZTo6IHVybHM6CgogICAgICAgIFNlZTogOmRhdGE6YC5MUk9fVVJMU2AKCiAgICAuLiBhdHRyaWJ1dGU6OiBtaXJyb3JsaXN0OgoKICAgICAgICBTZWU6IDpkYXRhOmAuTFJPX01JUlJPUkxJU1RgCgogICAgLi4gYXR0cmlidXRlOjogbWlycm9ybGlzdHVybDoKCiAgICAgICAgU2VlOiA6ZGF0YTpgLkxST19NSVJST1JMSVNUVVJMYAoKICAgIC4uIGF0dHJpYnV0ZTo6IG1ldGFsaW5rdXJsOgoKICAgICAgICBTZWU6IDpkYXRhOmAuTFJPX01FVEFMSU5LVVJMYAoKICAgIC4uIGF0dHJpYnV0ZTo6IGxvY2FsOgoKICAgICAgICBTZWU6IDpkYXRhOmAuTFJPX0xPQ0FMYAoKICAgIC4uIGF0dHJpYnV0ZTo6IGh0dHBhdXRoOgoKICAgICAgICBTZWU6IDpkYXRhOmAuTFJPX0hUVFBBVVRIYAoKICAgIC4uIGF0dHJpYnV0ZTo6IHVzZXJwd2Q6CgogICAgICAgIFNlZTogOmRhdGE6YC5MUk9fVVNFUlBXRGAKCiAgICAuLiBhdHRyaWJ1dGU6OiBwcm94eToKCiAgICAgICAgU2VlOiA6ZGF0YTpgLkxST19QUk9YWWAKCiAgICAuLiBhdHRyaWJ1dGU6OiBwcm94eXBvcnQ6CgogICAgICAgIFNlZTogOmRhdGE6YC5MUk9fUFJPWFlQT1JUYAoKICAgIC4uIGF0dHJpYnV0ZTo6IHByb3h5dHlwZToKCiAgICAgICAgU2VlOiA6ZGF0YTpgLkxST19QUk9YWVRZUEVgCgogICAgLi4gYXR0cmlidXRlOjogcHJveHlhdXRoOgoKICAgICAgICBTZWU6IDpkYXRhOmAuTFJPX1BST1hZQVVUSGAKCiAgICAuLiBhdHRyaWJ1dGU6OiBwcm94eXVzZXJwd2Q6CgogICAgICAgIFNlZTogOmRhdGE6YC5MUk9fUFJPWFlVU0VSUFdEYAoKICAgIC4uIGF0dHJpYnV0ZTo6IHByb2dyZXNzY2I6CgogICAgICAgIFNlZTogOmRhdGE6YC5MUk9fUFJPR1JFU1NDQmAKCiAgICAuLiBhdHRyaWJ1dGU6OiBwcm9ncmVzc2RhdGE6CgogICAgICAgIFNlZTogOmRhdGE6YC5MUk9fUFJPR1JFU1NEQVRBYAoKICAgIC4uIGF0dHJpYnV0ZTo6IG1heHNwZWVkOgoKICAgICAgICBTZWU6IDpkYXRhOmAuTFJPX01BWFNQRUVEYAoKICAgIC4uIGF0dHJpYnV0ZTo6IGRlc3RkaXI6CgogICAgICAgIFNlZTogOmRhdGE6YC5MUk9fREVTVERJUmAKCiAgICAuLiBhdHRyaWJ1dGU6OiByZXBvdHlwZToKCiAgICAgICAgU2VlOiA6ZGF0YTpgLkxST19SRVBPVFlQRWAKCiAgICAuLiBhdHRyaWJ1dGU6OiBjb25uZWN0dGltZW91dDoKCiAgICAgICAgU2VlOiA6ZGF0YTpgLkxST19DT05ORUNUVElNRU9VVGAKCiAgICAuLiBhdHRyaWJ1dGU6OiBpZ25vcmVtaXNzaW5nOgoKICAgICAgICBTZWU6IDpkYXRhOmAuTFJPX0lHTk9SRU1JU1NJTkdgCgogICAgLi4gYXR0cmlidXRlOjogaW50ZXJydXB0aWJsZToKCiAgICAgICAgU2VlOiA6ZGF0YTpgLkxST19JTlRFUlJVUFRJQkxFYAoKICAgIC4uIGF0dHJpYnV0ZTo6IHVzZXJhZ2VudDoKCiAgICAgICAgU2VlOiA6ZGF0YTpgLkxST19VU0VSQUdFTlRgCgogICAgLi4gYXR0cmlidXRlOjogZmV0Y2htaXJyb3JzOgoKICAgICAgICBTZWU6IDpkYXRhOmAuTFJPX0ZFVENITUlSUk9SU2AKCiAgICAuLiBhdHRyaWJ1dGU6OiBtYXhtaXJyb3J0cmllczoKCiAgICAgICAgU2VlOiA6ZGF0YTpgLkxST19NQVhNSVJST1JUUklFU2AKCiAgICAuLiBhdHRyaWJ1dGU6OiBtYXhwYXJhbGxlbGRvd25sb2FkczoKCiAgICAgICAgU2VlOiA6ZGF0YTpgLkxST19NQVhQQVJBTExFTERPV05MT0FEU2AKCiAgICAuLiBhdHRyaWJ1dGU6OiBtYXhkb3dubG9hZHNwZXJtaXJyb3I6CgogICAgICAgIFNlZTogOmRhdGE6YC5MUk9fTUFYRE9XTkxPQURTUEVSTUlSUk9SYAoKICAgIC4uIGF0dHJpYnV0ZTo6IHZhcnN1YjoKCiAgICAgICAgU2VlOiA6ZGF0YTpgLkxST19WQVJTVUJgCgogICAgLi4gYXR0cmlidXRlOjogZmFzdGVzdG1pcnJvcjoKCiAgICAgICAgU2VlOiA6ZGF0YTpgLkxST19GQVNURVNUTUlSUk9SYAoKICAgIC4uIGF0dHJpYnV0ZTo6IGZhc3Rlc3RtaXJyb3JjYWNoZToKCiAgICAgICAgU2VlOiA6ZGF0YTpgLkxST19GQVNURVNUTUlSUk9SQ0FDSEVgCgogICAgLi4gYXR0cmlidXRlOjogZmFzdGVzdG1pcnJvcm1heGFnZToKCiAgICAgICAgU2VlOiA6ZGF0YTpgLkxST19GQVNURVNUTUlSUk9STUFYQUdFYAoKICAgIC4uIGF0dHJpYnV0ZTo6IGZhc3Rlc3RtaXJyb3JjYjoKCiAgICAgICAgU2VlOiA6ZGF0YTpgLkxST19GQVNURVNUTUlSUk9SQ0JgCgogICAgLi4gYXR0cmlidXRlOjogZmFzdGVzdG1pcnJvcmRhdGE6CgogICAgICAgIFNlZTogOmRhdGE6YC5MUk9fRkFTVEVTVE1JUlJPUkRBVEFgCgogICAgLi4gYXR0cmlidXRlOjogbG93c3BlZWR0aW1lOgoKICAgICAgICBTZWU6IDpkYXRhOmAuTFJPX0xPV1NQRUVEVElNRWAKCiAgICAuLiBhdHRyaWJ1dGU6OiBsb3dzcGVlZGxpbWl0OgoKICAgICAgICBTZWU6IDpkYXRhOmAuTFJPX0xPV1NQRUVETElNSVRgCgogICAgLi4gYXR0cmlidXRlOjogZ3BnY2hlY2s6CgogICAgICAgIFNlZTogOmRhdGE6YC5MUk9fR1BHQ0hFQ0tgCgogICAgLi4gYXR0cmlidXRlOjogY2hlY2tzdW06CgogICAgICAgIFNlZTogOmRhdGE6YC5MUk9fQ0hFQ0tTVU1gCgogICAgLi4gYXR0cmlidXRlOjogcnBtbWRkbGlzdDoKCiAgICAgICAgU2VlOiA6ZGF0YTpgLkxST19SUE1NRERMSVNUYAoKICAgIC4uIGF0dHJpYnV0ZTo6IHl1bWRsaXN0OgoKICAgICAgICBTZWU6IDpkYXRhOmAuTFJPX1lVTURMSVNUYAoKICAgIC4uIGF0dHJpYnV0ZTo6IHl1bXNsaXN0OgoKICAgICAgICBTZWU6IDpkYXRhOmAuTFJPX1lVTVNMSVNUYAoKICAgIC4uIGF0dHJpYnV0ZTo6IHJwbW1kYmxpc3Q6CgogICAgICAgIFNlZTogOmRhdGE6YC5MUk9fUlBNTURCTElTVGAKCiAgICAuLiBhdHRyaWJ1dGU6OiB5dW1ibGlzdDoKCiAgICAgICAgU2VlOiA6ZGF0YTpgLkxST19ZVU1CTElTVGAKCiAgICAuLiBhdHRyaWJ1dGU6OiBobWZjYjoKCiAgICAgICAgU2VlOiA6ZGF0YTpgLkxST19ITUZDQmAKCiAgICAuLiBhdHRyaWJ1dGU6OiBzc2x2ZXJpZnlwZWVyOgoKICAgICAgICBTZWUgOmRhdGE6YC5MUk9fU1NMVkVSSUZZUEVFUmAKCiAgICAuLiBhdHRyaWJ1dGU6OiBzc2x2ZXJpZnlzdGF0dXM6CgogICAgICAgIFNlZSA6ZGF0YTpgLkxST19TU0xWRVJJRllTVEFUVVNgCgogICAgLi4gYXR0cmlidXRlOjogc3NsdmVyaWZ5aG9zdDoKCiAgICAgICAgU2VlIDpkYXRhOmAuTFJPX1NTTFZFUklGWUhPU1RgCgogICAgLi4gYXR0cmlidXRlOjogc3NsY2xpZW50Y2VydDoKCiAgICAgICAgU2VlIDpkYXRhOmAuTFJPX1NTTENMSUVOVENFUlRgCgogICAgLi4gYXR0cmlidXRlOjogc3NsY2xpZW50a2V5OgoKICAgICAgICBTZWUgOmRhdGE6YC5MUk9fU1NMQ0xJRU5US0VZYAoKICAgIC4uIGF0dHJpYnV0ZTo6IHNzbGNhY2VydDoKCiAgICAgICAgU2VlIDpkYXRhOmAuTFJPX1NTTENBQ0VSVGAKCiAgICAuLiBhdHRyaWJ1dGU6OiBwcm94eV9zc2x2ZXJpZnlwZWVyOgoKICAgICAgICBTZWUgOmRhdGE6YC5MUk9fUFJPWFlfU1NMVkVSSUZZUEVFUmAKCiAgICAuLiBhdHRyaWJ1dGU6OiBwcm94eV9zc2x2ZXJpZnlob3N0OgoKICAgICAgICBTZWUgOmRhdGE6YC5MUk9fUFJPWFlfU1NMVkVSSUZZSE9TVGAKCiAgICAuLiBhdHRyaWJ1dGU6OiBwcm94eV9zc2xjbGllbnRjZXJ0OgoKICAgICAgICBTZWUgOmRhdGE6YC5MUk9fUFJPWFlfU1NMQ0xJRU5UQ0VSVGAKCiAgICAuLiBhdHRyaWJ1dGU6OiBwcm94eV9zc2xjbGllbnRrZXk6CgogICAgICAgIFNlZSA6ZGF0YTpgLkxST19QUk9YWV9TU0xDTElFTlRLRVlgCgogICAgLi4gYXR0cmlidXRlOjogcHJveHlfc3NsY2FjZXJ0OgoKICAgICAgICBTZWUgOmRhdGE6YC5MUk9fUFJPWFlfU1NMQ0FDRVJUYAoKICAgIC4uIGF0dHJpYnV0ZTo6IGlwcmVzb2x2ZToKCiAgICAgICAgU2VlIDpkYXRhOmAuTFJPX0lQUkVTT0xWRWAKCiAgICAuLiBhdHRyaWJ1dGU6OiBhbGxvd2VkbWlycm9yZmFpbHVyZXM6CgogICAgICAgIFNlZSA6ZGF0YTpgLkxST19BTExPV0VETUlSUk9SRkFJTFVSRVNgCgogICAgLi4gYXR0cmlidXRlOjogYWRhcHRpdmVtaXJyb3Jzb3J0aW5nOgoKICAgICAgICBTZWUgOmRhdGE6YC5MUk9fQURBUFRJVkVNSVJST1JTT1JUSU5HYAoKICAgIC4uIGF0dHJpYnV0ZTo6IGdudXBnaG9tZWRpcjoKCiAgICAgICAgU2VlIDpkYXRhOmAuTFJPX0dOVVBHSE9NRURJUmAKCiAgICAuLiBhdHRyaWJ1dGU6OiBmYXN0ZXN0bWlycm9ydGltZW91dDoKCiAgICAgICAgU2VlIDpkYXRhOmAuTFJPX0ZBU1RFU1RNSVJST1JUSU1FT1VUYAoKICAgIC4uIGF0dHJpYnV0ZTo6IGh0dHBoZWFkZXI6CgogICAgICAgIFNlZSA6ZGF0YTpgLkxST19IVFRQSEVBREVSYAoKICAgIC4uIGF0dHJpYnV0ZTo6IG9mZmxpbmU6CgogICAgICAgIFNlZSA6ZGF0YTpgLkxST19PRkZMSU5FYAoKICAgIC4uIGF0dHJpYnV0ZTo6IGh0dHBhdXRobWV0aG9kcwoKICAgICAgICBTZWUgOmRhdGE6YC5MUk9fSFRUUEFVVEhNRVRIT0RTYAoKICAgIC4uIGF0dHJpYnV0ZTo6IHByb3h5YXV0aG1ldGhvZHMKCiAgICAgICAgU2VlIDpkYXRhOmAuTFJPX1BST1hZQVVUSE1FVEhPRFNgCgogICAgLi4gYXR0cmlidXRlOjogZnRwdXNlZXBzdgoKICAgICAgICBTZWUgOmRhdGE6YC5MUk9fRlRQVVNFRVBTVmAKCiAgICAuLiBhdHRyaWJ1dGU6OiBwcmVzZXJ2ZXRpbWUKCiAgICAgICAgU2VlIDpkYXRhOmAuTFJPX1BSRVNFUlZFVElNRWAKCiAgICBjAwAAAAAAAAAEAAAABAAAAEMAAABzSgAAAHwBdABrAnI2dAF8AnQCgwIMAHI2fAJkAWsJcjZkAmQBbAN9A3wDagRkA3QFgwIBAHwCZwF9AnQGagdqCHwA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IDpmdW5jOmB+bGlicmVwby5kb3dubG9hZF9wYWNrYWdlc2AKICAgICAgICBpbnN0ZWFkLgoKICAgICAgICBEb3dubG9hZCBwYWNrYWdlIGZyb20gdGhlIHJlcG9zaXRvcnkgc3BlY2lmaWVkIGluIHRoZQogICAgICAgIDpDbGFzczpgfmxpYnJlcG8uSGFuZGxlYC4gSWYgKmJhc2VfdXJsKiBpcyBzcGVjaWZpZWQsCiAgICAgICAgdXJscyBhbmQgbWlycm9ycyBzcGVjaWZpZWQgaW4gdGhlIEhhbmRsZSBhcmUgaWdub3JlZC4KCiAgICAgICAgTm90ZTogSWYgcmVzdW1lIGlzIFRydWUgYW5kIGNoZWNrc3VtX3R5cGUgYW5kIGNoZWNrc3VtIGFyZSBzcGVjaWZpZWQKICAgICAgICBhbmQgZG93bmxvYWRlZCBwYWNrYWdlIGFscmVhZHkgZXhpc3RzLCB0aGVuIGNoZWNrc3VtIG9mIHRoZQogICAgICAgIGV4aXN0aW5nIHBhY2thZ2UgaXMgY2hlY2tlZC4gSWYgY2hlY2tzdW0gbWF0Y2hlcywgdGhlbiBubyBkb3dubG9hZGluZwogICAgICAgIGlzIGRvbmUgYW5kIGV4Y2VwdGlvbiB3aXRoIExSRV9BTFJFQURZRE9XTkxPQURFRCByZXR1cm4gY29kZSBpcyByYWlzZWQuCgogICAgICAgIDpwYXJhbSB1cmw6IFJlbGF0aXZlIHBhdGggdG8gdGhlIHBhY2thZ2UgaW4gdGhlIHJlcG9zaXRvcnkuCiAgICAgICAgOnBhcmFtIGRlc3Q6IERlc3RpbmF0aW9uIGZvciBwYWNrYWdlLiBDb3VsZCBiZSBhYnNvbHV0ZS9yZWxhdGl2ZQogICAgICAgICAgICAgICAgICAgICBwYXRoIHRvIGRpcmVjdG9yeSBvciBmaWxlbmFtZS4KICAgICAgICA6cGFyYW0gY2hlY2tzdW1fdHlwZTogOnJlZjpgY2hlY2tzdW0tY29uc3RhbnRzLWxhYmVsYC4KICAgICAgICA6cGFyYW0gY2hlY2tzdW06IENoZWNrc3VtIHZhbHVlLgogICAgICAgIDpwYXJhbSBleHBlY3RlZHNpemU6IEV4cGVjdGVkIHNpemUgb2YgdGhlIGZpbGUuIElmIHNlcnZlciByZXBvcnRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW50IHNpemUsIHRoZW4gbm8gZG93bmxvYWQgaXMgcHJlZm9ybWVkLgogICAgICAgIDpwYXJhbSBiYXNlX3VybDogSW5zdGVhZCBvZiByZXBvc2l0b3JpZXMgc3BlY2lmaWVkIGluIGBgSGFuZGxlYGAKICAgICAgICAgICAgICAgICAgICAgICAgIHVzZSByZXBvc2l0b3J5IG9uIHRoaXMgdXJsLgogICAgICAgIDpwYXJhbSByZXN1bWU6IGBgVHJ1ZWBgIGVuYWJsZXMgcmVzdW1lLiBSZXN1bWUgbWVhbnMgdGhhdCBpZiBsb2NhbAogICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uIGZpbGUgZXhpc3RzLCBqdXN0IHRyeSB0bwogICAgICAgICAgICAgICAgICAgICAgIHJlc3VtZSBkb3dubG9hZCwgaWYgbm90IG9yIHJlc3VtZSBkb3dubG9hZCBmYWlsZWQKICAgICAgICAgICAgICAgICAgICAgICB0aGFuIGRvd25sb2FkIHdob2xlIGZpbGUgYWdhaW4uCgogICAgICAgIEV4YW1wbGU6OgoKICAgICAgICAgICAgaCA9IGxpYnJlcG8uSGFuZGxlKCkKICAgICAgICAgICAgaC5zZXRvcHQobGlicmVwby5MUk9fVVJMUywgWyJodHRwOi8vZnRwLmxpbnV4Lm5jc3UuZWR1L3B1Yi9mZWRvcmEvbGludXgvcmVsZWFzZXMvMTcvRXZlcnl0aGluZy9pMzg2L29zLyJdKQogICAgICAgICAgICBoLnNldG9wdChsaWJyZXBvLkxST19SRVBPVFlQRSwgbGlicmVwby5MUl9ZVU1SRVBPKQogICAgICAgICAgICBoLmRvd25sb2FkKCJQYWNrYWdlcy9zL3NsLTMuMDMtMTIuZmMxNy5pNjg2LnJwbSIsCiAgICAgICAgICAgICAgICBjaGVja3N1bT0iMGVjODUzNWQwZmMwMGI0OTdkOGFlZjQ5MWMzZjhiMzk1NWYyZDg0ODQ2MzI1ZWU0NDg1MWQ5ZGU4YTM2ZDEyYyIsCiAgICAgICAgICAgICAgICBjaGVja3N1bV90eXBl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ZCBtZXRhZGF0YS4gKmxpc3QqIGlzIGEgbGlzdCBvZgogICAgOmNsYXNzOmB+bGlicmVwby5NZXRhZGF0YVRhcmdldGAgb2JqZWN0cy4KICAgIEV4Y2VwdGlvbiBpcyByYWlzZWQgb25seSBpZiBhIG5vbnJlY292ZXJhYmxlCiAgICBlcnJvciByZWxhdGVkIHRvIHRoZSBmdW5jdGlvbiBpdHNlbGYgaXMgbWVldAogICAgKEVycm9ycyByZWxhdGVkIHRvIGluZGl2aWR1YWwgZG93bmxvYWRzIGFyZQogICAgcmVwb3J0ZWQgdmlhIGNvcnJlc3BvbmRpbmcgTWV0YWRhdGFUYXJnZXQgb2JqZWN0cykKCiAgICA6cGFyYW0gbGlzdDogTGlzdCBvZiA6Y2xhc3M6YH4ubGlicmVwby5NZXRhZGF0YVRhcmdldGAgb2JqZWN0cy4KICAgIDpyZXR1cm5zOiAqTm9uZSoKICAgICkCcg8AAADaEWRvd25sb2FkX21ldGFkYXRhKQFyJQAAAHILAAAAcgsAAAByDAAAAHI9AAAAeAYAAHMCAAAAAAxyPQAAAEZjAgAAAAAAAAACAAAAAwAAAEMAAABzDAAAAHQAagF8AHwBgwJTACkBYWoDAAAKICAgIERvd25sb2FkIGxpc3Qgb2YgcGFja2FnZXMuICpsaXN0KiBpcyBhIGxpc3Qgb2YKICAgIDpjbGFzczpgfmxpYnJlcG8uUGFja2FnZVRhcmdldGAgb2JqZWN0cy4KICAgIElmIHRoZSAqZmFpbGZhc3QqIGlzIFRydWUsIHRoZW4gd2hvbGUgZG93bmxvYWRpbmcgaXMgc3RvcHBlZAogICAgaW1tZWRpYXRlbHkgd2hlbiBhbnkgb2YgZG93bmxvYWQgZmFpbHMgKGFuZCBleGNlcHRpb24gaXMgcmFpc2VkKS4KICAgIElmIHRoZSBmYWlsZmFzdCBpcyBGYWxzZSwgdGhlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYWZ0ZXIgYWxsCiAgICBkb3dubG9hZHMgZmluaXNoIChubyBtYXR0ZXIgaWYgc3VjY2Vzc2Z1bGx5IG9yIHVuc3VjY2Vzc2Z1bGx5KQogICAgYW5kIGV4Y2VwdGlvbiBpcyByYWlzZWQgb25seSBpZiBhIG5vbnJlY292ZXJhYmxlCiAgICBlcnJvciByZWxhdGVkIHRvIHRoZSBmdW5jdGlvbiBpdHNlbGYgaXMgbWVldAogICAgKEVycm9ycyByZWxhdGVkIHRvIGluZGl2aWR1YWwgZG93bmxvYWRzIGFyZQogICAgcmVwb3J0ZWQgdmlhIGNvcnJlc3BvbmRpbmcgUGFja2FnZVRhcmdldCBvYmplY3RzKQoKICAgIDpwYXJhbSBsaXN0OiBMaXN0IG9mIDpjbGFzczpgfi5saWJyZXBvLlBhY2thZ2VUYXJnZXRgIG9iamVjdHMuCiAgICA6cGFyYW0gZmFpbGZhc3Q6IElmICpUcnVlKiwgc3RvcCB3aG9sZSBkb3dubG9hZGluZyBpbW1lZGlhdGVseSB3aGVuIGFueQogICAgICAgICAgICAgICAgICAgICBvZiBkb3dubG9hZHMgZmFpbHMuIElmICpGYWxzZSosIGlnbm9yZSBmYWlsZWQgZG93bmxvYWQocykKICAgICAgICAgICAgICAgICAgICAgYW5kIGNvbnRpbnVlIHdpdGggb3RoZXIgZG93bmxvYWRzLgogICAgOnJldHVybnM6ICpOb25lKgogICAgKQJyDwAAANoRZG93bmxvYWRfcGFja2FnZXMpAnIlAAAAWghmYWlsZmFzdHILAAAAcgsAAAByDAAAAHI+AAAAhgYAAHMCAAAAABNyPgAAAGMDAAAAAAAAAAMAAAAEAAAAQwAAAHMOAAAAdABqAXwCfAB8AYMDUwApAWEsAQAACiAgICBEb3dubG9hZCBzcGVjaWZpZWQgVVJMIGFuZCB3cml0ZSBpdCBjb250ZW50IHRvIG9wZW5lZCBmaWxlIGRlc2NyaXB0b3IuCgogICAgOnBhcmFtIHVybDogVGFyZ2V0IFVSTAogICAgOnBhcmFtIGZkOiBPcGVuZWQgZmlsZSBkZXNjcmlwdG9yIChUbyBnZXQgYSBmaWxlIGRlc2NyaXB0b3IKICAgICAgICAgICAgICAgdXNlIGZvciBleGFtcGxlICoqb3Mub3BlbigpKiouCiAgICA6cGFyYW0gaGFuZGxlOiA6Q2xhc3M6YH5saWJyZXBvLkhhbmRsZWAgb2JqZWN0IG9yICpOb25lKgogICAgOnJldHVybnM6ICpOb25lKgogICAgKQJyDwAAANoMZG93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aWJyZXBvWgdsaWJyZXBv2gdtb2R1bGVzchcAAABaDmN1cnJlbnRfbW9kdWxlcg8AAABaEExpYnJlcG9FeGNlcHRpb25yLAAAAHItAAAAcjwAAAByBwAAANoDZGlycjAAAADaB2lzdXBwZXLaB2dldGF0dHJyKwAAANoHc2V0YXR0ctoIZW5kc3dpdGjaCnN0YXJ0c3dpdGhyBgAAAFoKUlBNTURfRlVMTFoIWVVNX0ZVTExaC0xSX1lVTV9GVUxMWhBSUE1NRF9SRVBPTURPTkxZWg5ZVU1fUkVQT01ET05MWVoRTFJfWVVNX1JFUE9NRE9OTFlaDVJQTU1EX0JBU0VYTUxaC1lVTV9CQVNFWE1MWg5MUl9ZVU1fQkFTRVhNTFoMUlBNTURfQkFTRURCWgpZVU1fQkFTRURCWg1MUl9ZVU1fQkFTRURCWgxSUE1NRF9IQVdLRVlaCllVTV9IQVdLRVlaDUxSX1lVTV9IQVdLRVlyDQAAAHIOAAAAchoAAAByIwAAAHI3AAAAcj0AAAByPgAAAHI/AAAAckEAAAByQgAAAHJDAAAAckUAAAByCwAAAHILAAAAcgsAAAByDAAAANoIPG1vZHVsZT5fBAAAc1wAAAAEAggBCAEKAgYCBAEEAQQBBAMOAQgCAgMKAQwCCgICAgoBFAEKARQBCgEUAQoBFAEKARQBGAMMAQ4BFAEUARQDCAsSBRIpEn8AfwB/AAUSLwgOChUKDAgJChgIDg==
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 2
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
__init__.cpython-36.opt-1.pyc
53.28 KB
lrw-r--r--
2024-03-30 14:23:06
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-36.pyc
53.28 KB
lrw-r--r--
2024-03-30 14:23:06
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).