REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 87.87 KB
Close
/lib/python3.6/site-packages/OpenSSL/__pycache__/crypto.cpython-36.opt-1.pyc
Text
Base64
Mw0NCqsXRlyUiAEA4wAAAAAAAAAAAAAAACQAAABAAAAAc6wDAABkAGQBbABaAGQAZAJsAW0CWgIBAGQAZANsA20EWgQBAGQAZARsBW0GWgZtB1oHbQhaCG0JWgltCloKbQtaCwEAZABkBWwMbQ1aDm0PWhBtEVoSAQBkAGQGbBNtFFoUAQBkAGQHbBVtFloWbRdaFwEAZABkCGwYbRlaGQEAZABkCWwabRtaHG0dWh5tH1ogbSFaIm0jWiRtJVombSdaKG0pWioBAGQKZAtkDGQNZA5kD2QQZBFkEmQTZBRkFWQWZBdkGGQZZBpkG2QcZB1kHmQfZCBkIWQiZCNkJGQlZCZkJ2QoZClkKmQrZCxkLWckWitlHmosWi1lHmouWi9kblowZR5qMVoyZR5qM1o0ZR5qNVo2ZR5qN1o4RwBkMWQPhABkD2U5gwNaOmUEZSBlOoMCWjtlKmU6gwFaPGQyZDOEAFo9ZDRkNYQAWj5kb2Q2ZDeEAVo/ZDhkOYQAWkBkOmQ7hABaQWQ8ZD2EAFpCRwBkPmQ/hABkP2VDgwNaREcAZEBkEIQAZBBlQ4MDWkVlGWVFZUZkQWVHgwRaSEcAZEJkQ4QAZENlQ4MDWklkRGQRhABaSmRFZBKEAFpLRwBkRmQThABkE2VDgwNaTGUZZUxlRmRHZUeDBFpNRwBkSGQUhABkFGVDgwNaTmUZZU5lRmRJZUeDBFpPRwBkSmQVhABkFWVDgwNaUGUZZVBlRmRLZUeDBFpRRwBkTGQWhABkFmVDgwNaUmUZZVJlRmRNZUeDBFpTRwBkTmQXhABkF2VDgwNaVEcAZE9kGIQAZBhlQ4MDWlVlGWVVZUZkUGVHgwRaVkcAZFFkGYQAZBllOYMDWldHAGRSZBqEAGQaZUODA1pYZFNkG4QAWllkVGQchABaWmRVZB2EAFpbZHBkVmQehAFaXEcAZFdkH4QAZB9lQ4MDWl1HAGRYZCCEAGQgZUODA1peZRllXmVGZFllR4MEWl9HAGRaZCGEAGQhZUODA1pgZRllYGVGZFtlR4MEWmFHAGRcZCKEAGQiZUODA1piZRllYmVGZF1lR4MEWmNHAGReZCOEAGQjZUODA1pkZRllZGVGZF9lR4MEWmVHAGRgZGGEAGRhZUODA1pmZGJkJIQAWmdkcWRjZCWEAVpoZGRkJoQAWmlkZWQnhABaamRmZCiEAFprZGdkKYQAWmxkaGQqhABabWRpZCuEAFpuZGpkLIQAWm9kcmRrZC2EAVpwZR5qcYMAAQBlHmpygwABAGUeanNkbIMBAQBkAVMAKXPpAAAAAE4pAdoJYjE2ZW5jb2RlKQHaB3BhcnRpYWwpBtoGX19lcV9f2gZfX25lX1/aBl9fbHRfX9oGX19sZV9f2gZfX2d0X1/aBl9fZ2VfXykD2g1pbnRlZ2VyX3R5cGVz2gl0ZXh0X3R5cGXaA1BZMykB2gR4NTA5KQLaA2RzYdoDcnNhKQHaCmRlcHJlY2F0ZWQpCNoDZmZp2gNsaWLaGmV4Y2VwdGlvbl9mcm9tX2Vycm9yX3F1ZXVl2gtieXRlX3N0cmluZ9oGbmF0aXZl2gtVTlNQRUNJRklFRNoWdGV4dF90b19ieXRlc19hbmRfd2FybtoLbWFrZV9hc3NlcnTaDEZJTEVUWVBFX1BFTdoNRklMRVRZUEVfQVNOMdoNRklMRVRZUEVfVEVYVNoIVFlQRV9SU0HaCFRZUEVfRFNB2gVFcnJvctoEUEtledoTZ2V0X2VsbGlwdGljX2N1cnZlc9oSZ2V0X2VsbGlwdGljX2N1cnZl2ghYNTA5TmFtZdoNWDUwOUV4dGVuc2lvbtoHWDUwOVJlcdoEWDUwOdoOWDUwOVN0b3JlRmxhZ3PaCVg1MDlTdG9yZdoVWDUwOVN0b3JlQ29udGV4dEVycm9y2hBYNTA5U3RvcmVDb250ZXh02hBsb2FkX2NlcnRpZmljYXRl2hBkdW1wX2NlcnRpZmljYXRl2g5kdW1wX3B1YmxpY2tledoPZHVtcF9wcml2YXRla2V52gdSZXZva2Vk2gNDUkzaBVBLQ1M32gZQS0NTMTLaDE5ldHNjYXBlU1BLSdoObG9hZF9wdWJsaWNrZXnaD2xvYWRfcHJpdmF0ZWtledoYZHVtcF9jZXJ0aWZpY2F0ZV9yZXF1ZXN02hhsb2FkX2NlcnRpZmljYXRlX3JlcXVlc3TaBHNpZ27aBnZlcmlmedoIZHVtcF9jcmzaCGxvYWRfY3Js2g9sb2FkX3BrY3M3X2RhdGHaC2xvYWRfcGtjczEy6QIAAADpEAAAAOkBAAAAYwAAAAAAAAAAAAAAAAEAAABAAAAAcxAAAABlAFoBZABaAmQBWgNkAlMAKQNyHgAAAHo3CiAgICBBbiBlcnJvciBvY2N1cnJlZCBpbiBhbiBgT3BlblNTTC5jcnlwdG9gIEFQSS4KICAgIE4pBNoIX19uYW1lX1/aCl9fbW9kdWxlX1/aDF9fcXVhbG5hbWVfX9oHX19kb2NfX6kAckQAAAByRAAAAPocL3Vzci9saWIvcHl0aG9uMy42L2NyeXB0by5weXIeAAAATgAAAHMCAAAACANjAAAAAAAAAAABAAAAAgAAAEMAAABzEAAAAGQBZAJsAG0BfQABAHwAUwApA2FwAQAACiAgICBJbXBvcnRpbmcgdGhlIGJhY2tlbmQgZnJvbSBjcnlwdG9ncmFwaHkgaGFzIHRoZSBzaWRlIGVmZmVjdCBvZiBhY3RpdmF0aW5nCiAgICB0aGUgb3NyYW5kb20gZW5naW5lLiBUaGlzIG11dGF0ZXMgdGhlIGdsb2JhbCBzdGF0ZSBvZiBPcGVuU1NMIGluIHRoZQogICAgcHJvY2VzcyBhbmQgY2F1c2VzIGlzc3VlcyBmb3IgdmFyaW91cyBwcm9ncmFtcyB0aGF0IHVzZSBzdWJpbnRlcnByZXRlcnMgb3IKICAgIGVtYmVkIFB5dGhvbi4gQnkgcHV0dGluZyB0aGUgaW1wb3J0IGluIHRoaXMgZnVuY3Rpb24gd2UgY2FuIGF2b2lkCiAgICB0cmlnZ2VyaW5nIHRoaXMgc2lkZSBlZmZlY3QgdW5sZXNzIF9nZXRfYmFja2VuZCBpcyBjYWxsZWQuCiAgICByAQAAACkB2gdiYWNrZW5kKQJaLGNyeXB0b2dyYXBoeS5oYXptYXQuYmFja2VuZHMub3BlbnNzbC5iYWNrZW5kckYAAAApAXJGAAAAckQAAAByRAAAAHJFAAAA2gxfZ2V0X2JhY2tlbmRYAAAAcwQAAAAACAwBckcAAABjAQAAAAAAAAABAAAAAwAAAEMAAABzEgAAAHQAZAF8AGYBFgCDAYIBZAJTACkDetAKICAgIEFuIE9wZW5TU0wgQVBJIGZhaWxlZCBzb21laG93LiAgQWRkaXRpb25hbGx5LCB0aGUgZmFpbHVyZSB3aGljaCB3YXMKICAgIGVuY291bnRlcmVkIGlzbid0IG9uZSB0aGF0J3MgZXhlcmNpc2VkIGJ5IHRoZSB0ZXN0IHN1aXRlIHNvIGZ1dHVyZSBiZWhhdmlvcgogICAgb2YgcHlPcGVuU1NMIGlzIG5vdyBzb21ld2hhdCBsZXNzIHByZWRpY3RhYmxlLgogICAgehJVbmtub3duICVzIGZhaWx1cmVOKQHaDFJ1bnRpbWVFcnJvcikB2gV3aGVyZXJEAAAAckQAAAByRQAAANoPX3VudGVzdGVkX2Vycm9yZAAAAHMCAAAAAAZySgAAAGMBAAAAAAAAAAQAAAAEAAAAQwAAAHNkAAAAfABkAWsIch50AGoBdABqAoMAgwF9AXQAagN9Am4odARqBWQCfACDAn0DdABqBnwDdAd8AIMBgwJ9AXwDZgFkA2QEhAF9AnQIfAF0BGoJawODAQEAdARqCnwBfAKDAn0BfAFTACkFetkKICAgIEFsbG9jYXRlIGEgbmV3IE9wZW5TU0wgbWVtb3J5IEJJTy4KCiAgICBBcnJhbmdlIGZvciB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgdG8gY2xlYW4gaXQgdXAgYXV0b21hdGljYWxseS4KCiAgICA6cGFyYW0gYnVmZmVyOiBOb25lIG9yIHNvbWUgYnl0ZXMgdG8gdXNlIHRvIHB1dCBpbnRvIHRoZSBCSU8gc28gdGhhdCB0aGV5CiAgICAgICAgY2FuIGJlIHJlYWQgb3V0LgogICAgTnoGY2hhcltdYwIAAAAAAAAAAgAAAAIAAABTAAAAcwoAAAB0AGoBfACDAVMAKQFOKQLaBF9saWLaCEJJT19mcmVlKQLaA2Jpb9oDcmVmckQAAAByRAAAAHJFAAAA2gRmcmVlfgAAAHMCAAAAAAF6Gl9uZXdfbWVtX2J1Zi48bG9jYWxzPi5mcmVlKQtySwAAANoHQklPX25ld9oJQklPX3NfbWVtckwAAADaBF9mZmnaA25ld1oPQklPX25ld19tZW1fYnVm2gNsZW7aD19vcGVuc3NsX2Fzc2VydNoETlVMTNoCZ2MpBNoGYnVmZmVyck0AAAByTwAAANoEZGF0YXJEAAAAckQAAAByRQAAANoMX25ld19tZW1fYnVmbQAAAHMSAAAAAAkIAQ4BCAIMARADDAMOAgwBcloAAABjAQAAAAAAAAADAAAAAwAAAEMAAABzLgAAAHQAagFkAYMBfQF0AmoDfAB8AYMCfQJ0AGoEfAFkAhkAfAKDAmQDZAOFAhkAUwApBHpPCiAgICBDb3B5IHRoZSBjb250ZW50cyBvZiBhbiBPcGVuU1NMIEJJTyBvYmplY3QgaW50byBhIFB5dGhvbiBieXRlIHN0cmluZy4KICAgIHoGY2hhcioqcgEAAABOKQVyUgAAAHJTAAAAcksAAABaEEJJT19nZXRfbWVtX2RhdGFyWAAAACkDck0AAADaDXJlc3VsdF9idWZmZXJaDWJ1ZmZlcl9sZW5ndGhyRAAAAHJEAAAAckUAAADaDl9iaW9fdG9fc3RyaW5nhwAAAHMGAAAAAAQKAQwBclwAAABjAgAAAAAAAAADAAAAAwAAAEMAAABzMgAAAHQAfAF0AYMCcxJ0AmQBgwGCAXQDagR8AHwBgwJ9AnwCZAJrAnIudAVkA4MBggFkBFMAKQVh9AEAAAogICAgVGhlIHRoZSB0aW1lIHZhbHVlIG9mIGFuIEFTTjEgdGltZSBvYmplY3QuCgogICAgQHBhcmFtIGJvdW5kYXJ5OiBBbiBBU04xX1RJTUUgcG9pbnRlciAob3IgYW4gb2JqZWN0IHNhZmVseQogICAgICAgIGNhc3RhYmxlIHRvIHRoYXQgdHlwZSkgd2hpY2ggd2lsbCBoYXZlIGl0cyB2YWx1ZSBzZXQuCiAgICBAcGFyYW0gd2hlbjogQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGRlc2lyZWQgdGltZSB2YWx1ZS4KCiAgICBAcmFpc2UgVHlwZUVycm9yOiBJZiBDe3doZW59IGlzIG5vdCBhIEx7Ynl0ZXN9IHN0cmluZy4KICAgIEByYWlzZSBWYWx1ZUVycm9yOiBJZiBDe3doZW59IGRvZXMgbm90IHJlcHJlc2VudCBhIHRpbWUgaW4gdGhlIHJlcXVpcmVkCiAgICAgICAgZm9ybWF0LgogICAgQHJhaXNlIFJ1bnRpbWVFcnJvcjogSWYgdGhlIHRpbWUgdmFsdWUgY2Fubm90IGJlIHNldCBmb3Igc29tZSBvdGhlcgogICAgICAgICh1bnNwZWNpZmllZCkgcmVhc29uLgogICAgehp3aGVuIG11c3QgYmUgYSBieXRlIHN0cmluZ3IBAAAAeg5JbnZhbGlkIHN0cmluZ04pBtoKaXNpbnN0YW5jZdoFYnl0ZXPaCVR5cGVFcnJvcnJLAAAAWhRBU04xX1RJTUVfc2V0X3N0cmluZ9oKVmFsdWVFcnJvcikD2ghib3VuZGFyedoEd2hlbtoKc2V0X3Jlc3VsdHJEAAAAckQAAAByRQAAANoOX3NldF9hc24xX3RpbWWQAAAAcwoAAAAADgoBCAIMAQgBcmQAAABjAQAAAAAAAAAFAAAABAAAAEMAAABzpgAAAHQAagFkAXwAgwJ9AXQCagN8AYMBZAJrAnIeZANTAHQCagR8AYMBdAJqBWsCcj50AGoGdAJqB3wBgwGDAVMAdABqCGQEgwF9AnQCagl8AHwCgwIBAHwCZAIZAHQAagprAnJsdAtkBYMBAQBuNnQAagFkAXwCZAIZAIMCfQF0AmoHfAGDAX0DdABqBnwDgwF9BHQCagx8AmQCGQCDAQEAfARTAGQDUwApBmFdAQAACiAgICBSZXRyaWV2ZSB0aGUgdGltZSB2YWx1ZSBvZiBhbiBBU04xIHRpbWUgb2JqZWN0LgoKICAgIEBwYXJhbSB0aW1lc3RhbXA6IEFuIEFTTjFfR0VORVJBTElaRURUSU1FKiAob3IgYW4gb2JqZWN0IHNhZmVseSBjYXN0YWJsZSB0bwogICAgICAgIHRoYXQgdHlwZSkgZnJvbSB3aGljaCB0aGUgdGltZSB2YWx1ZSB3aWxsIGJlIHJldHJpZXZlZC4KCiAgICBAcmV0dXJuOiBUaGUgdGltZSB2YWx1ZSBmcm9tIEN7dGltZXN0YW1wfSBhcyBhIEx7Ynl0ZXN9IHN0cmluZyBpbiBhIGNlcnRhaW4KICAgICAgICBmb3JtYXQuICBPciBDe05vbmV9IGlmIHRoZSBvYmplY3QgY29udGFpbnMgbm8gdGltZSB2YWx1ZS4KICAgIHoMQVNOMV9TVFJJTkcqcgEAAABOehZBU04xX0dFTkVSQUxJWkVEVElNRSoq2hxBU04xX1RJTUVfdG9fZ2VuZXJhbGl6ZWR0aW1lKQ1yUgAAANoEY2FzdHJLAAAA2hJBU04xX1NUUklOR19sZW5ndGhaEEFTTjFfU1RSSU5HX3R5cGVaFlZfQVNOMV9HRU5FUkFMSVpFRFRJTUXaBnN0cmluZ9oQQVNOMV9TVFJJTkdfZGF0YXJTAAAAcmUAAAByVgAAAHJKAAAAWhlBU04xX0dFTkVSQUxJWkVEVElNRV9mcmVlKQVaCXRpbWVzdGFtcFoQc3RyaW5nX3RpbWVzdGFtcFoV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ICAgICAgOnR5cGUgdHlwZTogOnB5OmRhdGE6YFRZUEVfUlNBYCBvciA6cHk6ZGF0YTpgVFlQRV9EU0FgCiAgICAgICAgOnBhcmFtIGJpdHM6IFRoZSBudW1iZXIgb2YgYml0cy4KICAgICAgICA6dHlwZSBiaXRzOiA6cHk6ZGF0YTpgaW50YCBgYD49IDBgYAogICAgICAgIDpyYWlzZXMgVHlwZUVycm9yOiBJZiA6cHk6ZGF0YTpgdHlwZWAgb3IgOnB5OmRhdGE6YGJpdHNgIGlzbid0CiAgICAgICAgICAgIG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlLgogICAgICAgIDpyYWlzZXMgVmFsdWVFcnJvcjogSWYgdGhlIG51bWJlciBvZiBiaXRzIGlzbid0IGFuIGludGVnZXIgb2YKICAgICAgICAgICAgdGhlIGFwcHJvcHJpYXRlIHNpemUuCiAgICAgICAgOnJldHVybjogYGBOb25lYGAKICAgICAgICB6F3R5cGUgbXVzdCBiZSBhbiBpbnRlZ2VyehdiaXRzIG11c3QgYmUgYW4gaW50ZWdlcnIBAAAAehZJbnZhbGlkIG51bWJlciBvZiBiaXRzcj8AAAB6EE5vIHN1Y2gga2V5IHR5cGVUTikacl0AAADaA2ludHJfAAAAchwAAAByYAAAAHJLAAAA2gZCTl9uZXdyUgAAAHJXAAAA2gdCTl9mcmVlWgtCTl9zZXRfd29yZFoGUlNBX0Y0WgdSU0FfbmV3WhNSU0FfZ2VuZXJhdGVfa2V5X2V4clYAAAByVQAAAFoTRVZQX1BLRVlfYXNzaWduX1JTQXJ2AAAAch0AAABaB0RTQV9uZXdaCERTQV9mcmVlWhpEU0FfZ2VuZXJhdGVfcGFyYW1ldGVyc19leFoQRFNBX2dlbmVyYXRlX2tleVoRRVZQX1BLRVlfc2V0MV9EU0FyHgAAAHJ3AAAAKQhybgAAANoEdHlwZdoEYml0c1oIZXhwb25lbnRyDwAAANoGcmVzdWx0cg4AAADaA3Jlc3JEAAAAckQAAAByRQAAANoMZ2VuZXJhdGVfa2V5DwEAAHM0AAAAABAKAQgCCgEIAggBCAEIAwgBDgEOAggCEgEMAg4BDgIKAQgBDgIOAQQBGgIMAhIBGAIIAnoRUEtleS5nZW5lcmF0ZV9r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bQF9AQEAdAKDAH0CfAF8AnwAagODAlMAKQN6rgogICAgICAgIEV4cG9ydCBhcyBhIGBgY3J5cHRvZ3JhcGh5YGAgY2VydGlmaWNhdGUgc2lnbmluZyByZXF1ZXN0LgoKICAgICAgICA6cnR5cGU6IGBgY3J5cHRvZ3JhcGh5Lng1MDkuQ2VydGlmaWNhdGVTaWduaW5nUmVxdWVzdGBgCgogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDE3LjEuMAogICAgICAgIHIBAAAAKQHaGl9DZXJ0aWZpY2F0ZVNpZ25pbmdSZXF1ZXN0KQTaKWNyeXB0b2dyYXBoeS5oYXptYXQuYmFja2VuZHMub3BlbnNzbC54NTA5cuMAAAByRwAAAHLgAAAAKQNybgAAAHLjAAAAckYAAAByRAAAAHJEAAAAckUAAADaD3RvX2NyeXB0b2dyYXBoeXUDAABzBgAAAAAIDAMGAXoXWDUwOVJlcS50b19jcnlwdG9ncmFwaHljAgAAAAAAAAADAAAAAwAAAEMAAABzJgAAAHQAfAF0AWoCgwJzFHQDZAGDAYIBfACDAH0CfAFqBHwCXwV8AlMAKQJhGwEAAAogICAgICAgIENvbnN0cnVjdCBiYXNlZCBvbiBhIGBgY3J5cHRvZ3JhcGh5YGAgKmNyeXB0b19yZXEqLgoKICAgICAgICA6cGFyYW0gY3J5cHRvX3JlcTogQSBgYGNyeXB0b2dyYXBoeWBgIFguNTA5IGNlcnRpZmljYXRlIHNpZ25pbmcgcmVxdWVzdAogICAgICAgIDp0eXBlIGNyeXB0b19yZXE6IGBgY3J5cHRvZ3JhcGh5Lng1MDkuQ2VydGlmaWNhdGVTaWduaW5nUmVxdWVzdGBgCgogICAgICAgIDpydHlwZTogWDUwOVJlcQoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxNy4xLjAKICAgICAgICB6JU11c3QgYmUgYSBjZXJ0aWZpY2F0ZSBzaWduaW5nIHJlcXVlc3QpBnJdAAAAcg0AAABaGUNlcnRpZmljYXRlU2lnbmluZ1JlcXVlc3RyXwAAAFoJX3g1MDlfcmVxcuAAAAApA3J7AAAAWgpjcnlwdG9fcmVxcuIAAAByRAAAAHJEAAAAckUAAADaEWZyb21fY3J5cHRvZ3JhcGh5gwMA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Q1JJVElDQUxaF1g1MDlfVl9GTEFHX1g1MDlfU1RSSUNUWgtYNTA5X1NUUklDVFodWDUwOV9WX0ZMQUdfQUxMT1dfUFJPWFlfQ0VSVFNaEUFMTE9XX1BST1hZX0NFUlRTWhhYNTA5X1ZfRkxBR19QT0xJQ1lfQ0hFQ0taDFBPTElDWV9DSEVDS1obWDUwOV9WX0ZMQUdfRVhQTElDSVRfUE9MSUNZWg9FWFBMSUNJVF9QT0xJQ1laF1g1MDlfVl9GTEFHX0lOSElCSVRfTUFQWgtJTkhJQklUX01BUFoZWDUwOV9WX0ZMQUdfTk9USUZZX1BPTElDWVoNTk9USUZZX1BPTElDWVoeWDUwOV9WX0ZMQUdfQ0hFQ0tfU1NfU0lHTkFUVVJFWhJDSEVDS19TU19TSUdOQVRVUkVaG1g1MDlfVl9GTEFHX0NCX0lTU1VFUl9DSEVDS1oPQ0JfSVNTVUVSX0NIRUNLckQAAAByRAAAAHJEAAAAckUAAAByJgAAABEGAABzGAAAAAgJBAEGAQYBBgEGAQYBBgEGAQYBBgEGAWMAAAAAAAAAAAAAAAACAAAAQAAAAHM4AAAAZQBaAWQAWgJkAVoDZAJkA4QAWgRkBGQFhABaBWQGZAeEAFoGZAhkCYQAWgdkCmQLhABaCGQMUwApDXInAAAAYboBAAAKICAgIEFuIFguNTA5IHN0b3JlLgoKICAgIEFuIFguNTA5IHN0b3JlIGlzIHVzZWQgdG8gZGVzY3JpYmUgYSBjb250ZXh0IGluIHdoaWNoIHRvIHZlcmlmeSBhCiAgICBjZXJ0aWZpY2F0ZS4gQSBkZXNjcmlwdGlvbiBvZiBhIGNvbnRleHQgbWF5IGluY2x1ZGUgYSBzZXQgb2YgY2VydGlmaWNhdGVzCiAgICB0byB0cnVzdCwgYSBzZXQgb2YgY2VydGlmaWNhdGUgcmV2b2NhdGlvbiBsaXN0cywgdmVyaWZpY2F0aW9uIGZsYWdzIGFuZAogICAgbW9yZS4KCiAgICBBbiBYLjUwOSBzdG9yZSwgYmVpbmcgb25seSBhIGRlc2NyaXB0aW9uLCBjYW5ub3QgYmUgdXNlZCBieSBpdHNlbGYgdG8KICAgIHZlcmlmeSBhIGNlcnRpZmljYXRlLiBUbyBjYXJyeSBvdXQgdGhlIGFjdHVhbCB2ZXJpZmlj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LAogICAgICAgIDpjb25zdDpgRklMRVRZUEVfQVNOMWAsIG9yIDpjb25zdDpgRklMRVRZUEVfVEVYVGApCiAgICA6cGFyYW0gUEtleSBwa2V5OiBUaGUgUEtleSB0byBkdW1wCiAgICA6cGFyYW0gY2lwaGVyOiAob3B0aW9uYWwpIGlmIGVuY3J5cHRlZCBQRU0gZm9ybWF0LCB0aGUgY2lwaGVyIHRvIHVzZQogICAgOnBhcmFtIHBhc3NwaHJhc2U6IChvcHRpb25hbCkgaWYgZW5jcnlwdGVkIFBFTSBmb3JtYXQsIHRoaXMgY2FuIGJlIGVpdGhlcgogICAgICAgIHRoZSBwYXNzcGhyYXNlIHRvIHVzZSwgb3IgYSBjYWxsYmFjayBmb3IgcHJvdmlkaW5nIHRoZSBwYXNzcGhyYXNlLgoKICAgIDpyZXR1cm46IFRoZSBidWZmZXIgd2l0aCB0aGUgZHVtcGVkIGtleSBpbgogICAgOnJ0eXBlOiBieXRlcwogICAgehNwa2V5IG11c3QgYmUgYSBQS2V5TnpEaWYgYSB2YWx1ZSBpcyBnaXZlbiBmb3IgY2lwaGVyIG9uZSBtdXN0IGFsc28gYmUgZ2l2ZW4gZm9yIHBhc3NwaHJhc2V6E0ludmFsaWQgY2lwaGVyIG5hbWVyAQAAAHotT25seSBSU0Ega2V5cyBhcmUgc3VwcG9ydGVkIGZvciBGSUxFVFlQRV9URVhUekN0eXBlIGFyZ3VtZW50IG11c3QgYmUgRklMRVRZUEVfUEVNLCBGSUxFVFlQRV9BU04xLCBvciBGSUxFVFlQRV9URVhUKRxyWgAAAHJdAAAAch8AAAByXwAAAHJLAAAAWhRFVlBfZ2V0X2NpcGhlcmJ5bmFtZXKrAAAAclIAAAByVgAAAHJgAAAA2hFfUGFzc3BocmFzZUhlbHBlcnIZAAAAWhhQRU1fd3JpdGVfYmlvX1ByaXZhdGVLZXlydgAAANoIY2FsbGJhY2vaDWNhbGxiYWNrX2FyZ3PaEHJhaXNlX2lmX3Byb2JsZW1yGgAAAFoSaTJkX1ByaXZhdGVLZXlfYmlvchsAAAByigAAAHKFAAAAclcAAAByhgAAAHKHAAAAWglSU0FfcHJpbnRyVQAAAHJcAAAAKQlygAAAAHJ4AAAAWgZjaXBoZXLaCnBhc3Nw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IHBhZ2UuCgogICAgICAgIDpwYXJhbSBwYXNzcGhyYXNlOiBUaGUgcGFzc3BocmFzZSB1c2VkIHRvIGVuY3J5cHQgdGhlIHN0cnVjdHVyZS4gVW5saWtlCiAgICAgICAgICAgIHNvbWUgb3RoZXIgcGFzc3BocmFzZSBhcmd1bWVudHMsIHRoaXMgKm11c3QqIGJlIGEgc3RyaW5nLCBub3QgYQogICAgICAgICAgICBjYWxsYmFjay4KICAgICAgICA6dHlwZSBwYXNzcGhyYXNlOiA6cHk6ZGF0YTpgYnl0ZXNgCgogICAgICAgIDpwYXJhbSBpdGVyOiBOdW1iZXIgb2YgdGltZXMgdG8gcmVwZWF0IHRoZSBlbmNyeXB0aW9uIHN0ZXAuCiAgICAgICAgOnR5cGUgaXRlcjogOnB5OmRhdGE6YGludGAKCiAgICAgICAgOnBhcmFtIG1hY2l0ZXI6IE51bWJlciBvZiB0aW1lcyB0byByZXBlYXQgdGhlIE1BQyBzdGVwLgogICAgICAgIDp0eXBlIG1hY2l0ZXI6IDpweTpkYXRhOmBpbnRgCgogICAgICAgIDpyZXR1cm46IFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIFBLQ1MgIzEyIHN0cnVjdHVyZS4KICAgICAgICA6cnR5cGU6CiAgICAgICAgckQBAABOcgEAAAApFNoXX3RleHRfdG9fYnl0ZXNfYW5kX3dhcm5ydQEAAHJSAAAAclYAAABySwAAAFoQc2tfWDUwOV9uZXdfbnVsbHJXAAAA2gxza19YNTA5X2ZyZWVaDHNrX1g1MDlfcHVzaHLEAAAAcnYBAABydgAAAHI2AQAAWg1QS0NTMTJfY3JlYXRlWiZOSURfcGJlX1dpdGhTSEExQW5kM19LZXlfVHJpcGxlREVTX0NCQ3KIAAAA2gtQS0NTMTJfZnJlZXJaAAAAWg5pMmRfUEtDUzEyX2Jpb3JcAAAAKQpybgAAAHJEAQAA2gRpdGVyWgdtYWNpdGVycn0BAABy+gAAANoMZnJpZW5kbHluYW1lcngAAADaBnBrY3MxMnJNAAAAckQAAAByRAAAAHJFAAAAcm0BAADQCQAAczoAAAAAFAoCCgEIAggBDgEMARICCAEGAgYBCAEGAgoBCAIIAgoBCAIIAgQBCgEE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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 16
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
crypto.cpython-36.opt-1.pyc
87.87 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
crypto.cpython-36.pyc
87.93 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
debug.cpython-36.opt-1.pyc
1.08 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
debug.cpython-36.pyc
1.08 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
rand.cpython-36.opt-1.pyc
1.21 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
rand.cpython-36.pyc
1.21 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
SSL.cpython-36.opt-1.pyc
75.75 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
SSL.cpython-36.pyc
75.82 KB
lrw-r--r--
2021-04-09 04:52:24
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
tsafe.cpython-36.opt-1.pyc
1.42 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
tsafe.cpython-36.pyc
1.42 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
version.cpython-36.opt-1.pyc
615 B
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
version.cpython-36.pyc
615 B
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
_util.cpython-36.opt-1.pyc
4.05 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
_util.cpython-36.pyc
4.05 KB
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-36.opt-1.pyc
526 B
lrw-r--r--
2021-04-09 04:52:25
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-36.pyc
526 B
lrw-r--r--
2021-04-09 04:52:25
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).