REDROOM
PHP 8.0.30
Path:
Logout
Edit File
Size: 55.33 KB
Close
/opt/alt/python37/lib64/python3.7/site-packages/numpy/polynomial/__pycache__/hermite.cpython-37.pyc
Text
Base64
Qg0NCgAAAADB2EZkkOEAAOMAAAAAAAAAAAAAAAAfAAAAQAAAAHPMAQAAZABaAGQBZAJsAW0CWgJtA1oDbQRaBAEAZAFkA2wFWgVkAWQDbAZaB2QBZANsCG0JWgoBAGQBZARsC20MWgwBAGQFZAZsDW0OWg8BAGQFZAdsEG0RWhEBAGQIZAlkCmQLZAxkDWQOZA9kEGQRZBJkE2QUZBVkFmQXZBhkGWQaZBtkHGQdZB5kH2QgZCFkImQjZCRkJWQmZx9aEmUPahNaFGQnZBeEAFoVZChkFoQAWhZlB6AXZClkBWcCoQFaGGUHoBdkAWcBoQFaGWUHoBdkBWcBoQFaGmUHoBdkAWQqZwKhAVobZCtkDIQAWhxkLGQYhABaHWQtZA2EAFoeZC5kDoQAWh9kL2QPhABaIGQwZBCEAFohZDFkEYQAWiJkSGQzZBKEAVojZElkNGQUhAFaJGQFZwBkAWQFZAFmBWQ1ZBWEAVolZEpkN2QThAFaJmQ4ZB6EAFonZDlkIIQAWihkOmQfhABaKWQ7ZCGEAFoqZDxkGYQAWitkPWQihABaLGQ+ZCOEAFotZEtkQGQahAFaLmRBZCSEAFovZEJkHIQAWjBkQ2REhABaMWRFZCWEAFoyZEZkJoQAWjNHAGRHZB2EAGQdZRGDA1o0ZANTAClMYeYIAAAKT2JqZWN0cyBmb3IgZGVhbGluZyB3aXRoIEhlcm1pdGUgc2VyaWVzLgoKVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBudW1iZXIgb2Ygb2JqZWN0cyAobW9zdGx5IGZ1bmN0aW9ucykgdXNlZnVsIGZvcgpkZWFsaW5nIHdpdGggSGVybWl0ZSBzZXJpZXMsIGluY2x1ZGluZyBhIGBIZXJtaXRlYCBjbGFzcyB0aGF0CmVuY2Fwc3VsYXRlcyB0aGUgdXN1YWwgYXJpdGhtZXRpYyBvcGVyYXRpb25zLiAgKEdlbmVyYWwgaW5mb3JtYXRpb24Kb24gaG93IHRoaXMgbW9kdWxlIHJlcHJlc2VudHMgYW5kIHdvcmtzIHdpdGggc3VjaCBwb2x5bm9taWFscyBpcyBpbiB0aGUKZG9jc3RyaW5nIGZvciBpdHMgInBhcmVudCIgc3ViLXBhY2thZ2UsIGBudW1weS5wb2x5bm9taWFsYCkuCgpDb25zdGFudHMKLS0tLS0tLS0tCi0gYGhlcm1kb21haW5gIC0tIEhlcm1pdGUgc2VyaWVzIGRlZmF1bHQgZG9tYWluLCBbLTEsMV0uCi0gYGhlcm16ZXJvYCAtLSBIZXJtaXRlIHNlcmllcyB0aGF0IGV2YWx1YXRlcyBpZGVudGljYWxseSB0byAwLgotIGBoZXJtb25lYCAtLSBIZXJtaXRlIHNlcmllcyB0aGF0IGV2YWx1YXRlcyBpZGVudGljYWxseSB0byAxLgotIGBoZXJteGAgLS0gSGVybWl0ZSBzZXJpZXMgZm9yIHRoZSBpZGVudGl0eSBtYXAsIGBgZih4KSA9IHhgYC4KCkFyaXRobWV0aWMKLS0tLS0tLS0tLQotIGBoZXJtbXVseGAgLS0gbXVsdGlwbHkgYSBIZXJtaXRlIHNlcmllcyBpbiBgYFBfaSh4KWBgIGJ5IGBgeGBgLgotIGBoZXJtYWRkYCAtLSBhZGQgdHdvIEhlcm1pdGUgc2VyaWVzLgotIGBoZXJtc3ViYCAtLSBzdWJ0cmFjdCBvbmUgSGVybWl0ZSBzZXJpZXMgZnJvbSBhbm90aGVyLgotIGBoZXJtbXVsYCAtLSBtdWx0aXBseSB0d28gSGVybWl0ZSBzZXJpZXMuCi0gYGhlcm1kaXZgIC0tIGRpdmlkZSBvbmUgSGVybWl0ZSBzZXJpZXMgYnkgYW5vdGhlci4KLSBgaGVybXZhbGAgLS0gZXZhbHVhdGUgYSBIZXJtaXRlIHNlcmllcyBhdCBnaXZlbiBwb2ludHMuCi0gYGhlcm12YWwyZGAgLS0gZXZhbHVhdGUgYSAyRCBIZXJtaXRlIHNlcmllcyBhdCBnaXZlbiBwb2ludHMuCi0gYGhlcm12YWwzZGAgLS0gZXZhbHVhdGUgYSAzRCBIZXJtaXRlIHNlcmllcyBhdCBnaXZlbiBwb2ludHMuCi0gYGhlcm1ncmlkMmRgIC0tIGV2YWx1YXRlIGEgMkQgSGVybWl0ZSBzZXJpZXMgb24gYSBDYXJ0ZXNpYW4gcHJvZHVjdC4KLSBgaGVybWdyaWQzZGAgLS0gZXZhbHVhdGUgYSAzRCBIZXJtaXRlIHNlcmllcyBvbiBhIENhcnRlc2lhbiBwcm9kdWN0LgoKQ2FsY3VsdXMKLS0tLS0tLS0KLSBgaGVybWRlcmAgLS0gZGlmZmVyZW50aWF0ZSBhIEhlcm1pdGUgc2VyaWVzLgotIGBoZXJtaW50YCAtLSBpbnRlZ3JhdGUgYSBIZXJtaXRlIHNlcmllcy4KCk1pc2MgRnVuY3Rpb25zCi0tLS0tLS0tLS0tLS0tCi0gYGhlcm1mcm9tcm9vdHNgIC0tIGNyZWF0ZSBhIEhlcm1pdGUgc2VyaWVzIHdpdGggc3BlY2lmaWVkIHJvb3RzLgotIGBoZXJtcm9vdHNgIC0tIGZpbmQgdGhlIHJvb3RzIG9mIGEgSGVybWl0ZSBzZXJpZXMuCi0gYGhlcm12YW5kZXJgIC0tIFZhbmRlcm1vbmRlLWxpa2UgbWF0cml4IGZvciBIZXJtaXRlIHBvbHlub21pYWxzLgotIGBoZXJtdmFuZGVyMmRgIC0tIFZhbmRlcm1vbmRlLWxpa2UgbWF0cml4IGZvciAyRCBwb3dlciBzZXJpZXMuCi0gYGhlcm12YW5kZXIzZGAgLS0gVmFuZGVybW9uZGUtbGlrZSBtYXRyaXggZm9yIDNEIHBvd2VyIHNlcmllcy4KLSBgaGVybWdhdXNzYCAtLSBHYXVzcy1IZXJtaXRlIHF1YWRyYXR1cmUsIHBvaW50cyBhbmQgd2VpZ2h0cy4KLSBgaGVybXdlaWdodGAgLS0gSGVybWl0ZSB3ZWlnaHQgZnVuY3Rpb24uCi0gYGhlcm1jb21wYW5pb25gIC0tIHN5bW1ldHJpemVkIGNvbXBhbmlvbiBtYXRyaXggaW4gSGVybWl0ZSBmb3JtLgotIGBoZXJtZml0YCAtLSBsZWFzdC1zcXVhcmVzIGZpdCByZXR1cm5pbmcgYSBIZXJtaXRlIHNlcmllcy4KLSBgaGVybXRyaW1gIC0tIHRyaW0gbGVhZGluZyBjb2VmZmljaWVudHMgZnJvbSBhIEhlcm1pdGUgc2VyaWVzLgotIGBoZXJtbGluZWAgLS0gSGVybWl0ZSBzZXJpZXMgb2YgZ2l2ZW4gc3RyYWlnaHQgbGluZS4KLSBgaGVybTJwb2x5YCAtLSBjb252ZXJ0IGEgSGVybWl0ZSBzZXJpZXMgdG8gYSBwb2x5bm9taWFsLgotIGBwb2x5Mmhlcm1gIC0tIGNvbnZlcnQgYSBwb2x5bm9taWFsIHRvIGEgSGVybWl0ZSBzZXJpZXMuCgpDbGFzc2VzCi0tLS0tLS0KLSBgSGVybWl0ZWAgLS0gQSBIZXJtaXRlIHNlcmllcyBjbGFzcy4KClNlZSBhbHNvCi0tLS0tLS0tCmBudW1weS5wb2x5bm9taWFsYAoK6QAAAAApA9oIZGl2aXNpb27aD2Fic29sdXRlX2ltcG9ydNoOcHJpbnRfZnVuY3Rpb25OKQHaFG5vcm1hbGl6ZV9heGlzX2luZGV46QEAAAApAdoJcG9seXV0aWxzKQHaC0FCQ1BvbHlCYXNl2ghoZXJtemVyb9oHaGVybW9uZdoFaGVybXjaCmhlcm1kb21haW7aCGhlcm1saW5l2gdoZXJtYWRk2gdoZXJtc3Vi2ghoZXJtbXVseNoHaGVybW11bNoHaGVybWRpdtoHaGVybXBvd9oHaGVybXZhbNoHaGVybWRlctoHaGVybWludNoJaGVybTJwb2x52glwb2x5Mmhlcm3aDWhlcm1mcm9tcm9vdHPaCmhlcm12YW5kZXLaB2hlcm1maXTaCGhlcm10cmlt2gloZXJtcm9vdHPaB0hlcm1pdGXaCWhlcm12YWwyZNoJaGVybXZhbDNk2gpoZXJtZ3JpZDJk2gpoZXJtZ3JpZDNk2gxoZXJtdmFuZGVyMmTaDGhlcm12YW5kZXIzZNoNaGVybWNvbXBhbmlvbtoJaGVybWdhdXNz2gpoZXJtd2VpZ2h0YwEAAAAAAAAABAAAAAUAAABDAAAAc0oAAAB0AKABfABnAaEBXAF9AHQCfACDAWQBGAB9AWQCfQJ4JnQDfAFkA2QDgwNEAF0WfQN0BHQFfAKDAXwAfAMZAIMCfQJxLFcAfAJTACkEYYwDAAAKICAgIHBvbHkyaGVybShwb2wpCgogICAgQ29udmVydCBhIHBvbHlub21pYWwgdG8gYSBIZXJtaXRlIHNlcmllcy4KCiAgICBDb252ZXJ0IGFuIGFycmF5IHJlcHJlc2VudGluZyB0aGUgY29lZmZpY2llbnRzIG9mIGEgcG9seW5vbWlhbCAocmVsYXRpdmUKICAgIHRvIHRoZSAic3RhbmRhcmQiIGJhc2lzKSBvcmRlcmVkIGZyb20gbG93ZXN0IGRlZ3JlZSB0byBoaWdoZXN0LCB0byBhbgogICAgYXJyYXkgb2YgdGhlIGNvZWZmaWNpZW50cyBvZiB0aGUgZXF1aXZhbGVudCBI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b29rcyBzb21ldGhpbmcgbGlrZSBbMiwgMiwgMiwgMywgM10uIFRoZQogICAgcm9vdHMgY2FuIGFwcGVhciBpbiBhbnkgb3JkZXIuCgogICAgSWYgdGhlIHJldHVybmVkIGNvZWZmaWNpZW50cyBhcmUgYGNgLCB0aGVuCgogICAgLi4gbWF0aDo6IHAoeCkgPSBjXzAgKyBjXzEgKiBIXzEoeCkgKyAuLi4gKyAgY19uICogSF9uKHgpCgogICAgVGhlIGNvZWZmaWNpZW50IG9mIHRoZSBsYXN0IHRlcm0gaXMgbm90IGdlbmVyYWxseSAxIGZvciBtb25pYwogICAgcG9seW5vbWlhbHMgaW4gSGVybWl0ZSBmb3JtLgoKICAgIFBhcmFtZXRlcnMKICAgIC0tLS0tLS0tLS0KICAgIHJvb3RzIDogYXJyYXlfbGlrZQogICAgICAgIFNlcXVlbmNlIGNvbnRhaW5pbmcgdGhlIHJvb3RzLgoKICAgIFJldHVybnMKICAgIC0tLS0tLS0KICAgIG91dCA6IG5kYXJyYXkKICAgICAgICAxLUQgYXJyYXkgb2YgY29lZmZpY2llbnRzLiAgSWYgYWxsIHJvb3RzIGFyZSByZWFsIHRoZW4gYG91dGAgaXMgYQogICAgICAgIHJlYWwgYXJyYXksIGlmIHNvbWUgb2YgdGhlIHJvb3RzIGFyZSBjb21wbGV4LCB0aGVuIGBvdXRgIGlzIGNvbXBsZXgKICAgICAgICBldmVuIGlmIGFsbCB0aGUgY29lZmZpY2llbnRzIGluIHRoZSByZXN1bHQgYXJlIHJlYWwgKHNlZSBFeGFtcGxlcwogICAgICAgIGJlbG93KS4KCiAgICBTZWUgQWxzbwogICAgLS0tLS0tLS0KICAgIHBvbHlmcm9tcm9vdHMsIGxlZ2Zyb21yb290cywgbGFnZnJvbXJvb3RzLCBjaGViZnJvbXJvb3RzLAogICAgaGVybWVmcm9tcm9vdHMuCgogICAgRXhhbXBsZXMKICAgIC0tLS0tLS0tCiAgICA+Pj4gZnJvbSBudW1weS5wb2x5bm9taWFsLmhlcm1pdGUgaW1wb3J0IGhlcm1mcm9tcm9vdHMsIGhlcm12YWwKICAgID4+PiBjb2VmID0gaGVybWZyb21yb290cygoLTEs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cXVlbmNlcyBvZiBjb2VmZmljaWVudHMsIGZyb20gbG93ZXN0IG9yZGVyICJ0ZXJtIiB0byBoaWdoZXN0LAogICAgZS5nLiwgWzEsMiwzXSByZXByZXNlbnRzIHRoZSBzZXJpZXMgYGBQXzAgKyAyKlBfMSArIDMqUF8yYGAuCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgYzEsIGMyIDogYXJyYXlfbGlrZQogICAgICAgIDEtRCBhcnJheXMgb2YgSGVybWl0ZSBzZXJpZXMgY29lZmZpY2llbnRzIG9yZGVyZWQgZnJvbSBsb3cgdG8KICAgICAgICBoaWdoLgoKICAgIFJldHVybnMKICAgIC0tLS0tLS0KICAgIG91dCA6IG5kYXJyYXkKICAgICAgICBPZiBIZXJtaXRlIHNlcmllcyBjb2VmZmljaWVudHMgcmVwcmVzZW50aW5nIHRoZWlyIHByb2R1Y3QuCgogICAgU2VlIEFsc28KICAgIC0tLS0tLS0tCiAgICBoZXJtYWRkLCBoZXJtc3ViLCBoZXJtZGl2LCBoZXJtcG93CgogICAgTm90ZXMKICAgIC0tLS0tCiAgICBJbiBnZW5lcmFsLCB0aGUgKHBvbHlub21pYWwpIHByb2R1Y3Qgb2YgdHdvIEMtc2VyaWVzIHJlc3VsdHMgaW4gdGVybXMKICAgIHRoYXQgYXJlIG5vdCBpbiB0aGUgSGVybWl0ZSBwb2x5bm9taWFsIGJhc2lzIHNldC4gIFRodXMsIHRvIGV4cHJlc3MKICAgIHRoZSBwcm9kdWN0IGFzIGEgSGVybWl0ZSBzZXJpZXMsIGl0IGlzIG5lY2Vzc2FyeSB0byAicmVwcm9qZWN0IiB0aGUKICAgIHByb2R1Y3Qgb250byBzYWlkIGJhc2lzIHNldCwgd2hpY2ggbWF5IHByb2R1Y2UgInVuaW50dWl0aXZlIiAoYnV0CiAgICBjb3JyZWN0KSByZXN1bHRzOyBzZWUgRXhhbXBsZXMgc2VjdGlvbiBiZWxvdy4KCiAgICBFeGFtcGxlcwogICAgLS0tLS0tLS0KICAgID4+PiBmcm9tIG51bXB5LnBvbHlub21pYWwuaGVybWl0ZSBpbXBvcnQgaGVybW11bAogICAgPj4+IGhlcm1tdWwoWzEsIDIsIDNdLCBbMCwgMSwgMl0pCiAgICBhcnJheShbIDUyLiwgIDI5LiwgIDUyLiwgICA3LiwgICA2Ll0pCgogICAgcgYAAAByAQAAAHI1AAAAcjYAAAByKAAAAOkDAAAAKQdyKQAAAHIqAAAAcisAAAByLAAAAHIPAAAAcg4AAAByEAAAACkIcjsAAAByTAAAAHI4AAAAWgJ4c3I6AAAA2gJuZHIvAAAAcjwAAAByMAAAAHIwAAAAcjEAAAByEQAAAMMBAABzKgAAAAAnEgIQAQQBBgIEAQQCDAEMAQYBDAEMAQ4CCAEMAQwBGAEEAQgBIAEWAWMCAAAAAAAAAAkAAAAGAAAAQwAAAHMGAQAAdACgAXwAfAFnAqEBXAJ9AH0BfAFkARkAZAJrAnIkdAKDAIIBdAN8AIMBfQJ0A3wBgwF9A3wCfANrAHJQfABkA2QEhQIZAGQCFAB8AGYCUwB8A2QEawJydHwAfAFkARkAGwB8AGQDZASFAhkAZAIUAGYCUwB0BGoFfAJ8AxgAZAQXAHwAagZkBY0CfQR8AH0FeGJ0B3wCfAMYAGQBZAGDA0QAXU59BnQIZAJnAXwGFABkBGcBFwB8AYMCfQd8BWQBGQB8B2QBGQAbAH0IfAVkA2QBhQIZAHwIfAdkA2QBhQIZABQAGAB9BXwIfAR8BjwAcaJXAHwEdACgCXwFoQFmAlMAZANTACkGYZgFAAAKICAgIERpdmlkZSBvbmUgSGVybWl0ZSBzZXJpZXMgYnkgYW5vdGhlci4KCiAgICBSZXR1cm5zIHRoZSBxdW90aWVudC13aXRoLXJlbWFpbmRlciBvZiB0d28gSGVybWl0ZSBzZXJpZXMKICAgIGBjMWAgLyBgYzJgLiAgVGhlIGFyZ3VtZW50cyBhcmUgc2VxdWVuY2VzIG9mIGNvZWZmaWNpZW50cyBmcm9tIGxvd2VzdAogICAgb3JkZXIgInRlcm0iIHRvIGhpZ2hlc3QsIGUuZy4sIFsxLDIsM10gcmVwcmVzZW50cyB0aGUgc2VyaWVzCiAgICBgYFBfMCArIDIqUF8xICsgMypQXzJgYC4KCiAgICBQYXJhbWV0ZXJzCiAgICAtLS0tLS0tLS0tCiAgICBjMSwgYzIgOiBhcnJheV9saWtlCiAgICAgICAgMS1EIGFycmF5cyBvZiBIZXJtaXRlIHNlcmllcyBjb2VmZmljaWVudHMgb3JkZXJlZCBmcm9tIGxvdyB0bwogICAgICAgIGhpZ2guCgogICAgUmV0dXJucwogICAgLS0tLS0tLQogICAgW3F1bywgcmVtXSA6IG5kYXJyYXlzCiAgICAgICAgT2YgSGVybWl0ZSBzZXJpZXMgY29lZmZpY2llbnRzIHJlcHJlc2VudGluZyB0aGUgcXVvdGllbnQgYW5kCiAgICAgICAgcmVtYWluZGVyLgoKICAgIFNlZSBBbHNvCiAgICAtLS0tLS0tLQogICAgaGVybWFkZCwgaGVybXN1YiwgaGVybW11bCwgaGVybXBvdwoKICAgIE5vdGVzCiAgICAtLS0tLQogICAgSW4gZ2VuZXJhbCwgdGhlIChwb2x5bm9taWFsKSBkaXZpc2lvbiBvZiBvbmUgSGVybWl0ZSBzZXJpZXMgYnkgYW5vdGhlcgogICAgcmVzdWx0cyBpbiBxdW90aWVudCBhbmQgcmVtYWluZGVyIHRlcm1zIHRoYXQgYXJlIG5vdCBpbiB0aGUgSGVybWl0ZQogICAgcG9seW5vbWlhbCBiYXNpcyBzZXQuICBUaHVzLCB0byBleHByZXNzIHRoZXNlIHJlc3VsdHMgYXMgYSBIZXJtaXRlCiAgICBzZXJpZXMsIGl0IGlzIG5lY2Vzc2FyeSB0byAicmVwcm9qZWN0IiB0aGUgcmVzdWx0cyBvbnRvIHRoZSBIZXJtaXRlCiAgICBiYXNpcyBzZXQsIHdoaWNoIG1heSBwcm9kdWNlICJ1bmludHVpdGl2ZSIgKGJ1dCBjb3JyZWN0KSByZXN1bHRzOyBzZWUKICAgIEV4YW1wbGVzIHNlY3Rpb24gYmVsb3cuCgogICAgRXhhbXBsZXMKICAgIC0tLS0tLS0tCiAgICA+Pj4gZnJvbSBudW1weS5wb2x5bm9taWFsLmhlcm1pdGUgaW1wb3J0IGhlcm1kaXYKICAgID4+PiBoZXJtZGl2KFsgNTIuLCAgMjkuLCAgNTIuLCAgIDcuLCAgIDYuXSwgWzAsIDEsIDJdKQogICAgKGFycmF5KFsgMS4sICAyLiwgIDMuXSksIGFycmF5KFsgMC5dKSkKICAgID4+PiBoZXJtZGl2KFsgNTQuLCAgMzEuLCAgNTIuLCAgIDcuLCAgIDYuXSwg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IGlzIG11bHRpZGltZW5zaW9uYWwgdGhlCiAgICAgICAgZGlmZmVyZW50IGF4aXMgY29ycmVzcG9uZCB0byBkaWZmZXJlbnQgdmFyaWFibGVzIHdpdGggdGhlIGRlZ3JlZSBpbgogICAgICAgIGVhY2ggYXhpcyBnaXZlbiBieSB0aGUgY29ycmVzcG9uZGluZyBpbmRleC4KICAgIG0gOiBpbnQsIG9wdGlvbmFsCiAgICAgICAgTnVtYmVyIG9mIGRlcml2YXRpdmVzIHRha2VuLCBtdXN0IGJlIG5vbi1uZWdhdGl2ZS4gKERlZmF1bHQ6IDEpCiAgICBzY2wgOiBzY2FsYXIsIG9wdGlvbmFsCiAgICAgICAgRWFjaCBkaWZmZXJlbnRpYXRpb24gaXMgbXVsdGlwbGllZCBieSBgc2NsYC4gIFRoZSBlbmQgcmVzdWx0IGlzCiAgICAgICAgbXVsdGlwbGljYXRpb24gYnkgYGBzY2wqKm1gYC4gIFRoaXMgaXMgZm9yIHVzZSBpbiBhIGxpbmVhciBjaGFuZ2Ugb2YKICAgICAgICB2YXJpYWJsZS4gKERlZmF1bHQ6IDEpCiAgICBheGlzIDogaW50LCBvcHRpb25hbAogICAgICAgIEF4aXMgb3ZlciB3aGljaCB0aGUgZGVyaXZhdGl2ZSBpcyB0YWtlbi4gKERlZmF1bHQ6IDApLgoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjcuMAoKICAgIFJldHVybnMKICAgIC0tLS0tLS0KICAgIGRlciA6IG5kYXJyYXkKICAgICAgICBIZXJtaXRlIHNlcmllcyBvZiB0aGUgZGVyaXZhdGl2ZS4KCiAgICBTZWUgQWxzbwogICAgLS0tLS0tLS0KICAgIGhlcm1pbnQKCiAgICBOb3RlcwogICAgLS0tLS0KICAgIEluIGdlbmVyYWwsIHRoZSByZXN1bHQgb2YgZGlmZmVyZW50aWF0aW5nIGEgSGVybWl0ZSBzZXJpZXMgZG9lcyBub3QKICAgIHJlc2VtYmxlIHRoZSBzYW1lIG9wZXJhdGlvbiBvbiBhIHBvd2VyIHNlcmllcy4gVGh1cyB0aGUgcmVzdWx0IG9mIHRoaXMKICAgIGZ1bmN0aW9uIG1heSBiZSAidW5pbnR1aXRpdmUs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ZXMgc2VjdGlvbiBiZWxvdy4pICBUaGUgYXJndW1lbnQgYGNgIGlzIGFuIGFycmF5IG9mCiAgICBjb2VmZmljaWVudHMgZnJvbSBsb3cgdG8gaGlnaCBkZWdyZWUgYWxvbmcgZWFjaCBheGlzLCBlLmcuLCBbMSwyLDNdCiAgICByZXByZXNlbnRzIHRoZSBzZXJpZXMgYGBIXzAgKyAyKkhfMSArIDMqSF8yYGAgd2hpbGUgW1sxLDJdLFsxLDJdXQogICAgcmVwcmVzZW50cyBgYDEqSF8wKHgpKkhfMCh5KSArIDEqSF8xKHgpKkhfMCh5KSArIDIqSF8wKHgpKkhfMSh5KSArCiAgICAyKkhfMSh4KSpIXzEoeSlgYCBpZiBheGlzPTAgaXMgYGB4YGAgYW5kIGF4aXM9MSBpcyBgYHlgYC4KCiAgICBQYXJhbWV0ZXJzCiAgICAtLS0tLS0tLS0tCiAgICBjIDogYXJyYXlfbGlrZQogICAgICAgIEFycmF5IG9mIEhlcm1pdGUgc2VyaWVzIGNvZWZmaWNpZW50cy4gSWYgYyBpcyBtdWx0aWRpbWVuc2lvbmFsIHRoZQogICAgICAgIGRpZmZlcmVudCBheGlzIGNvcnJlc3BvbmQgdG8gZGlmZmVyZW50IHZhcmlhYmxlcyB3aXRoIHRoZSBkZWdyZWUgaW4KICAgICAgICBlYWNoIGF4aXMgZ2l2ZW4gYnkgdGhlIGNvcnJlc3BvbmRpbmcgaW5kZXguCiAgICBtIDogaW50LCBvcHRpb25hbAogICAgICAgIE9yZGVyIG9mIGludGVncmF0aW9uLCBtdXN0IGJlIHBvc2l0aXZlLiAoRGVmYXVsdDogMSkKICAgIGsgOiB7W10sIGxpc3QsIHNjYWxhcn0sIG9wdGlvbmFsCiAgICAgICAgSW50ZWdyYXRpb24gY29uc3RhbnQocykuICBUaGUgdmFsdWUgb2YgdGhlIGZpcnN0IGludGVncmFsIGF0CiAgICAgICAgYGBsYm5kYGAgaXMgdGhlIGZpcnN0IHZhbHVlIGluIHRoZSBsaXN0LCB0aGUgdmFsdWUgb2YgdGhlIHNlY29uZAogICAgICAgIGludGVncmFsIGF0IGBgbGJuZGBgIGlzIHRoZSBzZWNvbmQgdmFsdWUsIGV0Yy4gIElmIGBgayA9PSBbXWBgICh0aGUKICAgICAgICBkZWZhdWx0KSwgYWxsIGNvbnN0YW50cyBhcmUgc2V0IHRvIHplcm8uICBJZiBgYG0gPT0gMWBgLCBhIHNpbmdsZQogICAgICAgIHNjYWxhciBjYW4gYmUgZ2l2ZW4gaW5zdGVhZCBvZiBhIGxpc3QuCiAgICBsYm5kIDogc2NhbGFyLCBvcHRpb25hbAogICAgICAgIFRoZSBsb3dlciBib3VuZCBvZiB0aGUgaW50ZWdyYWwuIChEZWZhdWx0OiAwKQogICAgc2NsIDogc2NhbGFyLCBvcHRpb25hbAogICAgICAgIEZvbGxvd2luZyBlYWNoIGludGVncmF0aW9uIHRoZSByZXN1bHQgaXMgKm11bHRpcGxpZWQqIGJ5IGBzY2xgCiAgICAgICAgYmVmb3JlIHRoZSBpbnRlZ3JhdGlvbiBjb25zdGFudCBpcyBhZGRlZC4gKERlZmF1bHQ6IDEpCiAgICBheGlzIDogaW50LCBvcHRpb25hbAogICAgICAgIEF4aXMgb3ZlciB3aGljaCB0aGUgaW50ZWdyYWwgaXMgdGFrZW4uIChEZWZhdWx0OiAwKS4KCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMS43LjAKCiAgICBSZXR1cm5zCiAgICAtLS0tLS0tCiAgICBTIDogbmRhcnJheQogICAgICAgIEhlcm1pdGUgc2VyaWVzIGNvZWZmaWNpZW50cyBvZiB0aGUgaW50ZWdyYWwuCgogICAgUmFpc2VzCiAgICAtLS0tLS0KICAgIFZhbHVlRXJyb3IKICAgICAgICBJZiBgYG0gPCAwYGAsIGBgbGVuKGspID4gbWBgLCBgYG5wLmlzc2NhbGFyKGxibmQpID09IEZhbHNlYGAsIG9yCiAgICAgICAgYGBucC5pc3NjYWxhcihzY2wpID09IEZhbHNlYGAuCgogICAgU2VlIEFsc28KICAgIC0tLS0tLS0tCiAgICBoZXJtZGVyCgogICAgTm90ZXMKICAgIC0tLS0tCiAgICBOb3RlIHRoYXQgdGhlIHJlc3VsdCBvZiBlYWNoIGludGVncmF0aW9uIGlzICptdWx0aXBsaWVkKiBieSBgc2NsYC4KICAgIFdoeSBpcyB0aGlzIGltcG9ydGFudCB0byBub3RlPyAgU2F5IG9uZSBpcyBtYWtpbmcgYSBsaW5lYXIgY2hhbmdlIG9mCiAgICB2YXJpYWJsZSA6bWF0aDpgdSA9IGF4ICsgYmAgaW4gYW4gaW50ZWdyYWwgcmVsYXRpdmUgdG8gYHhgLiAgVGhlbgogICAgOm1hdGg6YGR4ID0gZHUvYWAsIHNvIG9uZSB3aWxsIG5lZWQgdG8gc2V0IGBzY2xgIGVxdWFsIHRvCiAgICA6bWF0aDpgMS9hYCAtIHBlcmhhcHMgbm90IHdoYXQgb25lIHdvdWxkIGhhdmUgZmlyc3QgdGhvdWdodC4KCiAgICBBbHNvIG5vdGUgdGhhdCwgaW4gZ2VuZXJhbCwgdGhlIHJlc3VsdCBvZiBpbnRlZ3JhdGluZyBhIEMtc2VyaWVzIG5lZWRzCiAgICB0byBiZSAicmVwcm9qZWN0ZWQiIG9udG8gdGhlIEMtc2VyaWVzIGJhc2lzIHNldC4gIFRodXMsIHR5cGljYWxseSwKICAgIHRoZSByZXN1bHQgb2YgdGhpcyBmdW5jdGlvbiBpcyAidW5pbnR1aXRpdmUsIiBhbGJlaXQgY29ycmVjdDsgc2VlCiAgICBFeGFtcGxlcyBzZWN0aW9uIGJlbG93LgoKICAgIEV4YW1wbGVzCiAgICAtLS0tLS0tLQogICAgPj4+IGZyb20gbnVtcHkucG9seW5vbWlhbC5oZXJtaXRlIGltcG9ydCBoZXJtaW50CiAgICA+Pj4gaGVybWludChbMSwyLDNdKSAjIGludGVncmF0ZSBvbmNlLCB2YWx1ZSAwIGF0IDAuCiAgICBhcnJheShbIDEuICwgIDAuNSwgIDAuNSwgIDAuNV0pCiAgICA+Pj4gaGVybWludChbMSwyLDNdLCBtPTIpICMgaW50ZWdyYXRlIHR3aWNlLCB2YWx1ZSAmIGRlcml2IDAgYXQgMAogICAgYXJyYXkoWy0wLjUgICAgICAgLCAgMC41ICAgICAgICwgIDAuMTI1ICAgICAsICAwLjA4MzMzMzMzLCAgMC4wNjI1ICAgIF0pCiAgICA+Pj4gaGVybWludChbMSwyLDNdLCBrPTEpICMgaW50ZWdyYXRlIG9uY2UsIHZhbHVlIDEgYXQgMC4KICAgIGFycmF5KFsgMi4gLCAgMC41LCAgMC41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cGVbMTpdICsKICAgIHguc2hhcGUuIElmIGB0ZW5zb3JgIGlzIGZhbHNlIHRoZSBzaGFwZSB3aWxsIGJlIGMuc2hhcGVbMTpdLiBOb3RlIHRoYXQKICAgIHNjYWxhcnMgaGF2ZSBzaGFwZSAoLCkuCgogICAgVHJhaWxpbmcgemVyb3MgaW4gdGhlIGNvZWZmaWNpZW50cyB3aWxsIGJlIHVzZWQgaW4gdGhlIGV2YWx1YXRpb24sIHNvCiAgICB0aGV5IHNob3VsZCBiZSBhdm9pZGVkIGlmIGVmZmljaWVuY3kgaXMgYSBjb25jZXJuLgoKICAgIFBhcmFtZXRlcnMKICAgIC0tLS0tLS0tLS0KICAgIHggOiBhcnJheV9saWtlLCBjb21wYXRpYmxlIG9iamVjdAogICAgICAgIElmIGB4YCBpcyBhIGxpc3Qgb3IgdHVwbGUsIGl0IGlzIGNvbnZlcnRlZCB0byBhbiBuZGFycmF5LCBvdGhlcndpc2UKICAgICAgICBpdCBpcyBsZWZ0IHVuY2hhbmdlZCBhbmQgdHJlYXRlZCBhcyBhIHNjYWxhci4gSW4gZWl0aGVyIGNhc2UsIGB4YAogICAgICAgIG9yIGl0cyBlbGVtZW50cyBtdXN0IHN1cHBvcnQgYWRkaXRpb24gYW5kIG11bHRpcGxpY2F0aW9uIHdpdGgKICAgICAgICB3aXRoIHRoZW1zZWx2ZXMgYW5kIHdpdGggdGhlIGVsZW1lbnRzIG9mIGBjYC4KICAgIGMgOiBhcnJheV9saWtlCiAgICAgICAgQXJyYXkgb2YgY29lZmZpY2llbnRzIG9yZGVyZWQgc28gdGhhdCB0aGUgY29lZmZpY2llbnRzIGZvciB0ZXJtcyBvZgogICAgICAgIGRlZ3JlZSBuIGFyZSBjb250YWluZWQgaW4gY1tuXS4gSWYgYGNgIGlzIG11bHRpZGltZW5zaW9uYWwgdGhlCiAgICAgICAgcmVtYWluaW5nIGluZGljZXMgZW51bWVyYXRlIG11bHRpcGxlIHBvbHlub21pYWxzLiBJbiB0aGUgdHdvCiAgICAgICAgZGltZW5zaW9uYWwgY2FzZSB0aGUgY29lZmZpY2llbnRzIG1heSBiZSB0aG91Z2h0IG9mIGFzIHN0b3JlZCBpbgogICAgICAgIHRoZSBjb2x1bW5zIG9mIGBjYC4KICAgIHRlbnNvciA6IGJvb2xlYW4sIG9wdGlvbmFsCiAgICAgICAgSWYgVHJ1ZSwgdGhlIHNoYXBlIG9mIHRoZSBjb2VmZmljaWVudCBhcnJheSBpcyBleHRlbmRlZCB3aXRoIG9uZXMKICAgICAgICBvbiB0aGUgcmlnaHQsIG9uZSBmb3IgZWFjaCBkaW1lbnNpb24gb2YgYHhgLiBTY2FsYXJzIGhhdmUgZGltZW5zaW9uIDAKICAgICAgICBmb3IgdGhpcyBhY3Rpb24uIFRoZSByZXN1bHQgaXMgdGhhdCBldmVyeSBjb2x1bW4gb2YgY29lZmZpY2llbnRzIGluCiAgICAgICAgYGNgIGlzIGV2YWx1YXRlZCBmb3IgZXZlcnkgZWxlbWVudCBvZiBgeGAuIElmIEZhbHNlLCBgeGAgaXMgYnJvYWRjYXN0CiAgICAgICAgb3ZlciB0aGUgY29sdW1ucyBvZiBgY2AgZm9yIHRoZSBldmFsdWF0aW9uLiAgVGhpcyBrZXl3b3JkIGlzIHVzZWZ1bAogICAgICAgIHdoZW4gYGNgIGlzIG11bHRpZGltZW5zaW9uYWwuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIFRydWUuCgogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuNy4wCgogICAgUmV0dXJucwogICAgLS0tLS0tLQogICAgdmFsdWVzIDogbmRhcnJheSwgYWxnZWJyYV9saWtlCiAgICAgICAgVGhlIHNoYXBlIG9mIHRoZSByZXR1cm4gdmFsdWUgaXMgZGVzY3JpYmVkIGFib3ZlLgoKICAgIFNlZSBBbHNvCiAgICAtLS0tLS0tLQogICAgaGVybXZhbDJkLCBoZXJtZ3JpZDJkLCBoZXJtdmFsM2QsIGhlcm1ncmlkM2QKCiAgICBOb3RlcwogICAgLS0tLS0KICAgIFRoZSBldmFsdWF0aW9uIHVzZXMgQ2xlbnNoYXcgcmVjdXJzaW9uLCBha2Egc3ludGhldGljIGRpdmlzaW9uLgoKICAgIEV4YW1wbGVzCiAgICAtLS0tLS0tLQogICAgPj4+IGZyb20gbnVtcHkucG9seW5vbWlhbC5oZXJtaXRlIGltcG9ydCBoZXJtdmFsCiAgICA+Pj4gY29lZiA9IFsxLDIsM10KICAgID4+PiBoZXJtdmFsKDEsIGNvZWYpCiAgICAxMS4wCiAgICA+Pj4gaGVybXZhbChbWzEsMl0sWzMsNF1dLCBjb2VmKQogICAgYXJyYXkoW1sgIDExLiwgICA1MS5dLAogICAgICAgICAgIFsgMTE1LiwgIDIwMy5dXSkKCiAgICByBgAAAHIBAAAAKQJyWwAAAHJcAAAAeg0/YkJoSGlJbExxUXBQKQFyBgAAAHI1AAAAcjYAAAByKAAAAHJRAAAAKRByPQAAAHI+AAAAck4AAAByXgAAAHJfAAAAcmAAAADaCmlzaW5zdGFuY2XaBXR1cGxlcmkAAADaB2FzYXJyYXlaB25kYXJyYXnaB3Jlc2hhcGVyYwAAAHJhAAAAcisAAAByLAAAACkJ2gF4cjgAAADaBnRlbnNvctoCeDJyOgAAAHI7AAAAclIAAAByLwAAAHI8AAAAcjAAAAByMAAAAHIxAAAAchQAAABPAwAAcy4AAAAARRABDAEMAQ4BCgEQARYCCAEMAQgBBgEMAQgBCgIIAQgBCAEYAQQBCAEaARABYwMAAAAAAAAAAwAAAAYAAABDAAAAc0wAAAB5GnQAagF8AHwBZgJkAWQCjQJcAn0AfQFXAG4UAQABAAEAdAJkA4MBggFZAG4CWAB0A3wAfAKDAn0CdAN8AXwCZARkBY0DfQJ8AlMAKQZhQgYAAAogICAgRXZhbHVhdGUgYSAyLUQgSGVybWl0ZSBzZXJpZXMgYXQgcG9pbnRzICh4LCB5KS4KCiAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHZhbHVlczoKCiAgICAuLiBtYXRoOjogcCh4LHkpID0gXHN1bV97aSxqfSBjX3tpLGp9ICogSF9pKHgpICogSF9qKHkpCgogICAgVGhlIHBhcmFtZXRlcnMgYHhgIGFuZCBgeWAgYXJlIGNvbnZlcnRlZCB0byBhcnJheXMgb25seSBpZiB0aGV5IGFyZQogICAgdHVwbGVzIG9yIGEgbGlzdHMsIG90aGVyd2lzZSB0aGV5IGFyZSB0cmVhdGVkIGFzIGEgc2NhbGFycyBhbmQgdGhleQogICAgbXVzdCBoYXZlIHRoZSBzYW1lIHNoYXBlIGFmdGVyIGNvbnZlcnNpb24uIEluIGVpdGhlciBjYXNlLCBlaXRoZXIgYHhgCiAgICBhbmQgYHlgIG9yIHRoZWlyIGVsZW1lbnRzIG11c3Qgc3VwcG9ydCBtdWx0aXBsaWNhdGlvbiBhbmQgYWRkaXRpb24gYm90aAogICAgd2l0aCB0aGVtc2VsdmVzIGFuZCB3aXRoIHRoZSBlbGVtZW50cyBvZiBgY2AuCgogICAgSWYgYGNgIGlzIGEgMS1EIGFycmF5IGEgb25lIGlzIGltcGxpY2l0bHkgYXBwZW5kZWQgdG8gaXRzIHNoYXBlIHRvIG1ha2UKICAgIGl0IDItRC4gVGhlIHNoYXBlIG9mIHRoZSByZXN1bHQgd2lsbCBiZSBjLnNoYXBlWzI6XSArIHguc2hhcGUuCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgeCwgeSA6IGFycmF5X2xpa2UsIGNvbXBhdGlibGUgb2JqZWN0cwogICAgICAgIFRoZSB0d28gZGltZW5zaW9uYWwgc2VyaWVzIGlzIGV2YWx1YXRlZCBhdCB0aGUgcG9pbnRzIGAoeCwgeSlgLAogICAgICAgIHdoZXJlIGB4YCBhbmQgYHlgIG11c3QgaGF2ZSB0aGUgc2FtZSBzaGFwZS4gSWYgYHhgIG9yIGB5YCBpcyBhIGxpc3QKICAgICAgICBvciB0dXBsZSwgaXQgaXMgZmlyc3QgY29udmVydGVkIHRvIGFuIG5kYXJyYXksIG90aGVyd2lzZSBpdCBpcyBsZWZ0CiAgICAgICAgdW5jaGFuZ2VkIGFuZCBpZiBpdCBpc24ndCBhbiBuZGFycmF5IGl0IGlzIHRyZWF0ZWQgYXMgYSBzY2FsYXIuCiAgICBjIDogYXJyYXlfbGlrZQogICAgICAgIEFycmF5IG9mIGNvZWZmaWNpZW50cyBvcmRlcmVkIHNvIHRoYXQgdGhlIGNvZWZmaWNpZW50IG9mIHRoZSB0ZXJtCiAgICAgICAgb2YgbXVsdGktZGVncmVlIGksaiBpcyBjb250YWluZWQgaW4gYGBjW2ksal1gYC4gSWYgYGNgIGhhcwogICAgICAgIGRpbWVuc2lvbiBncmVhdGVyIHRoYW4gdHdvIHRoZSByZW1haW5pbmcgaW5kaWNlcyBlbnVtZXJhdGUgbXVsdGlwbGUKICAgICAgICBzZXRzIG9mIGNvZWZmaWNpZW50cy4KCiAgICBSZXR1cm5zCiAgICAtLS0tLS0tCiAgICB2YWx1ZXMgOiBuZGFycmF5LCBjb21wYXRpYmxlIG9iamVjdAogICAgICAgIFRoZSB2YWx1ZXMgb2YgdGhlIHR3byBkaW1lbnNpb25hbCBwb2x5bm9taWFsIGF0IHBvaW50cyBmb3JtZWQgd2l0aAogICAgICAgIHBhaXJzIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzIGZyb20gYHhgIGFuZCBgeWAuCgogICAgU2VlIEFsc28KICAgIC0tLS0tLS0tCiAgICBoZXJtdmFsLCBoZXJtZ3JpZDJkLCBoZXJtdmFsM2QsIGhlcm1ncmlkM2QKCiAgICBOb3RlcwogICAgLS0tLS0KCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjcuMAoKICAgIHIBAAAAKQFyXAAAAHoVeCwgeSBhcmUgaW5jb21wYXRpYmxlRikBcnEAAAApBHI9AAAAcj4AAAByWAAAAHIUAAAAKQNycAAAANoBeXI4AAAAcjAAAAByMAAAAHIxAAAAch8AAACvAwAAcw4AAAAALgIBGgEGAQ4CCgEOAWMDAAAAAAAAAAMAAAADAAAAQwAAAHMYAAAAdAB8AHwCgwJ9AnQAfAF8AoMCfQJ8AlMAKQFh0gYAAAogICAgRXZhbHVhdGUgYSAyLUQgSGVybWl0ZSBzZXJpZXMgb24gdGhlIENhcnRlc2lhbiBwcm9kdWN0IG9mIHggYW5kIHkuCgogICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB2YWx1ZXM6CgogICAgLi4gbWF0aDo6IHAoYSxiKSA9IFxzdW1fe2ksan0gY197aSxqfSAqIEhfaShhKSAqIEhfaihiKQoKICAgIHdoZXJlIHRoZSBwb2ludHMgYChhLCBiKWAgY29uc2lzdCBvZiBhbGwgcGFpcnMgZm9ybWVkIGJ5IHRha2luZwogICAgYGFgIGZyb20gYHhgIGFuZCBgYmAgZnJvbSBgeWAuIFRoZSByZXN1bHRpbmcgcG9pbnRzIGZvcm0gYSBncmlkIHdpdGgKICAgIGB4YCBpbiB0aGUgZmlyc3QgZGltZW5zaW9uIGFuZCBgeWAgaW4gdGhlIHNlY29uZC4KCiAgICBUaGUgcGFyYW1ldGVycyBgeGAgYW5kIGB5YCBhcmUgY29udmVydGVkIHRvIGFycmF5cyBvbmx5IGlmIHRoZXkgYXJlCiAgICB0dXBsZXMgb3IgYSBsaXN0cywgb3RoZXJ3aXNlIHRoZXkgYXJlIHRyZWF0ZWQgYXMgYSBzY2FsYXJzLiBJbiBlaXRoZXIKICAgIGNhc2UsIGVpdGhlciBgeGAgYW5kIGB5YCBvciB0aGVpciBlbGVtZW50cyBtdXN0IHN1cHBvcnQgbXVsdGlwbGljYXRpb24KICAgIGFuZCBhZGRpdGlvbiBib3RoIHdpdGggdGhlbXNlbHZlcyBhbmQgd2l0aCB0aGUgZWxlbWVudHMgb2YgYGNgLgoKICAgIElmIGBjYCBoYXMgZmV3ZXIgdGhhbiB0d28gZGltZW5zaW9ucywgb25lcyBhcmUgaW1wbGljaXRseSBhcHBlbmRlZCB0bwogICAgaXRzIHNoYXBlIHRvIG1ha2UgaXQgMi1ELiBUaGUgc2hhcGUgb2YgdGhlIHJlc3VsdCB3aWxsIGJlIGMuc2hhcGVbMjpdICsKICAgIHguc2hhcGUuCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgeCwgeSA6IGFycmF5X2xpa2UsIGNvbXBhdGlibGUgb2JqZWN0cwogICAgICAgIFRoZSB0d28gZGltZW5zaW9uYWwgc2VyaWVzIGlzIGV2YWx1YXRlZCBhdCB0aGUgcG9pbnRzIGluIHRoZQogICAgICAgIENhcnRlc2lhbiBwcm9kdWN0IG9mIGB4YCBhbmQgYHlgLiAgSWYgYHhgIG9yIGB5YCBpcyBhIGxpc3Qgb3IKICAgICAgICB0dXBsZSwgaXQgaXMgZmlyc3QgY29udmVydGVkIHRvIGFuIG5kYXJyYXksIG90aGVyd2lzZSBpdCBpcyBsZWZ0CiAgICAgICAgdW5jaGFuZ2VkIGFuZCwgaWYgaXQgaXNuJ3QgYW4gbmRhcnJheSwgaXQgaXMgdHJlYXRlZCBhcyBhIHNjYWxhci4KICAgIGMgOiBhcnJheV9saWtlCiAgICAgICAgQXJyYXkgb2YgY29lZmZpY2llbnRzIG9yZGVyZWQgc28gdGhhdCB0aGUgY29lZmZpY2llbnRzIGZvciB0ZXJtcyBvZgogICAgICAgIGRlZ3JlZSBpLGogYXJlIGNvbnRhaW5lZCBpbiBgYGNbaSxqXWBgLiBJZiBgY2AgaGFzIGRpbWVuc2lvbgogICAgICAgIGdyZWF0ZXIgdGhhbiB0d28gdGhlIHJlbWFpbmluZyBpbmRpY2VzIGVudW1lcmF0ZSBtdWx0aXBsZSBzZXRzIG9mCiAgICAgICAgY29lZmZpY2llbnRzLgoKICAgIFJldHVybnMKICAgIC0tLS0tLS0KICAgIHZhbHVlcyA6IG5kYXJyYXksIGNvbXBhdGlibGUgb2JqZWN0CiAgICAgICAgVGhlIHZhbHVlcyBvZiB0aGUgdHdvIGRpbWVuc2lvbmFsIHBvbHlub21pYWwgYXQgcG9pbnRzIGluIHRoZSBDYXJ0ZXNpYW4KICAgICAgICBwcm9kdWN0IG9mIGB4YCBhbmQgYHlgLgoKICAgIFNlZSBBbHNvCiAgICAtLS0tLS0tLQogICAgaGVybXZhbCwgaGVybXZhbDJkLCBoZXJtdmFsM2QsIGhlcm1ncmlkM2QKCiAgICBOb3RlcwogICAgLS0tLS0KCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjcuMAoKICAgICkBchQAAAApA3JwAAAAcnMAAAByOAAAAHIwAAAAcjAAAAByMQAAAHIhAAAA5wMAAHMGAAAAADIKAQoBYwQAAAAAAAAABAAAAAYAAABDAAAAc14AAAB5HnQAagF8AHwBfAJmA2QBZAKNAlwDfQB9AX0CVwBuFAEAAQABAHQCZAODAYIBWQBuAlgAdAN8AHwDgwJ9A3QDfAF8A2QEZAWNA30DdAN8AnwDZARkBY0DfQN8A1MAKQZhoQYAAAogICAgRXZhbHVhdGUgYSAzLUQgSGVybWl0ZSBzZXJpZXMgYXQgcG9pbnRzICh4LCB5LCB6KS4KCiAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHZhbHVlczoKCiAgICAuLiBtYXRoOjogcCh4LHkseikgPSBcc3VtX3tpLGosa30gY197aSxqLGt9ICogSF9pKHgpICogSF9qKHkpICogSF9rKHopCgogICAgVGhlIHBhcmFtZXRlcnMgYHhgLCBgeWAsIGFuZCBgemAgYXJlIGNvbnZlcnRlZCB0byBhcnJheXMgb25seSBpZgogICAgdGhleSBhcmUgdHVwbGVzIG9yIGEgbGlzdHMsIG90aGVyd2lzZSB0aGV5IGFyZSB0cmVhdGVkIGFzIGEgc2NhbGFycyBhbmQKICAgIHRoZXkgbXVzdCBoYXZlIHRoZSBzYW1lIHNoYXBlIGFmdGVyIGNvbnZlcnNpb24uIEluIGVpdGhlciBjYXNlLCBlaXRoZXIKICAgIGB4YCwgYHlgLCBhbmQgYHpgIG9yIHRoZWlyIGVsZW1lbnRzIG11c3Qgc3VwcG9ydCBtdWx0aXBsaWNhdGlvbiBhbmQKICAgIGFkZGl0aW9uIGJvdGggd2l0aCB0aGVtc2VsdmVzIGFuZCB3aXRoIHRoZSBlbGVtZW50cyBvZiBgY2AuCgogICAgSWYgYGNgIGhhcyBmZXdlciB0aGFuIDMgZGltZW5zaW9ucywgb25lcyBhcmUgaW1wbGljaXRseSBhcHBlbmRlZCB0byBpdHMKICAgIHNoYXBlIHRvIG1ha2UgaXQgMy1ELiBUaGUgc2hhcGUgb2YgdGhlIHJlc3VsdCB3aWxsIGJlIGMuc2hhcGVbMzpdICsKICAgIHguc2hhcGUuCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgeCwgeSwgeiA6IGFycmF5X2xpa2UsIGNvbXBhdGlibGUgb2JqZWN0CiAgICAgICAgVGhlIHRocmVlIGRpbWVuc2lvbmFsIHNlcmllcyBpcyBldmFsdWF0ZWQgYXQgdGhlIHBvaW50cwogICAgICAgIGAoeCwgeSwgeilgLCB3aGVyZSBgeGAsIGB5YCwgYW5kIGB6YCBtdXN0IGhhdmUgdGhlIHNhbWUgc2hhcGUuICBJZgogICAgICAgIGFueSBvZiBgeGAsIGB5YCwgb3IgYHpgIGlzIGEgbGlzdCBvciB0dXBsZSwgaXQgaXMgZmlyc3QgY29udmVydGVkCiAgICAgICAgdG8gYW4gbmRhcnJheSwgb3RoZXJ3aXNlIGl0IGlzIGxlZnQgdW5jaGFuZ2VkIGFuZCBpZiBpdCBpc24ndCBhbgogICAgICAgIG5kYXJyYXkgaXQgaXMgIHRyZWF0ZWQgYXMgYSBzY2FsYXIuCiAgICBjIDogYXJyYXlfbGlrZQogICAgICAgIEFycmF5IG9mIGNvZWZmaWNpZW50cyBvcmRlcmVkIHNvIHRoYXQgdGhlIGNvZWZmaWNpZW50IG9mIHRoZSB0ZXJtIG9mCiAgICAgICAgbXVsdGktZGVncmVlIGksaixrIGlzIGNvbnRhaW5lZCBpbiBgYGNbaSxqLGtdYGAuIElmIGBjYCBoYXMgZGltZW5zaW9uCiAgICAgICAgZ3JlYXRlciB0aGFuIDMgdGhlIHJlbWFpbmluZyBpbmRpY2VzIGVudW1lcmF0ZSBtdWx0aXBsZSBzZXRzIG9mCiAgICAgICAgY29lZmZpY2llbnRzLgoKICAgIFJldHVybnMKICAgIC0tLS0tLS0KICAgIHZhbHVlcyA6IG5kYXJyYXksIGNvbXBhdGlibGUgb2JqZWN0CiAgICAgICAgVGhlIHZhbHVlcyBvZiB0aGUgbXVsdGlkaW1lbnNpb25hbCBwb2x5bm9taWFsIG9uIHBvaW50cyBmb3JtZWQgd2l0aAogICAgICAgIHRyaXBsZXMgb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMgZnJvbSBgeGAsIGB5YCwgYW5kIGB6YC4KCiAgICBTZWUgQWxzbwogICAgLS0tLS0tLS0KICAgIGhlcm12YWwsIGhlcm12YWwyZCwgaGVybWdyaWQyZCwgaGVybWdyaWQzZAoKICAgIE5vdGVzCiAgICAtLS0tLQoKICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuNy4wCgogICAgcgEAAAApAXJcAAAAehh4LCB5LCB6IGFyZSBpbmNvbXBhdGlibGVGKQFycQAAACkEcj0AAAByPgAAAHJYAAAAchQAAAApBHJwAAAAcnMAAADaAXpyOAAAAHIwAAAAcjAAAAByMQAAAHIgAAAAHgQAAHMQAAAAADACAR4BBgEOAgoBDgEOAWMEAAAAAAAAAAQAAAADAAAAQwAAAHMiAAAAdAB8AHwDgwJ9A3QAfAF8A4MCfQN0AHwCfAODAn0DfANTACkBYU4HAAAKICAgIEV2YWx1YXRlIGEgMy1EIEhlcm1pdGUgc2VyaWVzIG9uIHRoZSBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiB4LCB5LCBhbmQgei4KCiAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHZhbHVlczoKCiAgICAuLiBtYXRoOjogcChhLGIsYykgPSBcc3VtX3tpLGosa30gY197aSxqLGt9ICogSF9pKGEpICogSF9qKGIpICogSF9rKGMpCgogICAgd2hlcmUgdGhlIHBvaW50cyBgKGEsIGIsIGMpYCBjb25zaXN0IG9mIGFsbCB0cmlwbGVzIGZvcm1lZCBieSB0YWtpbmcKICAgIGBhYCBmcm9tIGB4YCwgYGJgIGZyb20gYHlgLCBhbmQgYGNgIGZyb20gYHpgLiBUaGUgcmVzdWx0aW5nIHBvaW50cyBmb3JtCiAgICBhIGdyaWQgd2l0aCBgeGAgaW4gdGhlIGZpcnN0IGRpbWVuc2lvbiwgYHlgIGluIHRoZSBzZWNvbmQsIGFuZCBgemAgaW4KICAgIHRoZSB0aGlyZC4KCiAgICBUaGUgcGFyYW1ldGVycyBgeGAsIGB5YCwgYW5kIGB6YCBhcmUgY29udmVydGVkIHRvIGFycmF5cyBvbmx5IGlmIHRoZXkKICAgIGFyZSB0dXBsZXMgb3IgYSBsaXN0cywgb3RoZXJ3aXNlIHRoZXkgYXJlIHRyZWF0ZWQgYXMgYSBzY2FsYXJzLiBJbgogICAgZWl0aGVyIGNhc2UsIGVpdGhlciBgeGAsIGB5YCwgYW5kIGB6YCBvciB0aGVpciBlbGVtZW50cyBtdXN0IHN1cHBvcnQKICAgIG11bHRpcGxpY2F0aW9uIGFuZCBhZGRpdGlvbiBib3RoIHdpdGggdGhlbXNlbHZlcyBhbmQgd2l0aCB0aGUgZWxlbWVudHMKICAgIG9mIGBjYC4KCiAgICBJZiBgY2AgaGFzIGZld2VyIHRoYW4gdGhyZWUgZGltZW5zaW9ucywgb25lcyBhcmUgaW1wbGljaXRseSBhcHBlbmRlZCB0bwogICAgaXRzIHNoYXBlIHRvIG1ha2UgaXQgMy1ELiBUaGUgc2hhcGUgb2YgdGhlIHJlc3VsdCB3aWxsIGJlIGMuc2hhcGVbMzpdICsKICAgIHguc2hhcGUgKyB5LnNoYXBlICsgei5zaGFwZS4KCiAgICBQYXJhbWV0ZXJzCiAgICAtLS0tLS0tLS0tCiAgICB4LCB5LCB6IDogYXJyYXlfbGlrZSwgY29tcGF0aWJsZSBvYmplY3RzCiAgICAgICAgVGhlIHRocmVlIGRpbWVuc2lvbmFsIHNlcmllcyBpcyBldmFs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ZXJtaXRlIHNlcmllcyBvZiB0aGUgc2FtZSBkZWdyZWUgYW5kIHNhbXBsZSBwb2ludHMuCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgeCA6IGFycmF5X2xpa2UKICAgICAgICBBcnJheSBvZiBwb2ludHMuIFRoZSBkdHlwZSBpcyBjb252ZXJ0ZWQgdG8gZmxvYXQ2NCBvciBjb21wbGV4MTI4CiAgICAgICAgZGVwZW5kaW5nIG9uIHdoZXRoZXIgYW55IG9mIHRoZSBlbGVtZW50cyBhcmUgY29tcGxleC4gSWYgYHhgIGlzCiAgICAgICAgc2NhbGFyIGl0IGlzIGNvbnZlcnRlZCB0byBhIDEtRCBhcnJheS4KICAgIGRlZyA6IGludAogICAgICAgIERlZ3JlZSBvZiB0aGUgcmVzdWx0aW5nIG1hdHJpeC4KCiAgICBSZXR1cm5zCiAgICAtLS0tLS0tCiAgICB2YW5kZXIgOiBuZGFycmF5CiAgICAgICAgVGhlIHBzZXVkby1WYW5kZXJtb25kZSBtYXRyaXguIFRoZSBzaGFwZSBvZiB0aGUgcmV0dXJuZWQgbWF0cml4IGlzCiAgICAgICAgYGB4LnNoYXBlICsgKGRlZyArIDEsKWBgLCB3aGVyZSBUaGUgbGFzdCBpbmRleCBpcyB0aGUgZGVncmVlIG9mIHRoZQogICAgICAgIGNvcnJlc3BvbmRpbmcgSGVybWl0ZSBwb2x5bm9taWFsLiAgVGhlIGR0eXBlIHdpbGwgYmUgdGhlIHNhbWUgYXMKICAgICAgICB0aGUgY29udmVydGVkIGB4YC4KCiAgICBFeGFtcGxlcwogICAgLS0tLS0tLS0KICAgID4+PiBmcm9tIG51bXB5LnBvbHlub21pYWwuaGVybWl0ZSBpbXBvcnQgaGVybXZhbmRlcgogICAgPj4+IHggPSBucC5hcnJheShbLTEsIDAsIDFdKQogICAgPj4+IGhlcm12YW5kZXIoeCwgMykKICAgIGFycmF5KFtbIDEuLCAtMi4sICAyLiwgIDQuXSwKICAgICAgICAgICBbIDEuLCAgMC4sIC0yLiwgLTAuXSwKICAgICAgICAgICBbIDEuLCAgMi4sICAyLiwgLTQuXV0pCgogICAgehNkZWcgbXVzdCBiZSBpbnRlZ2VycgEAAAB6GGRlZyBtdXN0IGJlIG5vbi1uZWdhdGl2ZXIGAAAAKQJyXAAAAHJbAAAAZwAAAAAAAAAAKQFyTgAAAHI1AAAAKQpyVwAAAHJYAAAAcj0AAAByPgAAAHJjAAAAck4AAAByTwAAAHIsAAAAcmIAAAByYQAAACkIcnAAAAByLQAAANoEaWRlZ1oEZGltc1oEZHR5cNoBdnJyAAAAci8AAAByMAAAAHIwAAAAcjEAAAByGgAAAJQEAABzIAAAAAAsCAEIAQgBCAEIAhQBEAEGAQ4BEAEIAQgBCAEUATABYwMAAAAAAAAACgAAAAYAAABDAAAAc54AAABkAWQChAB8AkQAgwF9A2QDZAKEAHQAfAN8AoMCRACDAX0EfARkBGQEZwJrA3I2dAFkBYMBggF8A1wCfQV9BnQCagN8AHwBZgJkBmQHjQJkCBcAXAJ9AH0BdAR8AHwFgwJ9B3QEfAF8BoMCfQh8B2QJGQB8CGQKZAtkC2QLhQJmAxkAFAB9CXwJoAV8CWoGZAtkDIUCGQBkDRcAoQFTACkOYZEGAABQc2V1ZG8tVmFuZGVybW9uZGUgbWF0cml4IG9mIGdpdmVuIGRlZ3JlZXMuCgogICAgUmV0dXJucyB0aGUgcHNldWRvLVZhbmRlcm1vbmRlIG1hdHJpeCBvZiBkZWdyZWVzIGBkZWdgIGFuZCBzYW1wbGUKICAgIHBvaW50cyBgKHgsIHkpYC4gVGhlIHBzZXVkby1WYW5kZXJtb25kZSBtYXRyaXggaXMgZGVmaW5lZCBieQoKICAgIC4uIG1hdGg6OiBWWy4uLiwgKGRlZ1sxXSArIDEpKmkgKyBqXSA9IEhfaSh4KSAqIEhfaih5KSwKCiAgICB3aGVyZSBgMCA8PSBpIDw9IGRlZ1swXWAgYW5kIGAwIDw9IGogPD0gZGVnWzFdYC4gVGhlIGxlYWRpbmcgaW5kaWNlcyBvZgogICAgYFZgIGluZGV4IHRoZSBwb2ludHMgYCh4LCB5KWAgYW5kIHRoZSBsYXN0IGluZGV4IGVuY29kZXMgdGhlIGRlZ3JlZXMgb2YKICAgIHRoZSBIZXJtaXRlIHBvbHlub21pYWxzLgoKICAgIElmIGBgViA9IGhlcm12YW5kZXIyZCh4LCB5LCBbeGRlZywgeWRlZ10pYGAsIHRoZW4gdGhlIGNvbHVtbnMgb2YgYFZgCiAgICBjb3JyZXNwb25kIHRvIHRoZSBlbGVtZW50cyBvZiBhIDItRCBjb2VmZmljaWVudCBhcnJheSBgY2Agb2Ygc2hhcGUKICAgICh4ZGVnICsgMSwgeWRlZyArIDEpIGluIHRoZSBvcmRlcgoKICAgIC4uIG1hdGg6OiBjX3swMH0sIGNfezAxfSwgY197MDJ9IC4uLiAsIGNfezEwfSwgY197MTF9LCBjX3sxMn0gLi4uCgogICAgYW5kIGBgbnAuZG90KFYsIGMuZmxhdClgYCBhbmQgYGBoZXJtdmFsMmQoeCwgeSwgYylgYCB3aWxsIGJlIHRoZSBzYW1lCiAgICB1cCB0byByb3VuZG9mZi4gVGhpcyBlcXVpdmFsZW5jZSBpcyB1c2VmdWwgYm90aCBmb3IgbGVhc3Qgc3F1YXJlcwogICAgZml0dGluZyBhbmQgZm9yIHRoZSBldmFsdWF0aW9uIG9mIGEgbGFyZ2UgbnVtYmVyIG9mIDItRCBIZXJtaXRlCiAgICBzZXJpZXMgb2YgdGhlIHNhbWUgZGVncmVlcyBhbmQgc2FtcGxlIHBvaW50cy4KCiAgICBQYXJhbWV0ZXJzCiAgICAtLS0tLS0tLS0tCiAgICB4LCB5IDogYXJyYXlfbGlrZQogICAgICAgIEFycmF5cyBvZiBwb2ludCBjb29yZGluYXRlcywgYWxsIG9mIHRoZSBzYW1lIHNoYXBlLiBUaGUgZHR5cGVzCiAgICAgICAgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gZWl0aGVyIGZsb2F0NjQgb3IgY29tcGxleDEyOCBkZXBlbmRpbmcgb24KICAgICAgICB3aGV0aGVyIGFueSBvZiB0aGUgZWxlbWVudHMgYXJlIGNvbXBsZXguIFNjYWxhcnMgYXJlIGNvbnZlcnRlZCB0byAxLUQKICAgICAgICBhcnJheXMuCiAgICBkZWcgOiBsaXN0IG9mIGludHMKICAgICAgICBMaXN0IG9mIG1heGltdW0gZGVncmVlcyBvZiB0aGUgZm9ybSBbeF9kZWcsIHlfZGVnXS4KCiAgICBSZXR1cm5zCiAgICAtLS0tLS0tCiAgICB2YW5kZXIyZCA6IG5kYXJyYXkKICAgICAgICBUaGUg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CiAgICBhbmQgIGBgbnAuZG90KFYsIGMuZmxhdClgYCBhbmQgYGBoZXJtdmFsM2QoeCwgeSwgeiwgYylgYCB3aWxsIGJlIHRoZQogICAgc2FtZSB1cCB0byByb3VuZG9mZi4gVGhpcyBlcXVpdmFsZW5jZSBpcyB1c2VmdWwgYm90aCBmb3IgbGVhc3Qgc3F1YXJlcwogICAgZml0dGluZyBhbmQgZm9yIHRoZSBldmFsdWF0aW9uIG9mIGEgbGFyZ2UgbnVtYmVyIG9mIDMtRCBIZXJtaXRlCiAgICBzZXJpZXMgb2YgdGhlIHNhbWUgZGVncmVlcyBhbmQgc2FtcGxlIHBvaW50cy4KCiAgICBQYXJhbWV0ZXJzCiAgICAtLS0tLS0tLS0tCiAgICB4LCB5LCB6IDogYXJyYXlfbGlrZQogICAgICAgIEFycmF5cyBvZiBwb2ludCBjb29yZGluYXRlcywgYWxsIG9mIHRoZSBzYW1lIHNoYXBlLiBUaGUgZHR5cGVzIHdpbGwKICAgICAgICBiZSBjb252ZXJ0ZWQgdG8gZWl0aGVyIGZsb2F0NjQgb3IgY29tcGxleDEyOCBkZXBlbmRpbmcgb24gd2hldGhlcgogICAgICAgIGFueSBvZiB0aGUgZWxlbWVudHMgYXJlIGNvbXBsZXguIFNjYWxhcnMgYXJlIGNvbnZlcnRlZCB0byAxLUQKICAgICAgICBhcnJheXMuCiAgICBkZWcgOiBsaXN0IG9mIGludHMKICAgICAgICBMaXN0IG9mIG1heGltdW0gZGVncmVlcyBvZiB0aGUgZm9ybSBbeF9kZWcsIHlfZGVnLCB6X2RlZ10uCgogICAgUmV0dXJucwogICAgLS0tLS0tLQogICAgdmFuZGVyM2QgOiBuZGFycmF5CiAgICAgICAgVGhlIHNoYXBlIG9mIHRoZSByZXR1cm5lZCBtYXRyaXggaXMgYGB4LnNoYXBlICsgKG9yZGVyLClgYCwgd2hlcmUKICAgICAgICA6bWF0aDpgb3JkZXIgPSAoZGVnWzBdKzEpKihkZWcoWzFdKzEpKihkZWdbMl0rMSlgLiAgVGhlIGR0eXBlIHdpbGwKICAgICAgICBiZSB0aGUgc2FtZSBhcyB0aGUgY29udmVydGVkIGB4YCwgYHlgLCBhbmQgYHpg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dGhlIGZvcm0KCiAgICAuLiBtYXRoOjogIHAoeCkgPSBjXzAgKyBjXzEgKiBIXzEoeCkgKyAuLi4gKyBjX24gKiBIX24oeCksCgogICAgd2hlcmUgYG5gIGlzIGBkZWdgLgoKICAgIFBhcmFtZXRlcnMKICAgIC0tLS0tLS0tLS0KICAgIHggOiBhcnJheV9saWtlLCBzaGFwZSAoTSwpCiAgICAgICAgeC1jb29yZGluYXRlcyBvZiB0aGUgTSBzYW1wbGUgcG9pbnRzIGBgKHhbaV0sIHlbaV0pYGAuCiAgICB5IDogYXJyYXlfbGlrZSwgc2hhcGUgKE0sKSBvciAoTSwgSykKICAgICAgICB5LWNvb3JkaW5hdGVzIG9mIHRoZSBzYW1wbGUgcG9pbnRzLiBTZXZlcmFsIGRhdGEgc2V0cyBvZiBzYW1wbGUKICAgICAgICBwb2ludHMgc2hhcmluZyB0aGUgc2FtZSB4LWNvb3JkaW5hdGVzIGNhbiBiZSBmaXR0ZWQgYXQgb25jZSBieQogICAgICAgIHBhc3NpbmcgaW4gYSAyRC1hcnJheSB0aGF0IGNvbnRhaW5zIG9uZSBkYXRhc2V0IHBlciBjb2x1bW4uCiAgICBkZWcgOiBpbnQgb3IgMS1EIGFycmF5X2xpa2UKICAgICAgICBEZWdyZWUocykgb2YgdGhlIGZpdHRpbmcgcG9seW5vbWlhbHMuIElmIGBkZWdgIGlzIGEgc2luZ2xlIGludGVnZXIKICAgICAgICBhbGwgdGVybXMgdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUgYGRlZ2AndGggdGVybSBhcmUgaW5jbHVkZWQgaW4gdGhlCiAgICAgICAgZml0LiBGb3IgTnVtUHkgdmVyc2lvbnMgPj0gMS4xMS4wIGEgbGlzdCBvZiBpbnRlZ2VycyBzcGVjaWZ5aW5nIHRoZQogICAgICAgIGRlZ3JlZXMgb2YgdGhlIHRlcm1zIHRvIGluY2x1ZGUgbWF5IGJlIHVzZWQgaW5zdGVhZC4KICAgIHJjb25kIDogZmxvYXQsIG9wdGlvbmFsCiAgICAgICAgUmVsYXRpdmUgY29uZGl0aW9uIG51bWJlciBvZiB0aGUgZml0LiBTaW5ndWxhciB2YWx1ZXMgc21hbGxlciB0aGFuCiAgICAgICAgdGhpcyByZWxhdGl2ZSB0byB0aGUgbGFyZ2VzdCBzaW5ndWxhciB2YWx1ZSB3aWxsIGJlIGlnbm9yZWQuIFRoZQogICAgICAgIGRlZmF1bHQgdmFsdWUgaXMgbGVuKHgpKmVwcywgd2hlcmUgZXBzIGlzIHRoZSByZWxhdGl2ZSBwcmVjaXNpb24gb2YKICAgICAgICB0aGUgZmxvYXQgdHlwZSwgYWJvdXQgMmUtMTYgaW4gbW9zdCBjYXNlcy4KICAgIGZ1bGwgOiBib29sLCBvcHRpb25hbAogICAgICAgIFN3aXRjaCBkZXRlcm1pbmluZyBuYXR1cmUgb2YgcmV0dXJuIHZhbHVlLiBXaGVuIGl0IGlzIEZhbHNlICh0aGUKICAgICAgICBkZWZhdWx0KSBqdXN0IHRoZSBjb2VmZmljaWVudHMgYXJlIHJldHVybmVkLCB3aGVuIFRydWUgZGlhZ25vc3RpYwogICAgICAgIGluZm9ybWF0aW9uIGZyb20gdGhlIHNpbmd1bGFyIHZhbHVlIGRlY29tcG9zaXRpb24gaXMgYWxzbyByZXR1cm5lZC4KICAgIHcgOiBhcnJheV9saWtlLCBzaGFwZSAoYE1gLCksIG9wdGlvbmFsCiAgICAgICAgV2VpZ2h0cy4gSWYgbm90IE5vbmUsIHRoZSBjb250cmlidXRpb24gb2YgZWFjaCBwb2ludAogICAgICAgIGBgKHhbaV0seVtpXSlgYCB0byB0aGUgZml0IGlzIHdlaWdodGVkIGJ5IGB3W2ldYC4gSWRlYWxseSB0aGUKICAgICAgICB3ZWlnaHRzIGFyZSBjaG9zZW4gc28gdGhhdCB0aGUgZXJyb3JzIG9mIHRoZSBwcm9kdWN0cyBgYHdbaV0qeVtpXWBgCiAgICAgICAgYWxsIGhhdmUgdGhlIHNhbWUgdmFyaWFuY2UuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBOb25lLgoKICAgIFJldHVybnMKICAgIC0tLS0tLS0KICAgIGNvZWYgOiBuZGFycmF5LCBzaGFwZSAoTSwpIG9yIChNLCBLKQogICAgICAgIEhlcm1pdGUgY29lZmZpY2llbnRzIG9yZGVyZWQgZnJvbSBsb3cgdG8gaGlnaC4gSWYgYHlgIHdhcyAyLUQsCiAgICAgICAgdGhlIGNvZWZmaWNpZW50cyBmb3IgdGhlIGRhdGEgaW4gY29sdW1uIGsgIG9mIGB5YCBhcmUgaW4gY29sdW1uCiAgICAgICAgYGtgLgoKICAgIFtyZXNpZHVhbHMsIHJhbmssIHNpbmd1bGFyX3ZhbHVlcywgcmNvbmRdIDogbGlzdAogICAgICAgIFRoZXNlIHZhbHVlcyBhcmUgb25seSByZXR1cm5lZCBpZiBgZnVsbGAgPSBUcnVlCgogICAgICAgIHJlc2lkIC0tIHN1bSBvZiBzcXVhcmVkIHJlc2lkdWFscyBvZiB0aGUgbGVhc3Qgc3F1YXJlcyBmaXQKICAgICAgICByYW5rIC0tIHRoZSBudW1lcmljYWwgcmFuayBvZiB0aGUgc2NhbGVkIFZhbmRlcm1vbmRlIG1hdHJpeAogICAgICAgIHN2IC0tIHNpbmd1bGFyIHZhbHVlcyBvZiB0aGUgc2NhbGVkIFZhbmRlcm1vbmRlIG1hdHJpeAogICAgICAgIHJjb25kIC0tIHZhbHVlIG9mIGByY29uZGAuCgogICAgICAgIEZvciBtb3JlIGRldGFpbHMsIHNlZSBgbGluYWxnLmxzdHNxYC4KCiAgICBXYXJucwogICAgLS0tLS0KICAgIFJhbmtXYXJuaW5nCiAgICAgICAgVGhlIHJhbmsgb2YgdGhlIGNvZWZmaWNpZW50IG1hdHJpeCBpbiB0aGUgbGVhc3Qtc3F1YXJlcyBmaXQgaXMKICAgICAgICBkZWZpY2llbnQuIFRoZSB3YXJuaW5nIGlzIG9ubHkgcmFpc2VkIGlmIGBmdWxsYCA9IEZhbHNlLiAgVGhlCiAgICAgICAgd2FybmluZ3MgY2FuIGJlIHR1cm5lZCBvZmYgYnkKCiAgICAgICAgPj4+IGltcG9ydCB3YXJuaW5ncwogICAgICAgID4+PiB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIFJhbmtXYXJuaW5nKQoKICAgIFNlZSBBbHNvCiAgICAtLS0tLS0tLQogICAgY2hlYmZpdCwgbGVnZml0LCBsYWdmaXQsIHBvbHlmaXQsIGhlcm1lZml0CiAgICBoZXJtdmFsIDogRXZhbHVhdGVzIGEgSGVybWl0ZSBzZXJpZXMuCiAgICBoZXJtdmFuZGVyIDogVmFuZGVybW9uZGUgbWF0cml4IG9mIEhlcm1pdGUgc2VyaWVzLgogICAgaGVybXdlaWdodCA6IEhlcm1pdGUgd2VpZ2h0IGZ1bmN0aW9uCiAgICBsaW5hbGcubHN0c3EgOiBDb21wdXRlcyBhIGxlYXN0LXNxdWFyZXMgZml0IGZyb20gdGhlIG1hdHJpeC4KICAgIHNjaXB5LmludGVycG9sYXRlLlVuaXZhcmlhdGVTcGxpbmUgOiBDb21wdXRlcyBzcGxpbmUgZml0cy4KCiAgICBOb3RlcwogICAgLS0tLS0KICAgIFRoZSBzb2x1dGlvbiBpcyB0aGUgY29lZmZpY2llbnRzIG9mIHRoZSBIZXJtaXRlIHNlcmllcyBgcGAgdGhhdAogICAgbWluaW1pemVzIHRoZSBzdW0gb2YgdGhlIHdlaWdodGVkIHNxdWFyZWQgZXJyb3JzCgogICAgLi4gbWF0aDo6IEUgPSBcc3VtX2ogd19qXjIgKiB8eV9qIC0gcCh4X2opfF4yLAoKICAgIHdoZXJlIHRoZSA6bWF0aDpgd19qYCBhcmUgdGhlIHdlaWdodHMuIFRoaXMgcHJvYmxlbSBpcyBzb2x2ZWQgYnkKICAgIHNldHRpbmcgdXAgdGhlICh0eXBpY2FsbHkpIG92ZXJkZXRlcm1pbmVkIG1hdHJpeCBlcXVhdGlvbgoKICAgIC4uIG1hdGg6OiBWKHgpICogYyA9IHcgKiB5LAoKICAgIHdoZXJlIGBWYCBpcyB0aGUgd2VpZ2h0ZWQgcHNldWRvIFZhbmRlcm1vbmRlIG1hdHJpeCBvZiBgeGAsIGBjYCBhcmUgdGhlCiAgICBjb2VmZmljaWVudHMgdG8gYmUgc29sdmVkIGZvciwgYHdgIGFyZSB0aGUgd2VpZ2h0cywgYHlgIGFyZSB0aGUKICAgIG9ic2VydmVkIHZhbHVlcy4gIFRoaXMgZXF1YXRpb24gaXMgdGhlbiBzb2x2ZWQgdXNpbmcgdGhlIHNpbmd1bGFyIHZhbHVlCiAgICBkZWNvbXBvc2l0aW9uIG9mIGBWYC4KCiAgICBJZiBzb21lIG9mIHRoZSBzaW5ndWxhciB2YWx1ZXMgb2YgYFZgIGFyZSBzbyBzbWFsbCB0aGF0IHRoZXkgYXJlCiAgICBuZWdsZWN0ZWQsIHRoZW4gYSBgUmFua1dhcm5pbmdgIHdpbGwgYmUgaXNzdWVkLiBUaGlzIG1lYW5zIHRoYXQgdGhlCiAgICBjb2VmZmljaWVudCB2YWx1ZXMgbWF5IGJlIHBvb3JseSBkZXRlcm1pbmVkLiBVc2luZyBhIGxvd2VyIG9yZGVyIGZpdAogICAgd2lsbCB1c3VhbGx5IGdldCByaWQgb2YgdGhlIHdhcm5pbmcuICBUaGUgYHJjb25kYCBwYXJhbWV0ZXIgY2FuIGFsc28gYmUKICAgIHNldCB0byBhIHZhbHVlIHNtYWxsZXIgdGhhbiBpdHMgZGVmYXVsdCwgYnV0IHRoZSByZXN1bHRpbmcgZml0IG1heSBiZQogICAgc3B1cmlvdXMgYW5kIGhhdmUgbGFyZ2UgY29udHJpYnV0aW9ucyBmcm9tIHJvdW5kb2ZmIGVycm9yLgoKICAgIEZpdHMgdXNpbmcgSGVybWl0ZSBzZXJpZXMgYXJlIHByb2JhYmx5IG1vc3QgdXNlZnVsIHdoZW4gdGhlIGRhdGEgY2FuIGJlCiAgICBhcHByb3hpbWF0ZWQgYnkgYGBzcXJ0KHcoeCkpICogcCh4KWBgLCB3aGVyZSBgdyh4KWAgaXMgdGhlIEhlcm1pdGUKICAgIHdlaWdodC4gSW4gdGhhdCBjYXNlIHRoZSB3ZWlnaHQgYGBzcXJ0KHcoeFtpXSlgYCBzaG91bGQgYmUgdXNlZAogICAgdG9nZXRoZXIgd2l0aCBkYXRhIHZhbHVlcyBgYHlbaV0vc3FydCh3KHhbaV0pYGAuIFRoZSB3ZWlnaHQgZnVuY3Rpb24gaXMKICAgIGF2YWlsYWJsZSBhcyBgaGVybXdlaWdodGAuCgogICAgUmVmZXJlbmNlcwogICAgLS0tLS0tLS0tLQogICAgLi4gWzFdIFdpa2lwZWRpYSwgIkN1cnZlIGZpdHRpbmciLAogICAgICAgICAgIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3VydmVfZml0dGluZwoKICAgIEV4YW1wbGVzCiAgICAtLS0tLS0tLQogICAgPj4+IGZyb20gbnVtcHkucG9seW5vbWlhbC5oZXJtaXRlIGltcG9ydCBoZXJtZml0LCBoZXJtdmFsCiAgICA+Pj4geCA9IG5wLmxpbnNwYWNlKC0xMCwgMTApCiAgICA+Pj4gZXJyID0gbnAucmFuZG9tLnJhbmRuKGxlbih4KSkvMTAKICAgID4+PiB5ID0gaGVybXZhbCh4LCBbMSwgMiwgM10pICsgZXJyCiAgICA+Pj4gaGVybWZpdCh4LCB5LCAyKQogICAgYXJyYXkoWyAwLjk3OTAyNjM3LCAgMS45OTg0OTEzMSwgIDMuMDAwMDYgICBdKQoKICAgIGcAAAAAAAAAAHIGAAAA2gJpdXIBAAAAejBkZWcgbXVzdCBiZSBhbiBpbnQgb3Igbm9uLWVtcHR5IDEtRCBhcnJheSBvZiBpbnR6EWV4cGVjdGVkIGRlZyA+PSAwehhleHBlY3RlZCAxRCB2ZWN0b3IgZm9yIHh6H2V4cGVjdGVkIG5vbi1lbXB0eSB2ZWN0b3IgZm9yIHhyNQAAAHodZXhwZWN0ZWQgMUQgb3IgMkQgYXJyYXkgZm9yIHl6JGV4cGVjdGVkIHggYW5kIHkgdG8gaGF2ZSBzYW1lIGxlbmd0aHIoAAAATnoYZXhwZWN0ZWQgMUQgdmVjdG9yIGZvciB3eiRleHBlY3RlZCB4IGFuZCB3IHRvIGhhdmUgc2FtZSBsZW5ndGgpAXJOAAAAeiFUaGUgZml0IG1heSBiZSBwb29ybHkgY29uZGl0aW9uZWQpAdoKc3RhY2tsZXZlbCkfcj0AAABybgAAAHJhAAAAck4AAADaBGtpbmRySgAAANoJVHlwZUVycm9y2gNtaW5yWAAAAHIrAAAAchoAAAByRwAAANoBVFoFZmluZm/aA2Vwc9oKaXNzdWJjbGFzc9oEdHlwZVoPY29tcGxleGZsb2F0aW5n2gRzcXJ02gZzcXVhcmXaBHJlYWzaBGltYWfaA3N1bdoCbGFaBWxzdHNx2gV6ZXJvc3JjAAAA2gh3YXJuaW5nc9oEd2FybnIpAAAAWgtSYW5rV2FybmluZykScnAAAABycwAAAHItAAAAWgVyY29uZNoEZnVsbNoBd1oEbG1heNoFb3JkZXJaA3ZhbtoDbGhz2gNyaHNyQAAAAHI4AAAAWgZyZXNpZHNaBHJhbmvaAXPaAmNj2gNtc2dyMAAAAHIwAAAAcjEAAAByGwAAAFMFAABzagAAAAB8DgEOAQoDIAEIAQwBCAEKAQgBCgEIARQBCAEQAQgCCgEEAQgBDAIKAQgBCAEWAwYBBgEKAQ4BDAEIARIBCAMIAQgDCgEWAxIBJgIWAQwDHgEMAwwBDAEgAhQBCAEEAxABBAESAgYBEAJjAQAAAAAAAAAGAAAADAAAAEMAAABzMgEAAHQAoAF8AGcBoQFcAX0AdAJ8AIMBZAFrAHIidANkAoMBggF0AnwAgwFkAWsCckx0BKAFZAN8AGQEGQAUAHwAZAUZABsAZwFnAaEBUwB0AnwAgwFkBRgAfQF0BGoGfAF8AWYCfABqB2QGjQJ9AnQEoAhkB2QHdASgCWQIdASgCnwBZAUYAGQEZAmhAxQAoQEbAGYCoQF9A3QEagugDHwDoQFkCmQKZAmFAxkAfQN8AqANZAmhAWQFZAp8AWQFFwCFAxkAfQR8AqANZAmhAXwBZAp8AWQFFwCFAxkAfQV0BKAJZAt0BKAKZAV8AaECFAChAXwEZAw8AHwEfAVkDDwAfAJkCmQKhQJkCWYCBQAZAHwDfABkCmQJhQIZABQAZAh8AGQJGQAUABsAOAADADwAfAJTACkNYZICAABSZXR1cm4gdGhlIHNjYWxlZCBjb21wYW5pb24gbWF0cml4IG9mIGMuCgogICAgVGhlIGJhc2lzIHBvbHlub21pYWxzIGFyZSBzY2FsZWQgc28gdGhhdCB0aGUgY29tcGFuaW9uIG1hdHJpeCBpcwogICAgc3ltbWV0cmljIHdoZW4gYGNgIGlzIGFuIEhlcm1pdGUgYmFzaXMgcG9seW5vbWlhbC4gVGhpcyBwcm92aWRlcwogICAgYmV0dGVyIGVpZ2VudmFsdWUgZXN0aW1hdGVzIHRoYW4gdGhlIHVuc2NhbGVkIGNhc2UgYW5kIGZvciBiYXNpcwogICAgcG9seW5vbWlhbHMgdGhlIGVpZ2VudmFsdWVzIGFyZSBndWFyYW50ZWVkIHRvIGJlIHJlYWwgaWYKICAgIGBudW1weS5saW5hbGcuZWlndmFsc2hgIGlzIHVzZWQgdG8gb2J0YWluIHRoZW0uCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgYyA6IGFycmF5X2xpa2UKICAgICAgICAxLUQgYXJyYXkgb2YgSGVybWl0ZSBzZXJpZXMgY29lZmZpY2llbnRzIG9yZGVyZWQgZnJvbSBsb3cgdG8gaGlnaAogICAgICAgIGRlZ3JlZS4KCiAgICBSZXR1cm5zCiAgICAtLS0tLS0tCiAgICBtYXQgOiBuZGFycmF5CiAgICAgICAgU2NhbGVkIGNvbXBhbmlvbiBtYXRyaXggb2YgZGltZW5zaW9ucyAoZGVnLCBkZWcpLgoKICAgIE5vdGVzCiAgICAtLS0tLQoKICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuNy4wCgogICAgcjUAAAB6LlNlcmllcyBtdXN0IGhhdmUgbWF4aW11bSBkZWdyZWUgb2YgYXQgbGVhc3QgMS5nAAAAAAAA4L9yAQAAAHIGAAAAKQFyTgAAAGcAAAAAAADwP2cAAAAAAAAAQHIoAAAATmcAAAAAAADgPy4pDnIpAAAAcioAAAByKwAAAHJYAAAAcj0AAAByPgAAAHKPAAAAck4AAABaBmhzdGFja3KJAAAAWgZhcmFuZ2XaCG11bHRpcGx52gphY2N1bXVsYXRlcm8AAAApBnI4AAAAcjkAAADaA21hdHJAAAAA2gN0b3BaA2JvdHIwAAAAcjAAAAByMQAAAHIlAAAAHAYAAHMeAAAAABsOAQwBCAEMAR4CDAEUASoBFgEYARgBGgEIATABYwEAAAAAAAAAAwAAAAUAAABDAAAAc3AAAAB0AKABfABnAaEBXAF9AHQCfACDAWQBawFyKnQDagRnAHwAagVkAo0CUwB0AnwAgwFkA2sCclJ0A6AEZAR8AGQFGQAUAHwAZAEZABsAZwGhAVMAdAZ8AIMBfQF0B6AIfAGhAX0CfAKgCaEAAQB8AlMAKQZhfgUAAAogICAgQ29tcHV0ZSB0aGUgcm9vdHMgb2YgYSBIZXJtaXRlIHNlcmllcy4KCiAgICBSZXR1cm4gdGhlIHJvb3RzIChhLmsuYS4gInplcm9zIikgb2YgdGhlIHBvbHlub21pYWwKCiAgICAuLiBtYXRoOjogcCh4KSA9IFxzdW1faSBjW2ldICogSF9pKHgpLgoKICAgIFBhcmFtZXRlcnMKICAgIC0tLS0tLS0tLS0KICAgIGMgOiAxLUQgYXJyYXlfbGlrZQogICAgICAgIDEtRCBhcnJheSBvZiBjb2VmZmljaWVudHMuCgogICAgUmV0dXJucwogICAgLS0tLS0tLQogICAgb3V0IDogbmRhcnJheQogICAgICAgIEFycmF5IG9mIHRoZSByb290cyBvZiB0aGUgc2VyaWVzLiBJZiBhbGwgdGhlIHJvb3RzIGFyZSByZWFsLAogICAgICAgIHRoZW4gYG91dGAgaXMgYWxzbyByZWFsLCBvdGhlcndpc2UgaXQgaXMgY29tcGxleC4KCiAgICBTZWUgQWxzbwogICAgLS0tLS0tLS0KICAgIHBvbHlyb290cywgbGVncm9vdHMsIGxhZ3Jvb3RzLCBjaGVicm9vdHMsIGhlcm1lcm9vdHMKCiAgICBOb3RlcwogICAgLS0tLS0KICAgIFRoZSByb290IGVzdGltYXRlcyBhcmUgb2J0YWluZWQgYXMgdGhlIGVpZ2VudmFsdWVzIG9mIHRoZSBjb21wYW5pb24KICAgIG1hdHJpeCwgUm9vdHMgZmFyIGZyb20gdGhlIG9yaWdpbiBvZiB0aGUgY29tcGxleCBwbGFuZSBtYXkgaGF2ZSBsYXJnZQogICAgZXJyb3JzIGR1ZSB0byB0aGUgbnVtZXJpY2FsIGluc3RhYmlsaXR5IG9mIHRoZSBzZXJpZXMgZm9yIHN1Y2gKICAgIHZhbHVlcy4gUm9vdHMgd2l0aCBtdWx0aXBsaWNpdHkgZ3JlYXRlciB0aGFuIDEgd2lsbCBhbHNvIHNob3cgbGFyZ2VyCiAgICBlcnJvcnMgYXMgdGhlIHZhbHVlIG9mIHRoZSBzZXJpZXMgbmVhciBzdWNoIHBvaW50cyBpcyByZWxhdGl2ZWx5CiAgICBpbnNlbnNpdGl2ZSB0byBlcnJvcnMgaW4gdGhlIHJvb3RzLiBJc29sYXRlZCByb290cyBuZWFyIHRoZSBvcmlnaW4gY2FuCiAgICBiZSBpbXByb3ZlZCBieSBhIGZldyBpdGVyYXRpb25zIG9mIE5ld3RvbidzIG1ldGhvZC4KCiAgICBUaGUgSGVybWl0ZSBzZXJpZXMgYmFzaXMgcG9seW5vbWlhbHMgYXJlbid0IHBvd2VycyBvZiBgeGAgc28gdGhlCiAgICByZXN1bHRzIG9mIHRoaXMgZnVuY3Rpb24gbWF5IHNlZW0gdW5pbnR1aXRpdmUuCgogICAgRXhhbXBsZXMKICAgIC0tLS0tLS0tCiAgICA+Pj4gZnJvbSBudW1weS5wb2x5bm9taWFsLmhlcm1pdGUgaW1wb3J0IGhlcm1y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ZXJtaXRlIHF1YWRyYXR1cmUuCiAgICBUaGVzZSBzYW1wbGUgcG9pbnRzIGFuZCB3ZWlnaHRzIHdpbGwgY29ycmVjdGx5IGludGVncmF0ZSBwb2x5bm9taWFscyBvZgogICAgZGVncmVlIDptYXRoOmAyKmRlZyAtIDFgIG9yIGxlc3Mgb3ZlciB0aGUgaW50ZXJ2YWwgOm1hdGg6YFstXGluZiwgXGluZl1gCiAgICB3aXRoIHRoZSB3ZWlnaHQgZnVuY3Rpb24gOm1hdGg6YGYoeCkgPSBcZXhwKC14XjIpYC4KCiAgICBQYXJhbWV0ZXJzCiAgICAtLS0tLS0tLS0tCiAgICBkZWcgOiBpbnQKICAgICAgICBOdW1iZXIgb2Ygc2FtcGxlIHBvaW50cyBhbmQgd2VpZ2h0cy4gSXQgbXVzdCBiZSA+PSAxLgoKICAgIFJldHVybnMKICAgIC0tLS0tLS0KICAgIHggOiBuZGFycmF5CiAgICAgICAgMS1EIG5kYXJyYXkgY29udGFpbmluZyB0aGUgc2FtcGxlIHBvaW50cy4KICAgIHkgOiBuZGFycmF5CiAgICAgICAgMS1EIG5kYXJyYXkgY29udGFpbmluZyB0aGUgd2VpZ2h0cy4KCiAgICBOb3RlcwogICAgLS0tLS0KCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjcuMAoKICAgIFRoZSByZXN1bHRzIGhhdmUgb25seSBiZWVuIHRlc3RlZCB1cCB0byBkZWdyZWUgMTAwLCBoaWdoZXIgZGVncmVlcyBtYXkKICAgIGJlIHByb2JsZW1hdGljLiBUaGUgd2VpZ2h0cyBhcmUgZGV0ZXJtaW5lZCBieSB1c2luZyB0aGUgZmFjdCB0aGF0CgogICAgLi4gbWF0aDo6IHdfayA9IGMgLyAoSCdfbih4X2spICogSF97bi0xfSh4X2spKQoKICAgIHdoZXJlIDptYXRoOmBjYCBpcyBhIGNvbnN0YW50IGluZGVwZW5kZW50IG9mIDptYXRoOmBrYCBhbmQgOm1hdGg6YHhfa2AKICAgIGlzIHRoZSBrJ3RoIHJvb3Qgb2YgOm1hdGg6YEhfbmAsIGFuZCB0aGVuIHNjYWxpbmcgdGhlIHJlc3VsdHMgdG8gZ2V0CiAgICB0aGUgcmlnaHQgdmFs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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 10
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
chebyshev.cpython-37.pyc
60.57 KB
lrw-r--r--
2023-04-24 19:38:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
hermite.cpython-37.pyc
55.33 KB
lrw-r--r--
2023-04-24 19:38:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
hermite_e.cpython-37.pyc
55.36 KB
lrw-r--r--
2023-04-24 19:38:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
laguerre.cpython-37.pyc
53.73 KB
lrw-r--r--
2023-04-24 19:38:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
legendre.cpython-37.pyc
54.61 KB
lrw-r--r--
2023-04-24 19:38:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
polynomial.cpython-37.pyc
50.42 KB
lrw-r--r--
2023-04-24 19:38:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
polyutils.cpython-37.pyc
11.91 KB
lrw-r--r--
2023-04-24 19:38:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
setup.cpython-37.pyc
603 B
lrw-r--r--
2023-04-24 19:38:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
_polybase.cpython-37.pyc
30.24 KB
lrw-r--r--
2023-04-24 19:38:36
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-37.pyc
1.37 KB
lrw-r--r--
2023-04-24 19:38:36
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).