REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 20.72 KB
Close
/opt/hc_python/lib/python3.12/site-packages/sqlalchemy/ext/__pycache__/compiler.cpython-312.pyc
Text
Base64
yw0NCgAAAAD5ke9nmVEAAOMAAAAAAAAAAAAAAAAGAAAAAAAAAfPGAAAAlwBkAFoAZAFkAmwBbQJaAgEAZAFkA2wDbQRaBAEAZAFkBGwDbQVaBQEAZAFkBWwDbQZaBgEAZAFkBmwDbQdaBwEAZAFkB2wDbQhaCAEAZAFkCGwDbQlaCQEAZAlkCmwKbQtaCwEAZAlkC2wMbQ1aDQEAZQhyBmQJZAxsDm0PWg8BAAIAZQlkDWUFZA5lBGYCGQAAAKwPqwIAAAAAAABaEGQVZBCEBFoRZBZkEYQEWhICAEcAZBKEAGQTqwIAAAAAAABaE3kUKRdhokEAAFByb3ZpZGVzIGFuIEFQSSBmb3IgY3JlYXRpb24gb2YgY3VzdG9tIENsYXVzZUVsZW1lbnRzIGFuZCBjb21waWxlcnMuCgpTeW5vcHNpcwo9PT09PT09PQoKVXNhZ2UgaW52b2x2ZXMgdGhlIGNyZWF0aW9uIG9mIG9uZSBvciBtb3JlCjpjbGFzczpgfnNxbGFsY2hlbXkuc3FsLmV4cHJlc3Npb24uQ2xhdXNlRWxlbWVudGAgc3ViY2xhc3NlcyBhbmQgb25lIG9yCm1vcmUgY2FsbGFibGVzIGRlZmluaW5nIGl0cyBjb21waWxhdGlvbjo6CgogICAgZnJvbSBzcWxhbGNoZW15LmV4dC5jb21waWxlciBpbXBvcnQgY29tcGlsZXMKICAgIGZyb20gc3FsYWxjaGVteS5zcWwuZXhwcmVzc2lvbiBpbXBvcnQgQ29sdW1uQ2xhdXNlCgoKICAgIGNsYXNzIE15Q29sdW1uKENvbHVtbkNsYXVzZSk6CiAgICAgICAgaW5oZXJpdF9jYWNoZSA9IFRydWUKCgogICAgQGNvbXBpbGVzKE15Q29sdW1uKQogICAgZGVmIGNvbXBpbGVfbXljb2x1bW4oZWxlbWVudCwgY29tcGlsZXIsICoqa3cpOgogICAgICAgIHJldHVybiAiWyVzXSIgJSBlbGVtZW50Lm5hbWUKCkFib3ZlLCBgYE15Q29sdW1uYGAgZXh0ZW5kcyA6Y2xhc3M6YH5zcWxhbGNoZW15LnNxbC5leHByZXNzaW9uLkNvbHVtbkNsYXVzZWAsCnRoZSBiYXNlIGV4cHJlc3Npb24gZWxlbWVudCBmb3IgbmFtZWQgY29sdW1uIG9iamVjdHMuIFRoZSBgYGNvbXBpbGVzYGAKZGVjb3JhdG9yIHJlZ2lzdGVycyBpdHNlbGYgd2l0aCB0aGUgYGBNeUNvbHVtbmBgIGNsYXNzIHNvIHRoYXQgaXQgaXMgaW52b2tlZAp3aGVuIHRoZSBvYmplY3QgaXMgY29tcGlsZWQgdG8gYSBzdHJpbmc6OgoKICAgIGZyb20gc3FsYWxjaGVteSBpbXBvcnQgc2VsZWN0CgogICAgcyA9IHNlbGVjdChNeUNvbHVtbigieCIpLCBNeUNvbHVtbigieSIpKQogICAgcHJpbnQoc3RyKHMpKQoKUHJvZHVjZXM6CgouLiBzb3VyY2Vjb2RlOjogc3FsCgogICAgU0VMRUNUIFt4XSwgW3ldCgpEaWFsZWN0LXNwZWNpZmljIGNvbXBpbGF0aW9uIHJ1bGVzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkNvbXBpbGVycyBjYW4gYWxzbyBiZSBtYWRlIGRpYWxlY3Qtc3BlY2lmaWMuIFRoZSBhcHByb3ByaWF0ZSBjb21waWxlciB3aWxsIGJlCmludm9rZWQgZm9yIHRoZSBkaWFsZWN0IGluIHVzZTo6CgogICAgZnJvbSBzcWxhbGNoZW15LnNjaGVtYSBpbXBvcnQgRERMRWxlbWVudAoKCiAgICBjbGFzcyBBbHRlckNvbHVtbihERExFbGVtZW50KToKICAgICAgICBpbmhlcml0X2NhY2hlID0gRmFsc2UKCiAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbHVtbiwgY21kKToKICAgICAgICAgICAgc2VsZi5jb2x1bW4gPSBjb2x1bW4KICAgICAgICAgICAgc2VsZi5jbWQgPSBjbWQKCgogICAgQGNvbXBpbGVzKEFsdGVyQ29sdW1uKQogICAgZGVmIHZpc2l0X2FsdGVyX2NvbHVtbihlbGVtZW50LCBjb21waWxlciwgKiprdyk6CiAgICAgICAgcmV0dXJuICJBTFRFUiBDT0xVTU4gJXMgLi4uIiAlIGVsZW1lbnQuY29sdW1uLm5hbWUKCgogICAgQGNvbXBpbGVzKEFsdGVyQ29sdW1uLCAicG9zdGdyZXNxbCIpCiAgICBkZWYgdmlzaXRfYWx0ZXJfY29sdW1uKGVsZW1lbnQsIGNvbXBpbGVyLCAqKmt3KToKICAgICAgICByZXR1cm4gIkFMVEVSIFRBQkxFICVzIEFMVEVSIENPTFVNTiAlcyAuLi4iICUgKAogICAgICAgICAgICBlbGVtZW50LnRhYmxlLm5hbWUsCiAgICAgICAgICAgIGVsZW1lbnQuY29sdW1uLm5hbWUsCiAgICAgICAgKQoKVGhlIHNlY29uZCBgYHZpc2l0X2FsdGVyX3RhYmxlYGAgd2lsbCBiZSBpbnZva2VkIHdoZW4gYW55IGBgcG9zdGdyZXNxbGBgCmRpYWxlY3QgaXMgdXNlZC4KCi4uIF9jb21waWxlcmV4dF9jb21waWxpbmdfc3ViZWxlbWVudHM6CgpDb21waWxpbmcgc3ViLWVsZW1lbnRzIG9mIGEgY3VzdG9tIGV4cHJlc3Npb24gY29uc3RydWN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KClRoZSBgYGNvbXBpbGVyYGAgYXJndW1lbnQgaXMgdGhlCjpjbGFzczpgfnNxbGFsY2hlbXkuZW5naW5lLmludGVyZmFjZXMuQ29tcGlsZWRgIG9iamVjdCBpbiB1c2UuIFRoaXMgb2JqZWN0CmNhbiBiZSBpbnNwZWN0ZWQgZm9yIGFueSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW4tcHJvZ3Jlc3MgY29tcGlsYXRpb24sCmluY2x1ZGluZyBgYGNvbXBpbGVyLmRpYWxlY3RgYCwgYGBjb21waWxlci5zdGF0ZW1lbnRgYCBldGMuIFRoZQo6Y2xhc3M6YH5zcWxhbGNoZW15LnNxbC5jb21waWxlci5TUUxDb21waWxlcmAgYW5kCjpjbGFzczpgfnNxbGFsY2hlbXkuc3FsLmNvbXBpbGVyLkRETENvbXBpbGVyYCBib3RoIGluY2x1ZGUgYSBgYHByb2Nlc3MoKWBgCm1ldGhvZCB3aGljaCBjYW4gYmUgdXNlZCBmb3IgY29tcGlsYXRpb24gb2YgZW1iZWRkZWQgYXR0cmlidXRlczo6CgogICAgZnJvbSBzcWxhbGNoZW15LnNxbC5leHByZXNzaW9uIGltcG9ydCBFeGVjdXRhYmxlLCBDbGF1c2VFbGVtZW50CgoKICAgIGNsYXNzIEluc2VydEZyb21TZWxlY3QoRXhlY3V0YWJsZSwgQ2xhdXNlRWxlbWVudCk6CiAgICAgICAgaW5oZXJpdF9jYWNoZSA9IEZhbHNlCgogICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YWJsZSwgc2VsZWN0KToKICAgICAgICAgICAgc2VsZi50YWJsZSA9IHRhYmxlCiAgICAgICAgICAgIHNlbGYuc2VsZWN0ID0gc2VsZWN0CgoKICAgIEBjb21waWxlcyhJbnNlcnRGcm9tU2VsZWN0KQogICAgZGVmIHZpc2l0X2luc2VydF9mcm9tX3NlbGVjdChlbGVtZW50LCBjb21waWxlciwgKiprdyk6CiAgICAgICAgcmV0dXJuICJJTlNFUlQgSU5UTyAlcyAoJXMpIiAlICgKICAgICAgICAgICAgY29tcGlsZXIucHJvY2VzcyhlbGVtZW50LnRhYmxlLCBhc2Zyb209VHJ1ZSwgKiprdyksCiAgICAgICAgICAgIGNvbXBpbGVyLnByb2Nlc3MoZWxlbWVudC5zZWxlY3QsICoqa3cpLAogICAgICAgICkKCgogICAgaW5zZXJ0ID0gSW5zZXJ0RnJvbVNlbGVjdCh0MSwgc2VsZWN0KHQxKS53aGVyZSh0MS5jLnggPiA1KSkKICAgIHByaW50KGluc2VydCkKClByb2R1Y2VzIChmb3JtYXR0ZWQgZm9yIHJlYWRhYmlsaXR5KToKCi4uIHNvdXJjZWNvZGU6OiBzcWwKCiAgICBJTlNFUlQgSU5UTyBteXRhYmxlICgKICAgICAgICBTRUxFQ1QgbXl0YWJsZS54LCBteXRhYmxlLnksIG15dGFibGUuegogICAgICAgIEZST00gbXl0YWJsZQogICAgICAgIFdIRVJFIG15dGFibGUueCA+IDp4XzEKICAgICkKCi4uIG5vdGU6OgoKICAgIFRoZSBhYm92ZSBgYEluc2VydEZyb21TZWxlY3RgYCBjb25zdHJ1Y3QgaXMgb25seSBhbiBleGFtcGxlLCB0aGlzIGFjdHVhbAogICAgZnVuY3Rpb25hbGl0eSBpcyBhbHJlYWR5IGF2YWlsYWJsZSB1c2luZyB0aGUKICAgIDptZXRoOmBfZXhwcmVzc2lvbi5JbnNlcnQuZnJvbV9zZWxlY3RgIG1ldGhvZC4KCgpDcm9zcyBDb21waWxpbmcgYmV0d2VlbiBTUUwgYW5kIERETCBjb21waWxlcnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpTUUwgYW5kIERETCBjb25zdHJ1Y3RzIGFyZSBlYWNoIGNvbXBpbGVkIHVzaW5nIGRpZmZlcmVudCBiYXNlIGNvbXBpbGVycyAtCmBgU1FMQ29tcGlsZXJgYCBhbmQgYGBERExDb21waWxlcmBgLiAgIEEgY29tbW9uIG5lZWQgaXMgdG8gYWNjZXNzIHRoZQpjb21waWxhdGlvbiBydWxlcyBvZiBTUUwgZXhwcmVzc2lvbnMgZnJvbSB3aXRoaW4gYSBEREwgZXhwcmVzc2lvbi4gVGhlCmBgRERMQ29tcGlsZXJgYCBpbmNsdWRlcyBhbiBhY2Nlc3NvciBgYHNxbF9jb21waWxlcmBgIGZvciB0aGlzIHJlYXNvbiwgc3VjaCBhcwpiZWxvdyB3aGVyZSB3ZSBnZW5lcmF0ZSBhIENIRUNLIGNvbnN0cmFpbnQgdGhhdCBlbWJlZHMgYSBTUUwgZXhwcmVzc2lvbjo6CgogICAgQGNvbXBpbGVzKE15Q29uc3RyYWludCkKICAgIGRlZiBjb21waWxlX215X2NvbnN0cmFpbnQoY29uc3RyYWludCwgZGRsY29tcGlsZXIsICoqa3cpOgogICAgICAgIGt3WyJsaXRlcmFsX2JpbmRzIl0gPSBUcnVlCiAgICAgICAgcmV0dXJuICJDT05TVFJBSU5UICVzIENIRUNLICglcykiICUgKAogICAgICAgICAgICBjb25zdHJhaW50Lm5hbWUsCiAgICAgICAgICAgIGRkbGNvbXBpbGVyLnNxbF9jb21waWxlci5wcm9jZXNzKGNvbnN0cmFpbnQuZXhwcmVzc2lvbiwgKiprdyksCiAgICAgICAgKQoKQWJvdmUsIHdlIGFkZCBhbiBhZGRpdGlvbmFsIGZsYWcgdG8gdGhlIHByb2Nlc3Mgc3RlcCBhcyBjYWxsZWQgYnkKOm1ldGg6YC5TUUxDb21waWxlci5wcm9jZXNzYCwgd2hpY2ggaXMgdGhlIGBgbGl0ZXJhbF9iaW5kc2BgIGZsYWcuICBUaGlzCmluZGljYXRlcyB0aGF0IGFueSBTUUwgZXhwcmVzc2lvbiB3aGljaCByZWZlcnMgdG8gYSA6Y2xhc3M6YC5CaW5kUGFyYW1ldGVyYApvYmplY3Qgb3Igb3RoZXIgImxpdGVyYWwiIG9iamVjdCBzdWNoIGFzIHRob3NlIHdoaWNoIHJlZmVyIHRvIHN0cmluZ3Mgb3IKaW50ZWdlcnMgc2hvdWxkIGJlIHJlbmRlcmVkICoqaW4tcGxhY2UqKiwgcmF0aGVyIHRoYW4gYmVpbmcgcmVmZXJyZWQgdG8gYXMKYSBib3VuZCBwYXJhbWV0ZXI7ICB3aGVuIGVtaXR0aW5nIERETCwgYm91bmQgcGFyYW1ldGVycyBhcmUgdHlwaWNhbGx5IG5vdApzdXBwb3J0ZWQuCgoKQ2hhbmdpbmcgdGhlIGRlZmF1bHQgY29tcGlsYXRpb24gb2YgZXhpc3RpbmcgY29uc3RydWN0cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpUaGUgY29tcGlsZXIgZXh0ZW5zaW9uIGFwcGxpZXMganVzdCBhcyB3ZWxsIHRvIHRoZSBleGlzdGluZyBjb25zdHJ1Y3RzLiAgV2hlbgpvdmVycmlkaW5nIHRoZSBjb21waWxhdGlvbiBvZiBhIGJ1aWx0IGluIFNRTCBjb25zdHJ1Y3QsIHRoZSBAY29tcGlsZXMKZGVjb3JhdG9yIGlzIGludm9rZWQgdXBvbiB0aGUgYXBwcm9wcmlhdGUgY2xhc3MgKGJlIHN1cmUgdG8gdXNlIHRoZSBjbGFzcywKaS5lLiBgYEluc2VydGBgIG9yIGBgU2VsZWN0YGAsIGluc3RlYWQgb2YgdGhlIGNyZWF0aW9uIGZ1bmN0aW9uIHN1Y2gKYXMgYGBpbnNlcnQoKWBgIG9yIGBgc2VsZWN0KClgYCkuCgpXaXRoaW4gdGhlIG5ldyBjb21waWxhdGlvbiBmdW5jdGlvbiwgdG8gZ2V0IGF0IHRoZSAib3JpZ2luYWwiIGNvbXBpbGF0aW9uCnJvdXRpbmUsIHVzZSB0aGUgYXBwcm9wcmlhdGUgdmlzaXRfWFhYIG1ldGhvZCAtIHRoaXMKYmVjYXVzZSBjb21waWxlci5wcm9jZXNzKCkgd2lsbCBjYWxsIHVwb24gdGhlIG92ZXJyaWRpbmcgcm91dGluZSBhbmQgY2F1c2UKYW4gZW5kbGVzcyBsb29wLiAgIFN1Y2ggYXMsIHRvIGFkZCAicHJlZml4IiB0byBhbGwgaW5zZXJ0IHN0YXRlbWVudHM6OgoKICAgIGZyb20gc3FsYWxjaGVteS5zcWwuZXhwcmVzc2lvbiBpbXBvcnQgSW5zZXJ0CgoKICAgIEBjb21waWxlcyhJbnNlcnQpCiAgICBkZWYgcHJlZml4X2luc2VydHMoaW5zZXJ0LCBjb21waWxlciwgKiprdyk6CiAgICAgICAgcmV0dXJuIGNvbXBpbGVyLnZpc2l0X2luc2VydChpbnNlcnQucHJlZml4X3dpdGgoInNvbWUgcHJlZml4IiksICoqa3cpCgpUaGUgYWJvdmUgY29tcGlsZXIgd2lsbCBwcmVmaXggYWxsIElOU0VSVCBzdGF0ZW1lbnRzIHdpdGggInNvbWUgcHJlZml4IiB3aGVuCmNvbXBpbGVkLgoKLi4gX3R5cGVfY29tcGlsYXRpb25fZXh0ZW5zaW9uOgoKQ2hhbmdpbmcgQ29tcGlsYXRpb24gb2YgVHlwZXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCmBgY29tcGlsZXJgYCB3b3JrcyBmb3IgdHlwZXMsIHRvbywgc3VjaCBhcyBiZWxvdyB3aGVyZSB3ZSBpbXBsZW1lbnQgdGhlCk1TLVNRTCBzcGVjaWZpYyAnbWF4JyBrZXl3b3JkIGZvciBgYFN0cmluZ2BgL2BgVkFSQ0hBUmBgOjoKCiAgICBAY29tcGlsZXMoU3RyaW5nLCAibXNzcWwiKQogICAgQGNvbXBpbGVzKFZBUkNIQVIsICJtc3NxbCIpCiAgICBkZWYgY29tcGlsZV92YXJjaGFyKGVsZW1lbnQsIGNvbXBpbGVyLCAqKmt3KToKICAgICAgICBpZiBlbGVtZW50Lmxlbmd0aCA9PSAibWF4IjoKICAgICAgICAgICAgcmV0dXJuICJWQVJDSEFSKCdtYXgnKSIKICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gY29tcGlsZXIudmlzaXRfVkFSQ0hBUihlbGVtZW50LCAqKmt3KQoKCiAgICBmb28gPSBUYWJsZSgiZm9vIiwgbWV0YWRhdGEsIENvbHVtbigiZGF0YSIsIFZBUkNIQVIoIm1heCIpKSkKClN1YmNsYXNzaW5nIEd1aWRlbGluZXMKPT09PT09PT09PT09PT09PT09PT09PQoKQSBiaWcgcGFydCBvZiB1c2luZyB0aGUgY29tcGlsZXIgZXh0ZW5zaW9uIGlzIHN1YmNsYXNzaW5nIFNRTEFsY2hlbXkKZXhwcmVzc2lvbiBjb25zdHJ1Y3RzLiBUbyBtYWtlIHRoaXMgZWFzaWVyLCB0aGUgZXhwcmVzc2lvbiBhbmQKc2NoZW1hIHBhY2thZ2VzIGZlYXR1cmUgYSBzZXQgb2YgImJhc2VzIiBpbnRlbmRlZCBmb3IgY29tbW9uIHRhc2tzLgpBIHN5bm9wc2lzIGlzIGFzIGZvbGxvd3M6CgoqIDpjbGFzczpgfnNxbGFsY2hlbXkuc3FsLmV4cHJlc3Npb24uQ2xhdXNlRWxlbWVudGAgLSBUaGlzIGlzIHRoZSByb290CiAgZXhwcmVzc2lvbiBjbGFzcy4gQW55IFNRTCBleHByZXNzaW9uIGNhbiBiZSBkZXJpdmVkIGZyb20gdGhpcyBiYXNlLCBhbmQgaXMKICBwcm9iYWJseSB0aGUgYmVzdCBjaG9pY2UgZm9yIGxvbmdlciBjb25zdHJ1Y3RzIHN1Y2ggYXMgc3BlY2lhbGl6ZWQgSU5TRVJUCiAgc3RhdGVtZW50cy4KCiogOmNsYXNzOmB+c3FsYWxjaGVteS5zcWwuZXhwcmVzc2lvbi5Db2x1bW5FbGVtZW50YCAtIFRoZSByb290IG9mIGFsbAogICJjb2x1bW4tbGlrZSIgZWxlbWVudHMuIEFueXRoaW5nIHRoYXQgeW91J2QgcGxhY2UgaW4gdGhlICJjb2x1bW5zIiBjbGF1c2Ugb2YKICBhIFNFTEVDVCBzdGF0ZW1lbnQgKGFzIHdlbGwgYXMgb3JkZXIgYnkgYW5kIGdyb3VwIGJ5KSBjYW4gZGVyaXZlIGZyb20gdGhpcyAtCiAgdGhlIG9iamVjdCB3aWxsIGF1dG9tYXRpY2FsbHkgaGF2ZSBQeXRob24gImNvbXBhcmlzb24iIGJlaGF2aW9yLgoKICA6Y2xhc3M6YH5zcWxhbGNoZW15LnNxbC5leHByZXNzaW9uLkNvbHVtbkVsZW1lbnRgIGNsYXNzZXMgd2FudCB0byBoYXZlIGEKICBgYHR5cGVgYCBtZW1iZXIgd2hpY2ggaXMgZXhwcmVzc2lvbidzIHJldHVybiB0eXBlLiAgVGhpcyBjYW4gYmUgZXN0YWJsaXNoZWQKICBhdCB0aGUgaW5zdGFuY2UgbGV2ZWwgaW4gdGhlIGNvbnN0cnVjdG9yLCBvciBhdCB0aGUgY2xhc3MgbGV2ZWwgaWYgaXRzCiAgZ2VuZXJhbGx5IGNvbnN0YW50OjoKCiAgICAgIGNsYXNzIHRpbWVzdGFtcChDb2x1bW5FbGVtZW50KToKICAgICAgICAgIHR5cGUgPSBUSU1FU1RBTVAoKQogICAgICAgICAgaW5oZXJpdF9jYWNoZSA9IFRydWUKCiogOmNsYXNzOmB+c3FsYWxjaGVteS5zcWwuZnVuY3Rpb25zLkZ1bmN0aW9uRWxlbWVudGAgLSBUaGlzIGlzIGEgaHlicmlkIG9mIGEKICBgYENvbHVtbkVsZW1lbnRgYCBhbmQgYSAiZnJvbSBjbGF1c2UiIGxpa2Ugb2JqZWN0LCBhbmQgcmVwcmVzZW50cyBhIFNRTAogIGZ1bmN0aW9uIG9yIHN0b3JlZCBwcm9jZWR1cmUgdHlwZSBvZiBjYWxsLiBTaW5jZSBtb3N0IGRhdGFiYXNlcyBzdXBwb3J0CiAgc3RhdGVtZW50cyBhbG9uZyB0aGUgbGluZSBvZiAiU0VMRUNUIEZST00gPHNvbWUgZnVuY3Rpb24+IgogIGBgRnVuY3Rpb25FbGVtZW50YGAgYWRkcyBpbiB0aGUgYWJpbGl0eSB0byBiZSB1c2VkIGluIHRoZSBGUk9NIGNsYXVzZSBvZiBhCiAgYGBzZWxlY3QoKWBgIGNvbnN0cnVjdDo6CgogICAgICBmcm9tIHNxbGFsY2hlbXkuc3FsLmV4cHJlc3Npb24gaW1wb3J0IEZ1bmN0aW9uRWxlbWVudAoKCiAgICAgIGNsYXNzIGNvYWxlc2NlKEZ1bmN0aW9uRWxlbWVudCk6CiAgICAgICAgICBuYW1lID0gImNvYWxlc2NlIgogICAgICAgICAgaW5oZXJpdF9jYWNoZSA9IFRydWUKCgogICAgICBAY29tcGlsZXMoY29hbGVzY2UpCiAgICAgIGRlZiBjb21waWxlKGVsZW1lbnQsIGNvbXBpbGVyLCAqKmt3KToKICAgICAgICAgIHJldHVybiAiY29hbGVzY2UoJXMpIiAlIGNvbXBpbGVyLnByb2Nlc3MoZWxlbWVudC5jbGF1c2VzLCAqKmt3KQoKCiAgICAgIEBjb21waWxlcyhjb2FsZXNjZSwgIm9yYWNsZSIpCiAgICAgIGRlZiBjb21waWxlKGVsZW1lbnQsIGNvbXBpbGVyLCAqKmt3KToKICAgICAgICAgIGlmIGxlbihlbGVtZW50LmNsYXVzZXMpID4gMjoKICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAgICJjb2FsZXNjZSBvbmx5IHN1cHBvcnRzIHR3byBhcmd1bWVudHMgb24gIiAiT3JhY2xlIERhdGFiYXNlIgogICAgICAgICAgICAgICkKICAgICAgICAgIHJldHVybiAibnZsKCVzKSIgJSBjb21waWxlci5wcm9jZXNzKGVsZW1lbnQuY2xhdXNlcywgKiprdykKCiogOmNsYXNzOmAuRXhlY3V0YWJsZURETEVsZW1lbnRgIC0gVGhlIHJvb3Qgb2YgYWxsIERETCBleHByZXNzaW9ucywKICBsaWtlIENSRUFURSBUQUJMRSwgQUxURVIgVEFCTEUsIGV0Yy4gQ29tcGlsYXRpb24gb2YKICA6Y2xhc3M6YC5FeGVjdXRhYmxlRERMRWxlbWVudGAgc3ViY2xhc3NlcyBpcyBpc3N1ZWQgYnkgYQogIDpjbGFzczpgLkRETENvbXBpbGVyYCBpbnN0ZWFkIG9mIGEgOmNsYXNzOmAuU1FMQ29tcGlsZXJgLgogIDpjbGFzczpgLkV4ZWN1dGFibGVERExFbGVtZW50YCBjYW4gYWxzbyBiZSB1c2VkIGFzIGFuIGV2ZW50IGhvb2sgaW4KICBjb25qdW5jdGlvbiB3aXRoIGV2ZW50IGhvb2tzIGxpa2UgOm1ldGg6YC5ERExFdmVudHMuYmVmb3JlX2NyZWF0ZWAgYW5kCiAgOm1ldGg6YC5ERExFdmVudHMuYWZ0ZXJfY3JlYXRlYCwgYWxsb3dpbmcgdGhlIGNvbnN0cnVjdCB0byBiZSBpbnZva2VkCiAgYXV0b21hdGljYWxseSBkdXJpbmcgQ1JFQVRFIFRBQkxFIGFuZCBEUk9QIFRBQkxFIHNlcXVlbmNlcy4KCiAgLi4gc2VlYWxzbzo6CgogICAgOnJlZjpgbWV0YWRhdGFfZGRsX3RvcGxldmVsYCAtIGNvbnRhaW5zIGV4YW1wbGVzIG9mIGFzc29jaWF0aW5nCiAgICA6Y2xhc3M6YC5ERExgIG9iamVjdHMgKHdoaWNoIGFyZSB0aGVtc2VsdmVzIDpjbGFzczpgLkV4ZWN1dGFibGVERExFbGVtZW50YAogICAgaW5zdGFuY2VzKSB3aXRoIDpjbGFzczpgLkRETEV2ZW50c2AgZXZlbnQgaG9va3MuCgoqIDpjbGFzczpgfnNxbGFsY2hlbXkuc3FsLmV4cHJlc3Npb24uRXhlY3V0YWJsZWAgLSBUaGlzIGlzIGEgbWl4aW4gd2hpY2gKICBzaG91bGQgYmUgdXNlZCB3aXRoIGFueSBleHByZXNzaW9uIGNsYXNzIHRoYXQgcmVwcmVzZW50cyBhICJzdGFuZGFsb25lIgogIFNRTCBzdGF0ZW1lbnQgdGhhdCBjYW4gYmUgcGFzc2VkIGRpcmVjdGx5IHRvIGFuIGBgZXhlY3V0ZSgpYGAgbWV0aG9kLiAgSXQKICBpcyBhbHJlYWR5IGltcGxpY2l0IHdpdGhpbiBgYERETEVsZW1lbnRgYCBhbmQgYGBGdW5jdGlvbkVsZW1lbnRgYC4KCk1vc3Qgb2YgdGhlIGFib3ZlIGNvbnN0cnVjdHMgYWxzbyByZXNwb25kIHRvIFNRTCBzdGF0ZW1lbnQgY2FjaGluZy4gICBBCnN1YmNsYXNzZWQgY29uc3RydWN0IHdpbGwgd2FudCB0byBkZWZpbmUgdGhlIGNhY2hpbmcgYmVoYXZpb3IgZm9yIHRoZSBvYmplY3QsCndoaWNoIHVzdWFsbHkgbWVhbnMgc2V0dGluZyB0aGUgZmxhZyBgYGluaGVyaXRfY2FjaGVgYCB0byB0aGUgdmFsdWUgb2YKYGBGYWxzZWBgIG9yIGBgVHJ1ZWBgLiAgU2VlIHRoZSBuZXh0IHNlY3Rpb24gOnJlZjpgY29tcGlsZXJleHRfY2FjaGluZ2AKZm9yIGJhY2tncm91bmQuCgoKLi4gX2NvbXBpbGVyZXh0X2NhY2hpbmc6CgpFbmFibGluZyBDYWNoaW5nIFN1cHBvcnQgZm9yIEN1c3RvbSBDb25zdHJ1Y3RzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KClNRTEFsY2hlbXkgYXMgb2YgdmVyc2lvbiAxLjQgaW5jbHVkZXMgYQo6cmVmOmBTUUwgY29tcGlsYXRpb24gY2FjaGluZyBmYWNpbGl0eSA8c3FsX2NhY2hpbmc+YCB3aGljaCB3aWxsIGFsbG93CmVxdWl2YWxlbnQgU1FMIGNvbnN0cnVjdHMgdG8gY2FjaGUgdGhlaXIgc3RyaW5naWZpZWQgZm9ybSwgYWxvbmcgd2l0aCBvdGhlcgpzdHJ1Y3R1cmFsIGluZm9ybWF0aW9uIHVzZWQgdG8gZmV0Y2ggcmVzdWx0cyBmcm9tIHRoZSBzdGF0ZW1lbnQuCgpGb3IgcmVhc29ucyBkaXNjdXNzZWQgYXQgOnJlZjpgY2FjaGluZ19jYXZlYXRzYCwgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMKY2FjaGluZyBzeXN0ZW0gdGFrZXMgYSBjb25zZXJ2YXRpdmUgYXBwcm9hY2ggdG93YXJkcyBpbmNsdWRpbmcgY3VzdG9tIFNRTApjb25zdHJ1Y3RzIGFuZC9vciBzdWJjbGFzc2VzIHdpdGhpbiB0aGUgY2FjaGluZyBzeXN0ZW0uICAgVGhpcyBpbmNsdWRlcyB0aGF0CmFueSB1c2VyLWRlZmluZWQgU1FMIGNvbnN0cnVjdHMsIGluY2x1ZGluZyBhbGwgdGhlIGV4YW1wbGVzIGZvciB0aGlzCmV4dGVuc2lvbiwgd2lsbCBub3QgcGFydGljaXBhdGUgaW4gY2FjaGluZyBieSBkZWZhdWx0IHVubGVzcyB0aGV5IHBvc2l0aXZlbHkKYXNzZXJ0IHRoYXQgdGhleSBhcmUgYWJsZSB0byBkbyBzby4gIFRoZSA6YXR0cjpgLkhhc0NhY2hlS2V5LmluaGVyaXRfY2FjaGVgCmF0dHJpYnV0ZSB3aGVuIHNldCB0byBgYFRydWVgYCBhdCB0aGUgY2xhc3MgbGV2ZWwgb2YgYSBzcGVjaWZpYyBzdWJjbGFzcwp3aWxsIGluZGljYXRlIHRoYXQgaW5zdGFuY2VzIG9mIHRoaXMgY2xhc3MgbWF5IGJlIHNhZmVseSBjYWNoZWQsIHVzaW5nIHRoZQpjYWNoZSBrZXkgZ2VuZXJhdGlvbiBzY2hlbWUgb2YgdGhlIGltbWVkaWF0ZSBzdXBlcmNsYXNzLiAgVGhpcyBhcHBsaWVzCmZvciBleGFtcGxlIHRvIHRoZSAic3lub3BzaXMiIGV4YW1wbGUgaW5kaWNhdGVkIHByZXZpb3VzbHk6OgoKICAgIGNsYXNzIE15Q29sdW1uKENvbHVtbkNsYXVzZSk6CiAgICAgICAgaW5oZXJpdF9jYWNoZSA9IFRydWUKCgogICAgQGNvbXBpbGVzKE15Q29sdW1uKQogICAgZGVmIGNvbXBpbGVfbXljb2x1bW4oZWxlbWVudCwgY29tcGlsZXIsICoqa3cpOgogICAgICAgIHJldHVybiAiWyVzXSIgJSBlbGVtZW50Lm5hbWUKCkFib3ZlLCB0aGUgYGBNeUNvbHVtbmBgIGNsYXNzIGRvZXMgbm90IGluY2x1ZGUgYW55IG5ldyBzdGF0ZSB0aGF0CmFmZmVjdHMgaXRzIFNRTCBjb21waWxhdGlvbjsgdGhlIGNhY2hlIGtleSBvZiBgYE15Q29sdW1uYGAgaW5zdGFuY2VzIHdpbGwKbWFrZSB1c2Ugb2YgdGhhdCBvZiB0aGUgYGBDb2x1bW5DbGF1c2VgYCBzdXBlcmNsYXNzLCBtZWFuaW5nIGl0IHdpbGwgdGFrZQppbnRvIGFjY291bnQgdGhlIGNsYXNzIG9mIHRoZSBvYmplY3QgKGBgTXlDb2x1bW5gYCksIHRoZSBzdHJpbmcgbmFtZSBhbmQKZGF0YXR5cGUgb2YgdGhlIG9iamVjdDo6CgogICAgPj4+IE15Q29sdW1uKCJzb21lX25hbWUiLCBTdHJpbmcoKSkuX2dlbmVyYXRlX2NhY2hlX2tleSgpCiAgICBDYWNoZUtleSgKICAgICAgICBrZXk9KCcwJywgPGNsYXNzICdfX21haW5fXy5NeUNvbHVtbic+LAogICAgICAgICduYW1lJywgJ3NvbWVfbmFtZScsCiAgICAgICAgJ3R5cGUnLCAoPGNsYXNzICdzcWxhbGNoZW15LnNxbC5zcWx0eXBlcy5TdHJpbmcnPiwKICAgICAgICAgICAgICAgICAoJ2xlbmd0aCcsIE5vbmUpLCAoJ2NvbGxhdGlvbicsIE5vbmUpKQogICAgKSwgYmluZHBhcmFtcz1bXSkKCkZvciBvYmplY3RzIHRoYXQgYXJlIGxpa2VseSB0byBiZSAqKnVzZWQgbGliZXJhbGx5IGFzIGNvbXBvbmVudHMgd2l0aGluIG1hbnkKbGFyZ2VyIHN0YXRlbWVudHMqKiwgc3VjaCBhcyA6Y2xhc3M6YF9zY2hlbWEuQ29sdW1uYCBzdWJjbGFzc2VzIGFuZCBjdXN0b20gU1FMCmRhdGF0eXBlcywgaXQncyBpbXBvcnRhbnQgdGhhdCAqKmNhY2hpbmcgYmUgZW5hYmxlZCBhcyBtdWNoIGFzIHBvc3NpYmxlKiosIGFzCnRoaXMgbWF5IG90aGVyd2lzZSBuZWdhdGl2ZWx5IGFmZmVjdCBwZXJmb3JtYW5jZS4KCkFuIGV4YW1wbGUgb2YgYW4gb2JqZWN0IHRoYXQgKipkb2VzKiogY29udGFpbiBzdGF0ZSB3aGljaCBhZmZlY3RzIGl0cyBTUUwKY29tcGlsYXRpb24gaXMgdGhlIG9uZSBpbGx1c3RyYXRlZCBhdCA6cmVmOmBjb21waWxlcmV4dF9jb21waWxpbmdfc3ViZWxlbWVudHNgOwp0aGlzIGlzIGFuICJJTlNFUlQgRlJPTSBTRUxFQ1QiIGNvbnN0cnVjdCB0aGF0IGNvbWJpbmVzIHRvZ2V0aGVyIGEKOmNsYXNzOmBfc2NoZW1hLlRhYmxlYCBhcyB3ZWxsIGFzIGEgOmNsYXNzOmBfc3FsLlNlbGVjdGAgY29uc3RydWN0LCBlYWNoIG9mCndoaWNoIGluZGVwZW5kZW50bHkgYWZmZWN0IHRoZSBTUUwgc3RyaW5nIGdlbmVyYXRpb24gb2YgdGhlIGNvbnN0cnVjdC4gIEZvcgp0aGlzIGNsYXNzLCB0aGUgZXhhbXBsZSBpbGx1c3RyYXRlcyB0aGF0IGl0IHNpbXBseSBkb2VzIG5vdCBwYXJ0aWNpcGF0ZSBpbgpjYWNoaW5nOjoKCiAgICBjbGFzcyBJbnNlcnRGcm9tU2VsZWN0KEV4ZWN1dGFibGUsIENsYXVzZUVsZW1lbnQpOgogICAgICAgIGluaGVyaXRfY2FjaGUgPSBGYWxzZQoKICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdGFibGUsIHNlbGVjdCk6CiAgICAgICAgICAgIHNlbGYudGFibGUgPSB0YWJsZQogICAgICAgICAgICBzZWxmLnNlbGVjdCA9IHNlbGVjdAoKCiAgICBAY29tcGlsZXMoSW5zZXJ0RnJvbVNlbGVjdCkKICAgIGRlZiB2aXNpdF9pbnNlcnRfZnJvbV9zZWxlY3QoZWxlbWVudCwgY29tcGlsZXIsICoqa3cpOgogICAgICAgIHJldHVybiAiSU5TRVJUIElOVE8gJXMgKCVzKSIgJSAoCiAgICAgICAgICAgIGNvbXBpbGVyLnByb2Nlc3MoZWxlbWVudC50YWJsZSwgYXNmcm9tPVRydWUsICoqa3cpLAogICAgICAgICAgICBjb21waWxlci5wcm9jZXNzKGVsZW1lbnQuc2VsZWN0LCAqKmt3KSwKICAgICAgICApCgpXaGlsZSBpdCBpcyBhbHNvIHBvc3NpYmxlIHRoYXQgdGhlIGFib3ZlIGBgSW5zZXJ0RnJvbVNlbGVjdGBgIGNvdWxkIGJlIG1hZGUgdG8KcHJvZHVjZSBhIGNhY2hlIGtleSB0aGF0IGlzIGNvbXBvc2VkIG9mIHRoYXQgb2YgdGhlIDpjbGFzczpgX3NjaGVtYS5UYWJsZWAgYW5kCjpjbGFzczpgX3NxbC5TZWxlY3RgIGNvbXBvbmVudHMgdG9nZXRoZXIsIHRoZSBBUEkgZm9yIHRoaXMgaXMgbm90IGF0IHRoZSBtb21lbnQKZnVsbHkgcHVibGljLiBIb3dldmVyLCBmb3IgYW4gIklOU0VSVCBGUk9NIFNFTEVDVCIgY29uc3RydWN0LCB3aGljaCBpcyBvbmx5CnVzZWQgYnkgaXRzZWxmIGZvciBzcGVjaWZpYyBvcGVyYXRpb25zLCBjYWNoaW5nIGlzIG5vdCBhcyBjcml0aWNhbCBhcyBpbiB0aGUKcHJldmlvdXMgZXhhbXBsZS4KCkZvciBvYmplY3RzIHRoYXQgYXJlICoqdXNlZCBpbiByZWxhdGl2ZSBpc29sYXRpb24gYW5kIGFyZSBnZW5lcmFsbHkKc3RhbmRhbG9uZSoqLCBzdWNoIGFzIGN1c3RvbSA6dGVybTpgRE1MYCBjb25zdHJ1Y3RzIGxpa2UgYW4gIklOU0VSVCBGUk9NClNFTEVDVCIsICoqY2FjaGluZyBpcyBnZW5lcmFsbHkgbGVzcyBjcml0aWNhbCoqIGFzIHRoZSBsYWNrIG9mIGNhY2hpbmcgZm9yIHN1Y2gKYSBjb25zdHJ1Y3Qgd2lsbCBoYXZlIG9ubHkgbG9jYWxpemVkIGltcGxpY2F0aW9ucyBmb3IgdGhhdCBzcGVjaWZpYyBvcGVyYXRpb24uCgoKRnVydGhlciBFeGFtcGxlcwo9PT09PT09PT09PT09PT09CgoiVVRDIHRpbWVzdGFtcCIgZnVuY3Rpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQSBmdW5jdGlvbiB0aGF0IHdvcmtzIGxpa2UgIkNVUlJFTlRfVElNRVNUQU1QIiBleGNlcHQgYXBwbGllcyB0aGUKYXBwcm9wcmlhdGUgY29udmVyc2lvbnMgc28gdGhhdCB0aGUgdGltZSBpcyBpbiBVVEMgdGltZS4gICBUaW1lc3RhbXBzIGFyZSBiZXN0CnN0b3JlZCBpbiByZWxhdGlvbmFsIGRhdGFiYXNlcyBhcyBVVEMsIHdpdGhvdXQgdGltZSB6b25lcy4gICBVVEMgc28gdGhhdCB5b3VyCmRhdGFiYXNlIGRvZXNuJ3QgdGhpbmsgdGltZSBoYXMgZ29uZSBiYWNrd2FyZHMgaW4gdGhlIGhvdXIgd2hlbiBkYXlsaWdodApzYXZpbmdzIGVuZHMsIHdpdGhvdXQgdGltZXpvbmVzIGJlY2F1c2UgdGltZXpvbmVzIGFyZSBsaWtlIGNoYXJhY3RlcgplbmNvZGluZ3MgLSB0aGV5J3JlIGJlc3QgYXBwbGllZCBvbmx5IGF0IHRoZSBlbmRwb2ludHMgb2YgYW4gYXBwbGljYXRpb24KKGkuZS4gY29udmVydCB0byBVVEMgdXBvbiB1c2VyIGlucHV0LCByZS1hcHBseSBkZXNpcmVkIHRpbWV6b25lIHVwb24gZGlzcGxheSkuCgpGb3IgUG9zdGdyZVNRTCBhbmQgTWljcm9zb2Z0IFNRTCBTZXJ2ZXI6OgoKICAgIGZyb20gc3FsYWxjaGVteS5zcWwgaW1wb3J0IGV4cHJlc3Npb24KICAgIGZyb20gc3FsYWxjaGVteS5leHQuY29tcGlsZXIgaW1wb3J0IGNvbXBpbGVzCiAgICBmcm9tIHNxbGFsY2hlbXkudHlwZXMgaW1wb3J0IERhdGVUaW1lCgoKICAgIGNsYXNzIHV0Y25vdyhleHByZXNzaW9uLkZ1bmN0aW9uRWxlbWVudCk6CiAgICAgICAgdHlwZSA9IERhdGVUaW1lKCkKICAgICAgICBpbmhlcml0X2NhY2hlID0gVHJ1ZQoKCiAgICBAY29tcGlsZXModXRjbm93LCAicG9zdGdyZXNxbCIpCiAgICBkZWYgcGdfdXRjbm93KGVsZW1lbnQsIGNvbXBpbGVyLCAqKmt3KToKICAgICAgICByZXR1cm4gIlRJTUVaT05FKCd1dGMnLCBDVVJSRU5UX1RJTUVTVEFNUCkiCgoKICAgIEBjb21waWxlcyh1dGNub3csICJtc3NxbCIpCiAgICBkZWYgbXNfdXRjbm93KGVsZW1lbnQsIGNvbXBpbGVyLCAqKmt3KToKICAgICAgICByZXR1cm4gIkdFVFVUQ0RBVEUoKSIKCkV4YW1wbGUgdXNhZ2U6OgoKICAgIGZyb20gc3FsYWxjaGVteSBpbXBvcnQgVGFibGUsIENvbHVtbiwgSW50ZWdlciwgU3RyaW5nLCBEYXRlVGltZSwgTWV0YURhdGEKCiAgICBtZXRhZGF0YSA9IE1ldGFEYXRhKCkKICAgIGV2ZW50ID0gVGFibGUoCiAgICAgICAgImV2ZW50IiwKICAgICAgICBtZXRhZGF0YSwKICAgICAgICBDb2x1bW4oImlkIiwgSW50ZWdlciwgcHJpbWFyeV9rZXk9VHJ1ZSksCiAgICAgICAgQ29sdW1uKCJkZXNjcmlwdGlvbiIsIFN0cmluZyg1MCksIG51bGxhYmxlPUZhbHNlKSwKICAgICAgICBDb2x1bW4oInRpbWVzdGFtcCIsIERhdGVUaW1lLCBzZXJ2ZXJfZGVmYXVsdD11dGNub3coKSksCiAgICApCgoiR1JFQVRFU1QiIGZ1bmN0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0KClRoZSAiR1JFQVRFU1QiIGZ1bmN0aW9uIGlzIGdpdmVuIGFueSBudW1iZXIgb2YgYXJndW1lbnRzIGFuZCByZXR1cm5zIHRoZSBvbmUKdGhhdCBpcyBvZiB0aGUgaGlnaGVzdCB2YWx1ZSAtIGl0cyBlcXVpdmFsZW50IHRvIFB5dGhvbidzIGBgbWF4YGAKZnVuY3Rpb24uICBBIFNRTCBzdGFuZGFyZCB2ZXJzaW9uIHZlcnN1cyBhIENBU0UgYmFzZWQgdmVyc2lvbiB3aGljaCBvbmx5CmFjY29tbW9kYXRlcyB0d28gYXJndW1lbnRzOjoKCiAgICBmcm9tIHNxbGFsY2hlbXkuc3FsIGltcG9ydCBleHByZXNzaW9uLCBjYXNlCiAgICBmcm9tIHNxbGFsY2hlbXkuZXh0LmNvbXBpbGVyIGltcG9ydCBjb21waWxlcwogICAgZnJvbSBzcWxhbGNoZW15LnR5cGVzIGltcG9ydCBOdW1lcmljCgoKICAgIGNsYXNzIGdyZWF0ZXN0KGV4cHJlc3Npb24uRnVuY3Rpb25FbGVtZW50KToKICAgICAgICB0eXBlID0gTnVtZXJpYygpCiAgICAgICAgbmFtZSA9ICJncmVhdGVzdCIKICAgICAgICBpbmhlcml0X2NhY2hlID0gVHJ1ZQoKCiAgICBAY29tcGlsZXMoZ3JlYXRlc3QpCiAgICBkZWYgZGVmYXVsdF9ncmVhdGVzdChlbGVtZW50LCBjb21waWxlciwgKiprdyk6CiAgICAgICAgcmV0dXJuIGNvbXBpbGVyLnZpc2l0X2Z1bmN0aW9uKGVsZW1lbnQpCgoKICAgIEBjb21waWxlcyhncmVhdGVzdCwgInNxbGl0ZSIpCiAgICBAY29tcGlsZXMoZ3JlYXRlc3QsICJtc3NxbCIpCiAgICBAY29tcGlsZXMoZ3JlYXRlc3QsICJvcmFjbGUiKQogICAgZGVmIGNhc2VfZ3JlYXRlc3QoZWxlbWVudCwgY29tcGlsZXIsICoqa3cpOgogICAgICAgIGFyZzEsIGFyZzIgPSBsaXN0KGVsZW1lbnQuY2xhdXNlcykKICAgICAgICByZXR1cm4gY29tcGlsZXIucHJvY2VzcyhjYXNlKChhcmcxID4gYXJnMiwgYXJnMSksIGVsc2VfPWFyZzIpLCAqKmt3KQoKRXhhbXBsZSB1c2FnZTo6CgogICAgU2Vzc2lvbi5xdWVyeShBY2NvdW50KS5maWx0ZXIoCiAgICAgICAgZ3JlYXRlc3QoQWNjb3VudC5jaGVja2luZ19iYWxhbmNlLCBBY2NvdW50LnNhdmluZ3NfYmFsYW5jZSkgPiAxMDAwMAogICAgKQoKImZhbHNlIiBleHByZXNzaW9uCi0tLS0tLS0tLS0tLS0tLS0tLQoKUmVuZGVyIGEgImZhbHNlIiBjb25zdGFudCBleHByZXNzaW9uLCByZW5kZXJpbmcgYXMgIjAiIG9uIHBsYXRmb3JtcyB0aGF0CmRvbid0IGhhdmUgYSAiZmFsc2UiIGNvbnN0YW50OjoKCiAgICBmcm9tIHNxbGFsY2hlbXkuc3FsIGltcG9ydCBleHByZXNzaW9uCiAgICBmcm9tIHNxbGFsY2hlbXkuZXh0LmNvbXBpbGVyIGltcG9ydCBjb21waWxlcwoKCiAgICBjbGFzcyBzcWxfZmFsc2UoZXhwcmVzc2lvbi5Db2x1bW5FbGVtZW50KToKICAgICAgICBpbmhlcml0X2NhY2hlID0gVHJ1ZQoKCiAgICBAY29tcGlsZXMoc3FsX2ZhbHNlKQogICAgZGVmIGRlZmF1bHRfZmFsc2UoZWxlbWVudCwgY29tcGlsZXIsICoqa3cpOgogICAgICAgIHJldHVybiAiZmFsc2UiCgoKICAgIEBjb21waWxlcyhzcWxfZmFsc2UsICJtc3NxbCIpCiAgICBAY29tcGlsZXMoc3FsX2ZhbHNlLCAibXlzcWwiKQogICAgQGNvbXBpbGVzKHNxbF9mYWxzZSwgIm9yYWNsZSIpCiAgICBkZWYgaW50X2ZhbHNlKGVsZW1lbnQsIGNvbXBpbGVyLCAqKmt3KToKICAgICAgICByZXR1cm4gIjAiCgpFeGFtcGxlIHVzYWdlOjoKCiAgICBmcm9tIHNxbGFsY2hlbXkgaW1wb3J0IHNlbGVjdCwgdW5pb25fYWxsCgogICAgZXhwID0gdW5pb25fYWxsKAogICAgICAgIHNlbGVjdCh1c2Vycy5jLm5hbWUsIHNxbF9mYWxzZSgpLmxhYmVsKCJlbnJvbGxlZCIpKSwKICAgICAgICBzZWxlY3QoY3VzdG9tZXJzLmMubmFtZSwgY3VzdG9tZXJzLmMuZW5yb2xsZWQpLAogICAgKQoK6QAAAAApAdoLYW5ub3RhdGlvbnMpAdoDQW55KQHaCENhbGxhYmxlKQHaBERpY3QpAdoE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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 12
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
associationproxy.cpython-312.pyc
84.81 KB
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
automap.cpython-312.pyc
56.04 KB
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
baked.cpython-312.pyc
22.82 KB
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
compiler.cpython-312.pyc
20.72 KB
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
horizontal_shard.cpython-312.pyc
17.21 KB
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
hybrid.cpython-312.pyc
58.41 KB
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
indexable.cpython-312.pyc
11.89 KB
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
instrumentation.cpython-312.pyc
19.38 KB
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
mutable.cpython-312.pyc
45.22 KB
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
orderinglist.cpython-312.pyc
16.89 KB
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
serializer.cpython-312.pyc
7.84 KB
lrw-r--r--
2025-04-04 08:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-312.pyc
332 B
lrw-r--r--
2025-04-04 08:02:02
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).