BLUE
PHP 7.4.33
Path:
/lib/python3.10/unittest/__pycache__
Run
Logout
Edit File
Size: 77.94 KB
Close
/lib/python3.10/unittest/__pycache__/mock.cpython-310.pyc
Text
Base64
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cHBvcnRlZCBtYWdpYyBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzKS4gQWNjZXNzaW5nCiAgICAgIGFueSBhdHRyaWJ1dGUgbm90IGluIHRoaXMgbGlzdCB3aWxsIHJhaXNlIGFuIGBBdHRyaWJ1dGVFcnJvcmAuCgogICAgICBJZiBgc3BlY2AgaXMgYW4gb2JqZWN0IChyYXRoZXIgdGhhbiBhIGxpc3Qgb2Ygc3RyaW5ncykgdGhlbgogICAgICBgbW9jay5fX2NsYXNzX19gIHJldHVybnMgdGhlIGNsYXNzIG9mIHRoZSBzcGVjIG9iamVjdC4gVGhpcyBhbGxvd3MgbW9ja3MKICAgICAgdG8gcGFzcyBgaXNpbnN0YW5jZWAgdGVzdHMuCgogICAgKiBgc3BlY19zZXRgOiBBIHN0cmljdGVyIHZhcmlhbnQgb2YgYHNwZWNgLiBJZiB1c2VkLCBhdHRlbXB0aW5nIHRvICpzZXQqCiAgICAgIG9yIGdldCBhbiBhdHRyaWJ1dGUgb24gdGhlIG1vY2sgdGhhdCBpc24ndCBvbiB0aGUgb2JqZWN0IHBhc3NlZCBhcwogICAgICBgc3BlY19zZXRgIHdpbGwgcmFpc2UgYW4gYEF0dHJpYnV0ZUVycm9yYC4KCiAgICAqIGBzaWRlX2VmZmVjdGA6IEEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW5ldmVyIHRoZSBNb2NrIGlzIGNhbGxlZC4gU2VlCiAgICAgIHRoZSBgc2lkZV9lZmZlY3RgIGF0dHJpYnV0ZS4gVXNlZnVsIGZvciByYWlzaW5nIGV4Y2VwdGlvbnMgb3IKICAgICAgZHluYW1pY2FsbHkgY2hhbmdpbmcgcmV0dXJuIHZhbHVlcy4gVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHRoZSBzYW1lCiAgICAgIGFyZ3VtZW50cyBhcyB0aGUgbW9jaywgYW5kIHVubGVzcyBpdCByZXR1cm5zIGBERUZBVUxUYCwgdGhlIHJldHVybgogICAgICB2YWx1ZSBvZiB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgYXMgdGhlIHJldHVybiB2YWx1ZS4KCiAgICAgIElmIGBzaWRlX2VmZmVjdGAgaXMgYW4gaXRlcmFibGUgdGhlbiBlYWNoIGNhbGwgdG8gdGhlIG1vY2sgd2lsbCByZXR1cm4KICAgICAgdGhlIG5leHQgdmFsdWUgZnJvbSB0aGUgaXRlcmFibGUuIElmIGFueSBvZiB0aGUgbWVtYmVycyBvZiB0aGUgaXRlcmFibGUKICAgICAgYXJlIGV4Y2VwdGlvbnMgdGhleSB3aWxsIGJlIHJhaXNlZCBpbnN0ZWFkIG9mIHJldHVybmVkLgoKICAgICogYHJldHVybl92YWx1ZWA6IFRoZSB2YWx1ZSByZXR1cm5lZCB3aGVuIHRoZSBtb2NrIGlzIGNhbGxlZC4gQnkgZGVmYXVsdAogICAgICB0aGlzIGlzIGEgbmV3IE1vY2sgKGNyZWF0ZWQgb24gZmlyc3QgYWNjZXNzKS4gU2VlIHRoZQogICAgICBgcmV0dXJuX3ZhbHVlYCBhdHRyaWJ1dGUuCgogICAgKiBgd3JhcHNgOiBJdGVtIGZvciB0aGUgbW9jayBvYmplY3QgdG8gd3JhcC4gSWYgYHdyYXBzYCBpcyBub3QgTm9uZSB0aGVuCiAgICAgIGNhbGxpbmcgdGhlIE1vY2sgd2lsbCBwYXNzIHRoZSBjYWxsIHRocm91Z2ggdG8gdGhlIHdyYXBwZWQgb2JqZWN0CiAgICAgIChyZXR1cm5pbmcgdGhlIHJlYWwgcmVzdWx0KS4gQXR0cmlidXRlIGFjY2VzcyBvbiB0aGUgbW9jayB3aWxsIHJldHVybiBhCiAgICAgIE1vY2sgb2JqZWN0IHRoYXQgd3JhcHMgdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIG9mIHRoZSB3cmFwcGVkIG9iamVjdAogICAgICAoc28gYXR0ZW1wdGluZyB0byBhY2Nlc3MgYW4gYXR0cmlidXRlIHRoYXQgZG9lc24ndCBleGlzdCB3aWxsIHJhaXNlIGFuCiAgICAgIGBBdHRyaWJ1dGVFcnJvcmApLgoKICAgICAgSWYgdGhlIG1vY2sgaGFzIGFuIGV4cGxpY2l0IGByZXR1cm5fdmFsdWVgIHNldCB0aGVuIGNhbGxzIGFyZSBub3QgcGFzc2VkCiAgICAgIHRvIHRoZSB3cmFwcGVkIG9iamVjdCBhbmQgdGhlIGByZXR1cm5fdmFsdWVgIGlzIHJldHVybmVkIGluc3Rl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agF8AGoCAwMCA30BfQJ9A3wAagN8AGoEAgJ9BH0FfABqBX0GfACgBqEAfABfB3wCZAF1AHIgZAJ9AnwDZAF1AHImZAJ9A3wEZAF1AHIsZAJ9BHwCZAJ1AXI4fARkAnUBcjh0CGQDgwGCAXwCZAJ1AXNAfARkAnUBckh8A2QEdgFySHQIZAWDAYIBfACgCaEAXAJ9B30IfAF0CnUAkAFyLnwEZAJ1AJABci5kAX0JfAJkBnUAcml8B30CfANkBnUAcmh8B30DZAJ9Am4TfAJkAnUBcnZ8A2QGdQBydXwCfQNkAn0CbgZ8A2QGdQByfHwHfQN8AmQCdQFzhHwDZAJ1AXKTfAd0CnUAcox0CGQHgwGCAXQLfAd0DIMCcpNkBn0JfAJkAnUAcp50DXwHgwFynnQOfQpuAnQPfQppAH0LfAZkAnUBcql8Bn0Kbil8AmQCdQFzsXwDZAJ1AXLSfAJ9DHwDZAJ1AXK5fAN9DHQQfAyDAXLCZAh8DHYBfQ1uBXQRfAyDAQwAfQ10DXwMgwFyznQOfQpuBHwNctJ0En0KfAJkAnUBctp8AnwLZAk8AHwDZAJ1AXLifAN8C2QKPAB0C3wKdAyDAnL0dBN8CnQUgwJy9HwAahVy9HwAahV8C2QLPAB8C6AWfAWhAQEAfApkGWkAfAukAY4BfQF8CZABci10F3wBgwGQAXItfAJ9DHwDZAJ1AZABchF8A30MdBB8DIMBkAFzHXQYfAyDAZABcx10En0KfAugGWQLoQEBAHwKZBl8AWQMZA2cAnwLpAGOAXwBXxpubHwEZAJ1AZABcpN8AXQKdQGQAXI8dAhkDoMBggF8B3QKdQCQAXJFdAhkD4MBggF0G3wDgwF9A3wEZAZ1AJABclB8B30EdBd8AGoHgwGQAXJmdBxkEHwAahWbAmQRfABqB5sCZBJ8BJsCZBOdB4MBggF0F3wEgwGQAXKGdB18AGoHZBR8AGoHgwN9DnQcZBB8AGoVmwJkFXwOmwJkFnwAagebAmQSfASbAmQTnQmDAYIBdB58BGYBfAN8AGoVZBecAnwFpAGOAX0Bbgd8BZABcpp0CGQYgwGCAXwBfQ98B3wAXx98CHwAXyB0IaAioQB8AF8jejl0JHwAagd8AGoVfA+DAwEAfABqJWQCdQGQAXLeaQB9EHwAagB0CnUAkAFyw3wBfBB8AGolPAB8AGom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CGQFGQBcAn0JfQp0BXwHfAl8CnwBfAJ8A3wEfAVpAIMJfQt8CXwLXwZ8CGQGZAeFAhkARABdGVwCfQl9CnQFfAd8CXwKfAF8AnwDfAR8BWkAgwl9DHwJfAxfBnwLagegCHwMoQEBAHE6fAtTACkIYb4DAABQZXJmb3JtIG11bHRpcGxlIHBhdGNoZXMgaW4gYSBzaW5nbGUgY2FsbC4gSXQgdGFrZXMgdGhlIG9iamVjdCB0byBiZQogICAgcGF0Y2hlZCAoZWl0aGVyIGFzIGFuIG9iamVjdCBvciBhIHN0cmluZyB0byBmZXRjaCB0aGUgb2JqZWN0IGJ5IGltcG9ydGluZykKICAgIGFuZCBrZXl3b3JkIGFyZ3VtZW50cyBmb3IgdGhlIHBhdGNoZXM6OgoKICAgICAgICB3aXRoIHBhdGNoLm11bHRpcGxlKHNldHRpbmdzLCBGSVJTVF9QQVRDSD0nb25lJywgU0VDT05EX1BBVENIPSd0d28nKToKICAgICAgICAgICAgLi4uCgogICAgVXNlIGBERUZBVUxUYCBhcyB0aGUgdmFsdWUgaWYgeW91IHdhbnQgYHBhdGNoLm11bHRpcGxlYCB0byBjcmVhdGUKICAgIG1vY2tzIGZvciB5b3UuIEluIHRoaXMgY2FzZSB0aGUgY3JlYXRlZCBtb2NrcyBhcmUgcGFzc2VkIGludG8gYSBkZWNvcmF0ZWQKICAgIGZ1bmN0aW9uIGJ5IGtleXdvcmQsIGFuZCBhIGRpY3Rpb25hcnkgaXMgcmV0dXJuZWQgd2hlbiBgcGF0Y2gubXVsdGlwbGVgIGlzCiAgICB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgoKICAgIGBwYXRjaC5tdWx0aXBsZWAgY2FuIGJlIHVzZWQgYXMgYSBkZWNvcmF0b3IsIGNsYXNzIGRlY29yYXRvciBvciBhIGNvbnRleHQKICAgIG1hbmFnZXIuIFRoZSBhcmd1bWVudHMgYHNwZWNgLCBgc3BlY19zZXRgLCBgY3JlYXRlYCwKICAgIGBhdXRvc3BlY2AgYW5kIGBuZXdfY2FsbGFibGVgIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IgYHBhdGNoYC4gVGhlc2UKICAgIGFyZ3VtZW50cyB3aWxsIGJlIGFwcGxpZWQgdG8gKmFsbCogcGF0Y2hlcyBkb25lIGJ5IGBwYXRjaC5tdWx0aXBsZWAuCgogICAgV2hlbiB1c2VkIGFzIGEgY2xhc3MgZGVjb3JhdG9yIGBwYXRjaC5tdWx0aXBsZWAgaG9ub3VycyBgcGF0Y2guVEVTVF9QUkVGSVhgCiAgICBmb3IgY2hvb3Npbmcgd2hpY2ggbWV0aG9kcyB0byB3cmFwLgogICAgYwAAAAAAAAAAAAAAAAAAAAACAAAAEwAAAHL/AQAAcjkAAAByAAIAAHIgAAAAcgECAAByIAAAAHIhAAAAchsBAACKBgAAcgICAAB6IV9wYXRjaF9tdWx0aXBsZS48bG9jYWxzPi48bGFtYmRhPmMAAAAAAAAAAAAAAAAAAAAAAQAAABMAAAByBQIAAHI5AAAAciAAAAByIAAAAHIBAgAAciAAAAByIQAAAHIbAQAAjAYAAHIGAgAAej1NdXN0IHN1cHBseSBhdCBsZWFzdCBvbmUga2V5d29yZCBhcmd1bWVudCB3aXRoIHBhdGNoLm11bHRpcGxlchAAAAByxAAAAE4pCXI7AAAAcgcCAAByRgAAAHJkAAAAch4BAAByuAEAAHLDAQAAcr8BAAByAwEAACkNcq0BAABy2gAAAHK8AQAActkAAAByvgEAAHK7AQAAclAAAAByugEAAHIeAQAAcmAAAABy5gAAAHLEAQAA2gx0aGlzX3BhdGNoZXJyIAAAAHIBAgAAciEAAADaD19wYXRjaF9tdWx0aXBsZXMGAABzLAAAAAwWDgEMAgQCAgECAQT/DAQMAQIBDAEGAQT+BgQUAQIBDAEGAQT+BgQOAQQBcgoCAABjBwAAAAAAAAABAAAACwAAAAwAAABLAAAAcygAAAB0AHwAgwFcAn0JfQp0AXwJfAp8AXwCfAN8BHwFfAZ8CHwHZAGNClMAKQJhOg8AAAogICAgYHBhdGNoYCBhY3RzIGFzIGEgZnVuY3Rpb24gZGVjb3JhdG9yLCBjbGFzcyBkZWNvcmF0b3Igb3IgYSBjb250ZXh0CiAgICBtYW5hZ2VyLiBJbnNpZGUgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uIG9yIHdpdGggc3RhdGVtZW50LCB0aGUgYHRhcmdldGAKICAgIGlzIHBhdGNoZWQgd2l0aCBhIGBuZXdgIG9iamVjdC4gV2hlbiB0aGUgZnVuY3Rpb24vd2l0aCBzdGF0ZW1lbnQgZXhpdHMKICAgIHRoZSBwYXRjaCBpcyB1bmRvbmUuCgogICAgSWYgYG5ld2AgaXMgb21pdHRlZCwgdGhlbiB0aGUgdGFyZ2V0IGlzIHJlcGxhY2VkIHdpdGggYW4KICAgIGBBc3luY01vY2sgaWYgdGhlIHBhdGNoZWQgb2JqZWN0IGlzIGFuIGFzeW5jIGZ1bmN0aW9uIG9yIGEKICAgIGBNYWdpY01vY2tgIG90aGVyd2lzZS4gSWYgYHBhdGNoYCBpcyB1c2VkIGFzIGEgZGVjb3JhdG9yIGFuZCBgbmV3YCBpcwogICAgb21pdHRlZCwgdGhlIGNyZWF0ZWQgbW9jayBpcyBwYXNzZWQgaW4gYXMgYW4gZXh0cmEgYXJndW1lbnQgdG8gdGhlCiAgICBkZWNvcmF0ZWQgZnVuY3Rpb24uIElmIGBwYXRjaGAgaXMgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciB0aGUgY3JlYXRlZAogICAgbW9jayBpcyByZXR1cm5lZCBieSB0aGUgY29udGV4dCBtYW5hZ2VyLgoKICAgIGB0YXJnZXRgIHNob3VsZCBiZSBhIHN0cmluZyBpbiB0aGUgZm9ybSBgJ3BhY2thZ2UubW9kdWxlLkNsYXNzTmFtZSdgLiBUaGUKICAgIGB0YXJnZXRgIGlzIGltcG9ydGVkIGFuZCB0aGUgc3BlY2lmaWVkIG9iamVjdCByZXBsYWNlZCB3aXRoIHRoZSBgbmV3YAogICAgb2JqZWN0LCBzbyB0aGUgYHRhcmdldGAgbXVzdCBiZSBpbXBvcnRhYmxlIGZyb20gdGhlIGVudmlyb25tZW50IHlvdSBhcmUKICAgIGNhbGxpbmcgYHBhdGNoYCBmcm9tLiBUaGUgdGFyZ2V0IGlzIGltcG9ydGVkIHdoZW4gdGhlIGRlY29yYXRlZCBmdW5jdGlvbgogICAgaXMgZXhlY3V0ZWQsIG5vdCBhdCBkZWNvcmF0aW9uIHRpbWUuCgogICAgVGhlIGBzcGVjYCBhbmQgYHNwZWNfc2V0YCBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHRoZSBgTWFnaWNNb2NrYAogICAgaWYgcGF0Y2ggaXMgY3JlYXRpbmcgb25lIGZvciB5b3UuCgogICAgSW4gYWRkaXRpb24geW91IGNhbiBwYXNzIGBzcGVjPVRydWVgIG9yIGBzcGVjX3NldD1UcnVlYCwgd2hpY2ggY2F1c2VzCiAgICBwYXRjaCB0byBwYXNzIGluIHRoZSBvYmplY3QgYmVpbmcgbW9ja2VkIGFzIHRoZSBzcGVjL3NwZWNfc2V0IG9iamVjdC4KCiAgICBgbmV3X2NhbGxhYmxlYCBhbGxvd3MgeW91IHRvIHNwZWNpZnkgYSBkaWZmZXJlbnQgY2xhc3MsIG9yIGNhbGxhYmxlIG9iamVjdCwKICAgIHRoYXQgd2lsbCBiZSBjYWxsZWQgdG8gY3JlYXRlIHRoZSBgbmV3YCBvYmplY3QuIEJ5IGRlZmF1bHQgYEFzeW5jTW9ja2AgaXMKICAgIHVzZWQgZm9yIGFzeW5jIGZ1bmN0aW9ucyBhbmQgYE1hZ2ljTW9ja2AgZm9yIHRoZSByZXN0LgoKICAgIEEgbW9yZSBwb3dlcmZ1bCBmb3JtIG9mIGBzcGVjYCBpcyBgYXV0b3NwZWNgLiBJZiB5b3Ugc2V0IGBhdXRvc3BlYz1UcnVlYAogICAgdGhlbiB0aGUgbW9jayB3aWxsIGJlIGNyZWF0ZWQgd2l0aCBhIHNwZWMgZnJvbSB0aGUgb2JqZWN0IGJlaW5nIHJlcGxhY2VkLgogICAgQWxsIGF0dHJpYnV0ZXMgb2YgdGhlIG1vY2sgd2lsbCBhbHNvIGhhdmUgdGhlIHNwZWMgb2YgdGhlIGNvcnJlc3BvbmRpbmcKICAgIGF0dHJpYnV0ZSBvZiB0aGUgb2JqZWN0IGJlaW5nIHJlcGxhY2VkLiBNZXRob2RzIGFuZCBmdW5jdGlvbnMgYmVpbmcKICAgIG1vY2tlZCB3aWxsIGhhdmUgdGhlaXIgYXJndW1lbnRzIGNoZWNrZWQgYW5kIHdpbGwgcmFpc2UgYSBgVHlwZUVycm9yYCBpZgogICAgdGhleSBhcmUgY2FsbGVkIHdpdGggdGhlIHdyb25nIHNpZ25hdHVyZS4gRm9yIG1vY2tzIHJlcGxhY2luZyBhIGNsYXNzLAogICAgdGhlaXIgcmV0dXJuIHZhbHVlICh0aGUgJ2luc3RhbmNlJykgd2lsbCBoYXZlIHRoZSBzYW1lIHNwZWMgYXMgdGhlIGNsYXNzLgoKICAgIEluc3RlYWQgb2YgYGF1dG9zcGVjPVRydWVgIHlvdSBjYW4gcGFzcyBgYXV0b3NwZWM9c29tZV9vYmplY3RgIHRvIHVzZSBhbgogICAgYXJiaXRyYXJ5IG9iamVjdCBhcyB0aGUgc3BlYyBpbnN0ZWFkIG9mIHRoZSBvbmUgYmVpbmcgcmVwbGFjZWQuCgogICAgQnkgZGVmYXVsdCBgcGF0Y2hgIHdpbGwgZmFpbCB0byByZXBsYWNlIGF0dHJpYnV0ZXMgdGhhdCBkb24ndCBleGlzdC4gSWYKICAgIHlvdSBwYXNzIGluIGBjcmVhdGU9VHJ1ZWAsIGFuZCB0aGUgYXR0cmlidXRlIGRvZXNuJ3QgZXhpc3QsIHBhdGNoIHdpbGwKICAgIGNyZWF0ZSB0aGUgYXR0cmlidXRlIGZvciB5b3Ugd2hlbiB0aGUgcGF0Y2hlZCBmdW5jdGlvbiBpcyBjYWxsZWQsIGFuZAogICAgZGVsZXRlIGl0IGFnYWluIGFmdGVyd2FyZHMuIFRoaXMgaXMgdXNlZnVsIGZvciB3cml0aW5nIHRlc3RzIGFnYWluc3QKICAgIGF0dHJpYnV0ZXMgdGhhdCB5b3VyIHByb2R1Y3Rpb24gY29kZSBjcmVhdGVzIGF0IHJ1bnRpbWUuIEl0IGlzIG9mZiBieQogICAgZGVmYXVsdCBiZWNhdXNlIGl0IGNhbiBiZSBkYW5nZXJvdXMuIFdpdGggaXQgc3dpdGNoZWQgb24geW91IGNhbiB3cml0ZQogICAgcGFzc2luZyB0ZXN0cyBhZ2FpbnN0IEFQSXMgdGhhdCBkb24ndCBhY3R1YWxseSBleGlzdCEKCiAgICBQYXRjaCBjYW4gYmUgdXNlZCBhcyBhIGBUZXN0Q2FzZWAgY2xhc3MgZGVjb3JhdG9yLiBJdCB3b3JrcyBieQogICAgZGVjb3JhdGluZyBlYWNoIHRlc3QgbWV0aG9kIGluIHRoZSBjbGFzcy4gVGhpcyByZWR1Y2VzIHRoZSBib2lsZXJwbGF0ZQogICAgY29kZSB3aGVuIHlvdXIgdGVzdCBtZXRob2RzIHNoYXJlIGEgY29tbW9uIHBhdGNoaW5ncyBzZXQuIGBwYXRjaGAgZmluZHMKICAgIHRlc3RzIGJ5IGxvb2tpbmcgZm9yIG1ldGhvZCBuYW1lcyB0aGF0IHN0YXJ0IHdpdGggYHBhdGNoLlRFU1RfUFJFRklYYC4KICAgIEJ5IGRlZmF1bHQgdGhpcyBpcyBgdGVzdGAsIHdoaWNoIG1hdGNoZXMgdGhlIHdheSBgdW5pdHRlc3RgIGZpbmRzIHRlc3RzLgogICAgWW91IGNhbiBzcGVjaWZ5IGFuIGFsdGVybmF0aXZlIHByZWZpeCBieSBzZXR0aW5nIGBwYXRjaC5URVNUX1BSRUZJWGAuCgogICAgUGF0Y2ggY2FuIGJlIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIsIHdpdGggdGhlIHdpdGggc3RhdGVtZW50LiBIZXJlIHRoZQogICAgcGF0Y2hpbmcgYXBwbGllcyB0byB0aGUgaW5kZW50ZWQgYmxvY2sgYWZ0ZXIgdGhlIHdpdGggc3RhdGVtZW50LiBJZiB5b3UKICAgIHVzZSAiYXMiIHRoZW4gdGhlIHBhdGNoZWQgb2JqZWN0IHdpbGwgYmUgYm91bmQgdG8gdGhlIG5hbWUgYWZ0ZXIgdGhlCiAgICAiYXMiOyB2ZXJ5IHVzZWZ1bCBpZiBgcGF0Y2hgIGlzIGNyZWF0aW5nIGEgbW9jayBvYmplY3QgZm9yIHlvdS4KCiAgICBQYXRjaCB3aWxsIHJhaXNlIGEgYFJ1bnRpbWVFcnJvcmAgaWYgcGFzc2VkIHNvbWUgY29tbW9uIG1pc3NwZWxsaW5ncyBvZgogICAgdGhlIGFyZ3VtZW50cyBhdXRvc3BlYyBhbmQgc3BlY19zZXQuIFBhc3MgdGhlIGFyZ3VtZW50IGB1bnNhZmVgIHdpdGggdGhlCiAgICB2YWx1ZSBUcnVlIHRvIGRpc2FibGUgdGhhdCBjaGVjay4KCiAgICBgcGF0Y2hgIHRha2VzIGFyYml0cmFyeSBrZXl3b3JkIGFyZ3VtZW50cy4gVGhlc2Ugd2lsbCBiZSBwYXNzZWQgdG8KICAgIGBBc3luY01vY2tgIGlmIHRoZSBwYXRjaGVkIG9iamVjdCBpcyBhc3luY2hyb25vdXMsIHRvIGBNYWdpY01vY2tgCiAgICBvdGhlcndpc2Ugb3IgdG8gYG5ld19jYWxsYWJsZWAgaWYgc3BlY2lmaWVk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b2YgdGhhdCBmdW5jdGlvbiwKICAgIC0gaWYgYGBzaWRlX2VmZmVjdGBgIGlzIGFuIGV4Y2VwdGlvbiwgdGhlIGFzeW5jIGZ1bmN0aW9uIHdpbGwgcmFpc2UgdGhlCiAgICAgIGV4Y2VwdGlvbiwKICAgIC0gaWYgYGBzaWRlX2VmZmVjdGBgIGlzIGFuIGl0ZXJhYmxlLCB0aGUgYXN5bmMgZnVuY3Rpb24gd2lsbCByZXR1cm4gdGhlCiAgICAgIG5leHQgdmFsdWUgb2YgdGhlIGl0ZXJhYmxlLCBob3dldmVyLCBpZiB0aGUgc2VxdWVuY2Ugb2YgcmVzdWx0IGlzCiAgICAgIGV4aGF1c3RlZCwgYGBTdG9wSXRlcmF0aW9uYGAgaXMgcmFpc2VkIGltbWVkaWF0ZWx5LAogICAgLSBpZiBgYHNpZGVfZWZmZWN0YGAgaXMgbm90IGRlZmluZWQsIHRoZSBhc3luYyBmdW5jdGlvbiB3aWxsIHJldHVybiB0aGUKICAgICAgdmFsdWUgZGVmaW5lZCBieSBgYHJldHVybl92YWx1ZWBgLCBoZW5jZSwgYnkgZGVmYXVsdCwgdGhlIGFzeW5jIGZ1bmN0aW9uCiAgICAgIHJldHVybnMgYSBuZXcgOmNsYXNzOmBBc3luY01vY2tgIG9iamVjdC4KCiAgICBJZiB0aGUgb3V0Y29tZSBvZiBgYHNpZGVfZWZmZWN0YGAgb3IgYGByZXR1cm5fdmFsdWVgYCBpcyBhbiBhc3luYyBmdW5jdGlvbiwKICAgIHRoZSBtb2NrIGFzeW5jIGZ1bmN0aW9uIG9idGFpbmVkIHdoZW4gdGhlIG1vY2sgb2JqZWN0IGlzIGNhbGxlZCB3aWxsIGJlIHRoaXMKICAgIGFzeW5jIGZ1bmN0aW9uIGl0c2VsZiAoYW5kIG5vdCBhbiBhc3luYyBmdW5jdGlvbiByZXR1cm5pbmcgYW4gYXN5bmMKICAgIGZ1bmN0aW9uKS4KCiAgICBUaGUgdGVzdCBhdXRob3IgY2FuIGFsc28gc3BlY2lmeSBhIHdyYXBwZWQgb2JqZWN0IHdpdGggYGB3cmFwc2BgLiBJbiB0aGlzCiAgICBjYXNlLCB0aGUgOmNsYXNzOmBNb2NrYCBvYmplY3QgYmVoYXZpb3IgaXMgdGhlIHNhbWUgYXMgd2l0aCBhbgogICAgOmNsYXNzOmAuTW9ja2Agb2JqZWN0OiB0aGUgd3JhcHBlZCBvYmplY3QgbWF5IGhhdmUgbWV0aG9kcwogICAgZGVmaW5lZCBhcyBhc3luYyBmdW5jdGlvbiBmdW5jdGlvbnMuCgogICAgQmFzZWQgb24gTWFydGluIFJpY2hhcmQncyBhc3luY3Rlc3QgcHJvamVjdC4KICAgIE5yGwAAAHIgAAAAciAAAAByIAAAAHIhAAAAcgkAAABQCQAAciIAAAByCQAAAGMAAAAAAAAAAAAAAAAAAAAAAgAAAEAAAABypAAAACkJ2gRfQU5ZejJBIGhlbHBlciBvYmplY3QgdGhhdCBjb21wYXJlcyBlcXVhbCB0byBldmVyeXRoaW5nLmMCAAAAAAAAAAAAAAACAAAAAQAAAEMAAABysgAAAHJPAgAAciAAAACpAnJOAAAAclICAAByIAAAAHIgAAAAciEAAAByUAIAAH4JAAByswAAAHoLX0FOWS5fX2VxX19jAgAAAAAAAAAAAAAAAgAAAAEAAABDAAAAcrIAAAByVgIAAHIgAAAAco0CAAByIAAAAHIgAAAAciEAAAByVwIAAIEJAAByswAAAHoLX0FOWS5fX25lX19jAQAAAAAAAAAAAAAAAQAAAAEAAABDAAAAcrIAAAApAk56BTxBTlk+ciAAAAByqgAAAHIgAAAAciAAAAByIQAAAHKrAAAAhAkAAHKzAAAAeg1fQU5ZLl9fcmVwcl9fTikHchwAAAByHQAAAHIeAAAAch8AAAByUAIAAHJXAgAAcqsAAAByIAAAAHIgAAAAciAAAAByIQAAAHKMAgAAewkAAHMKAAAACAAEAQgCCAMMA3KMAgAAYwMAAAAAAAAAAAAAAAcAAAAFAAAAQwAAAHNgAAAAZAF8ABYAfQNkAn0EZAOgAGQEZAWEAHwBRACDAaEBfQVkA6AAZAZkBYQAfAKgAaEARACDAaEBfQZ8BXIgfAV9BHwGcix8BHIofARkAzcAfQR8BHwGNwB9BHwDfAQWAFMAKQdOegclcyglJXMpcucAAAB6AiwgYwEAAAAAAAAAAAAAAAIAAAAEAAAAUwAAAHMUAAAAZwB8AF0GfQF0AHwBgwGRAnECUwByIAAAACkB2gRyZXByKQJyJwAAAHIhAQAAciAAAAByIAAAAHIhAAAAcjwBAACOCQAAcwIAAAAUAHoqX2Zvcm1hdF9jYWxsX3NpZ25hdHVyZS48bG9jYWxzPi48bGlzdGNvbXA+YwEAAAAAAAAAAAAAAAMAAAAFAAAAUwAAAHMcAAAAZwB8AF0KXAJ9AX0CZAB8AXwCZgIWAJECcQJTACkBegUlcz0lcnIgAAAAKQNyJwAAAHIcAQAAcr0AAAByIAAAAHIgAAAAciEAAAByPAEAAI8JAABzBgAAAAYAEAEG/ykCcjIBAAByHgEAACkHcigAAAByTwAAAHJQAAAAclUBAADaDmZvcm1hdHRlZF9hcmdz2gthcmdzX3N0cmluZ9oNa3dhcmdzX3N0cmluZ3IgAAAAciAAAAByIQAAAHJRAQAAiwkAAHMaAAAACAEEARQBCgEGAQj/BAMEAQQBBAEIAQgBCAJyUQEAAGMAAAAAAAAAAAAAAAAAAAAAAwAAAEAAAABzggAAAGUAWgFkAFoCZAFaAwkFCQZkHWQHZAiEAVoECQUJBmQeZAlkCoQBWgVkC2QMhABaBmUHaghaCGQNZA6EAFoJZA9kEIQAWgpkEWQShABaC2QTZBSEAFoMZQ1kFWQWhACDAVoOZQ1kF2QYhACDAVoPZBlkGoQAWhBkG2QchABaEWQEUwApH3JtAQAAYaMCAAAKICAgIEEgdHVwbGUgZm9yIGhvbGRpbmcgdGhlIHJlc3VsdHMgb2YgYSBjYWxsIHRvIGEgbW9jaywgZWl0aGVyIGluIHRoZSBmb3JtCiAgICBgKGFyZ3MsIGt3YXJncylgIG9yIGAobmFtZSwgYXJncywga3dhcmdzKWAuCgogICAgSWYgYXJncyBvciBrd2FyZ3MgYXJlIGVtcHR5IHRoZW4gYSBjYWxsIHR1cGxlIHdpbGwgY29tcGFyZSBlcXVhbCB0bwogICAgYSB0dXBsZSB3aXRob3V0IHRob3NlIHZhbHVlcy4gVGhpcyBtYWtlcyBjb21wYXJpc29ucyBsZXNzIHZlcmJvc2U6OgoKICAgICAgICBfQ2FsbCgoJ25hbWUnLCAoKSwge30pKSA9PSAoJ25hbWUnLCkKICAgICAgICBfQ2FsbCgoJ25hbWUnLCAoMSwpLCB7fSkpID09ICgnbmFtZScsICgxLCkpCiAgICAgICAgX0NhbGwoKCgpLCB7J2EnOiAnYid9KSkgPT0gKHsnYSc6ICdiJ30sKQoKICAgIFRoZSBgX0NhbGxgIG9iamVjdCBwcm92aWRlcyBhIHVzZWZ1bCBzaG9ydGN1dCBmb3IgY29tcGFyaW5nIHdpdGggY2FsbDo6CgogICAgICAgIF9DYWxsKCgoMSwgMiksIHsnYSc6IDN9KSkgPT0gY2FsbCgxLCAyLCBhPTMpCiAgICAgICAgX0NhbGwoKCdmb28nLCAoMSwgMiksIHsnYSc6IDN9KSkgPT0gY2FsbC5mb28oMSwgMiwgYT0zKQoKICAgIElmIHRoZSBfQ2FsbCBoYXMgbm8gbmFtZSB0aGVuIGl0IHdpbGwgbWF0Y2ggYW55IG5hbWUuCiAgICByIAAAAHLnAAAATkZUYwYAAAAAAAAAAAAAAAsAAAAGAAAAQwAAAHO8AAAAZAF9BmkAfQd0AHwBgwF9CHwIZAJrAnISfAFcA30CfQZ9B245fAhkA2sCcjJ8AVwCfQl9CnQBfAl0AoMCcix8CX0CdAF8CnQDgwJyKXwKfQZuInwKfQduH3wJfAoCAn0GfQduGXwIZARrAnJLfAFcAX0BdAF8AXQCgwJyQXwBfQJuCnQBfAF0A4MCckl8AX0GbgJ8AX0HfARyVXQDoAR8AHwGfAdmAqECUwB0A6AEfAB8AnwGfAdmA6ECUwApBU5yIAAAAOkDAAAAcqAAAAByxAAAACkFcsYAAAByLQAAAHIHAgAAcmUAAABy4AAAACkLcuEAAAByvQAAAHIoAAAAcs8AAABybAEAANoJZnJvbV9rYWxsck8AAAByUAAAANoEX2xlbtoFZmlyc3TaBnNlY29uZHIgAAAAciAAAAByIQAAAHLgAAAAsAkAAHMuAAAABAIEAQgBCAEMAQgBCAEKAQQBCgEGAQYCDAIIAQYBCgEGAQoBBgEEAgQCEAESAnoNX0NhbGwuX19uZXdfX2MGAAAAAAAAAAAAAAAGAAAAAgAAAEMAAABzFgAAAHwCfABfAHwDfABfAXwFfABfAmQAUwByOQAAACkDcrQAAABytQAAANoPX21vY2tfZnJvbV9rYWxsKQZyTgAAAHK9AAAAcigAAAByzwAAAHJsAQAAcpMCAAByIAAAAHIgAAAAciEAAAByQgAAANAJAABzBgAAAAYCBgEKAXoOX0NhbGwuX19pbml0X19jAgAAAAAAAAAAAAAADAAAAAgAAABDAAAAc1IBAAB6BnQAfAGDAX0CVwBuCwQAdAF5EQEAAQABAHQCBgBZAFMAdwBkAX0DdAB8AIMBZAJrAnIffABcAn0EfQVuBXwAXAN9A30EfQV0A3wAZANkAIMDcjh0A3wBZANkAIMDcjh8AGoEfAFqBGsDcjhkBFMAZAF9BnwCZAVrAnJEZAZpAAICfQd9CG5VfAJkB2sCck58AVwDfQZ9B30Ibkt8AmQIawJycXwBXAF9CXQFfAl0BoMCcl98CX0HaQB9CG46dAV8CXQHgwJybHwJfQZkBmkAAgJ9B30Ibi1kBn0HfAl9CG4ofAJkAmsCcpd8AVwCfQp9C3QFfAp0B4MCcpF8Cn0GdAV8C3QGgwJyi3wLaQACAn0HfQhuDmQGfAsCAn0HfQhuCHwKfAsCAn0HfQhuAmQEUwB8A3KhfAZ8A2sDcqFkBFMAfAd8CGYCfAR8BWYCawJTACkJTnLnAAAAcqAAAABytQAAAEZyEAAAAHIgAAAAcpICAAByxAAAACkIcsYAAAByXQEAAHJRAgAAci8AAABytQAAAHItAAAAcmUAAAByBwIAACkMck4AAAByUgIAANoJbGVuX290aGVy2glzZWxmX25hbWXaCXNlbGZfYXJnc9oLc2VsZl9rd2FyZ3PaCm90aGVyX25hbWXaCm90aGVyX2FyZ3PaDG90aGVyX2t3YXJnc3K9AAAAcpUCAABylgIAAHIgAAAAciAAAAByIQAAAHJQAgAA1wkAAHNOAAAAAgEMAQwBCAEC/wQDDAEKAQoCGAIMAQQBBAIIAQwBCAEMAQgBBgEKAQQBBgEKAQQBDAEEAgYBCAEIAgoBBAEKAQwBDAIMAgQCDAIEARADegxfQ2FsbC5fX2VxX19jAQAAAAEAAAAAAAAABAAAAAUAAABPAAAAczwAAAB8AGoAZAB1AHIOdAFkAXwBfAJmA2QCZAONAlMAfABqAGQCFwB9A3QBfABqAHwBfAJmA3wDfABkBI0DUwApBU5y5wAAAHIFAQAAcqIAAABydgIAAKkCcrQAAABybQEAAHJSAQAAciAAAAByIAAAAHIhAAAAckMAAAAPCgAAcwgAAAAKARIBCgIWAXoOX0NhbGwuX19jYWxsX19jAgAAAAAAAAAAAAAAAwAAAAUAAABDAAAAczIAAAB8AGoAZAB1AHILdAF8AWQBZAKNAlMAZAN8AGoAfAFmAhYAfQJ0AXwCfABkAWQEjQNTACkFTkYpAnIoAAAAcpMCAAB6BSVzLiVzKQNyKAAAAHLPAAAAcpMCAABynwIAACkDck4AAAByjgAAAHIoAAAAciAAAAByIAAAAHIhAAAAcrEAAAAXCgAAcwgAAAAKAQwBDgEOAXoRX0NhbGwuX19nZXRhdHRyX19jAgAAAAAAAAAAAAAAAgAAAAQAAABDAAAAcxoAAAB8AXQAagF2AHIHdAKCAXQAoAN8AHwBoQJTAHI5AAAAKQRyZQAAAHJoAAAAckQAAADaEF9fZ2V0YXR0cmlidXRlX18pAnJOAAAAco4AAAByIAAAAHIgAAAAciEAAAByoAIAAB4KAABzBgAAAAoBBAEMAXoWX0NhbGwuX19nZXRhdHRyaWJ1dGVfX2MBAAAAAAAAAAAAAAAEAAAAAwAAAEMAAABzLgAAAHQAfACDAWQBawJyDnwAXAJ9AX0CfAF8AmYCUwB8AFwDfQN9AX0CfAF8AmYCUwApAk5yoAAAACkBcsYAAAByUgEAAHIgAAAAciAAAAByIQAAANoTX2dldF9jYWxsX2FyZ3VtZW50cyQKAABzCgAAAAwBCAEIBAr+CAJ6GV9DYWxsLl9nZXRfY2FsbF9hcmd1bWVudHNjAQAAAAAAAAAAAAAAAQAAAAIAAABDAAAA8wwAAAB8AKAAoQBkARkAUwCpAk5yEAAAAKkBcqECAAByqgAAAHIgAAAAciAAAAByIQAAAHJPAAAALAoAAPMCAAAADAJ6Cl9DYWxsLmFyZ3NjAQAAAAAAAAAAAAAAAQAAAAIAAABDAAAAcqICAAApAk5yxAAAAHKkAgAAcqoAAAByIAAAAHIgAAAAciEAAAByUAAAADAKAABypQIAAHoMX0NhbGwua3dhcmdzYwEAAAAAAAAAAAAAAAQAAAAEAAAAQwAAAHN8AAAAfABqAHMTfABqAXAHZAF9AXwBoAJkAqEBchFkA3wBFgB9AXwBUwB0A3wAgwFkBGsCciBkAX0BfABcAn0CfQNuGHwAXAN9AX0CfQN8AXMqZAF9AW4OfAGgAmQCoQFzNGQFfAEWAH0BbgRkA3wBFgB9AXQEfAF8AnwDgwNTACkGTnIHAAAAcgUBAAB6BmNhbGwlc3KgAAAAegdjYWxsLiVzKQVylwIAAHK0AAAAciYAAAByxgAAAHJRAQAAKQRyTgAAAHIoAAAAck8AAAByUAAAAHIgAAAAciAAAAByIQAAAHKrAAAANAoAAHMeAAAABgEKAQoBCAEEAQwCBAEKAQoCBAEGAQoBCgEIAgwBeg5fQ2FsbC5fX3JlcHJfX2MBAAAAAAAAAAAAAAADAAAAAwAAAEMAAABzOgAAAGcAfQF8AH0CfAJkAXUBchd8AmoAchB8AaABfAKhAQEAfAJqAn0CfAJkAXUBcwh0A3QEfAGDAYMBUwApAnqVRm9yIGEgY2FsbCBvYmplY3QgdGhhdCByZXByZXNlbnRzIG11bHRpcGxlIGNhbGxzLCBgY2FsbF9saXN0YAogICAgICAgIHJldHVybnMgYSBsaXN0IG9mIGFsbCB0aGUgaW50ZXJtZWRpYXRlIGNhbGxzIGFzIHdlbGwgYXMgdGhlCiAgICAgICAgZmluYWwgY2FsbC5OKQVylwIAAHIDAQAAcrUAAABygAAAAHIxAQAAKQNyTgAAANoEdmFsc3KpAQAAciAAAAByIAAAAHIhAAAA2gljYWxsX2xpc3RJCgAAcxAAAAAEBAQBCAEGAQoBBgEI/QwEeg9fQ2FsbC5jYWxsX2xpc3QpBXIgAAAAcucAAABORlQpBXIgAAAATk5GVCkSchwAAAByHQAAAHIeAAAAch8AAABy4AAAAHJCAAAAclACAAByPwEAAHJXAgAAckMAAABysQAAAHKgAgAAcqECAABywQAAAHJPAAAAclAAAAByqwAAAHKnAgAAciAAAAByIAAAAHIgAAAAciEAAABybQEAAJ0JAABzKAAAAAgABAECEgIBCv8CIAIBCv8IBwY1CAMICAgHCAYCCAoBAgMKAQgDDBVybQEAACkBcpMCAABjBQAAAAAAAAABAAAAEwAAAAkAAABLAAAAc2gCAAB0AHwAgwFyCHQBfACDAX0AdAJ8AHQBgwJ9B3QDfACDAXIZdARkAXwAmwJkAp0DgwGCAXQFfACDAX0IZAN8AGkBfQl8AXIoZAR8AGkBfQluBnwAZAV1AHIuaQB9CXwJcjZ8AnI2ZAZ8CWQHPAB8BXM8dAZ8BoMBAQB8CaAHfAahAQEAdAh9CnQJoAp8AKEBcktpAH0Jbhx8CHJWfAJyU3QLZAiDAYIBdAx9Cm4RdA18AIMBc110Dn0Kbgp8B3JnfAJyZ3QPfACDAXNndA59CnwJoBBkCXwEoQJ9BHwEfQt8A2QFdQBydWQKfQt8CmQSfAN8A3wLfARkC5wEfAmkAY4BfQx0AnwAdBGDAnKSdBJ8DHwAgwJ9DHwIcpF0E3wMgwEBAG4HdBR8AHwMfAd8AoMEAQB8A2QFdQFypHwCc6R8DHwDahV8BDwAfAdytnwCc7ZkDHwGdgFytnQWfAB8AWQGZA18DGQOjQV8DF8XdBh8AIMBRABdd30NdBl8DYMBcsFxunoHdBp8AHwNgwJ9DlcAbgkEAHQbedEBAAEAAQBZAHG6dwBkA3wOaQF9BnwBctxkBHwOaQF9BnQCfA50EYMCc+90HHwOfAF8DHwNfAKDBX0PfA98DGoVfA08AG42fAx9EHQCfAB0EYMCcvl8DGodfRB0HnwAfA18B4MDfRF8EXwGZA88AHQffA6DAZABcgt0DH0SbgJ0CH0SfBJkEnwQfA18DXwQZBCcBHwGpAGOAX0PfA98DGoVfA08AHQUfA58D3wRZBGNAwEAdAJ8D3QRgwKQAXIxdCB8DHwNfA+DAwEAcbp8DFMAKRNhFQQAAENyZWF0ZSBhIG1vY2sgb2JqZWN0IHVzaW5nIGFub3RoZXIgb2JqZWN0IGFzIGEgc3BlYy4gQXR0cmlidXRlcyBvbiB0aGUKICAgIG1vY2sgd2lsbCB1c2UgdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIG9uIHRoZSBgc3BlY2Agb2JqZWN0IGFzIHRoZWlyCiAgICBzcGVjLgoKICAgIEZ1bmN0aW9ucyBvciBtZXRob2RzIGJlaW5nIG1vY2tlZCB3aWxsIGhhdmUgdGhlaXIgYXJndW1lbnRzIGNoZWNrZWQKICAgIHRvIGNoZWNrIHRoYXQgdGhleSBhcmUgY2FsbGVkIHdpdGggdGhlIGNvcnJlY3Qgc2lnbmF0dXJlLgoKICAgIElmIGBzcGVjX3NldGAgaXMgVHJ1ZSB0aGVuIGF0dGVtcHRpbmcgdG8gc2V0IGF0dHJpYnV0ZXMgdGhhdCBkb24ndCBleGlzdAogICAgb24gdGhlIHNwZWMgb2JqZWN0IHdpbGwgcmFpc2UgYW4gYEF0dHJpYnV0ZUVycm9yYC4KCiAgICBJZiBhIGNsYXNzIGlzIHVzZWQgYXMgYSBzcGVjIHRoZW4gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUg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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 13
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
async_case.cpython-310.pyc
4.63 KB
lrw-r--r--
2026-03-12 07:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
case.cpython-310.pyc
47.35 KB
lrw-r--r--
2026-03-12 07:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
loader.cpython-310.pyc
14.09 KB
lrw-r--r--
2026-03-12 07:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
main.cpython-310.pyc
7.38 KB
lrw-r--r--
2026-03-12 07:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
mock.cpython-310.pyc
77.94 KB
lrw-r--r--
2026-03-12 07:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
result.cpython-310.pyc
7.85 KB
lrw-r--r--
2026-03-12 07:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
runner.cpython-310.pyc
6.79 KB
lrw-r--r--
2026-03-12 07:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
signals.cpython-310.pyc
2.20 KB
lrw-r--r--
2026-03-12 07:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
suite.cpython-310.pyc
10.03 KB
lrw-r--r--
2026-03-12 07:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
util.cpython-310.pyc
4.43 KB
lrw-r--r--
2026-03-12 07:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
_log.cpython-310.pyc
2.63 KB
lrw-r--r--
2026-03-12 07:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-310.pyc
3.32 KB
lrw-r--r--
2026-03-12 07:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__main__.cpython-310.pyc
402 B
lrw-r--r--
2026-03-12 07: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).