REDROOM
PHP 8.0.30
Path:
Logout
Edit File
Size: 55.36 KB
Close
/opt/alt/python37/lib64/python3.7/site-packages/numpy/polynomial/__pycache__/hermite_e.cpython-37.pyc
Text
Base64
Qg0NCgAAAADB2EZkTuIAAOMAAAAAAAAAAAAAAAAfAAAAQAAAAHPMAQAAZABaAGQBZAJsAW0CWgJtA1oDbQRaBAEAZAFkA2wFWgVkAWQDbAZaB2QBZANsCG0JWgoBAGQBZARsC20MWgwBAGQFZAZsDW0OWg8BAGQFZAdsEG0RWhEBAGQIZAlkCmQLZAxkDWQOZA9kEGQRZBJkE2QUZBVkFmQXZBhkGWQaZBtkHGQdZB5kH2QgZCFkImQjZCRkJWQmZx9aEmUPahNaFGQnZBeEAFoVZChkFoQAWhZlB6AXZClkBWcCoQFaGGUHoBdkAWcBoQFaGWUHoBdkBWcBoQFaGmUHoBdkAWQFZwKhAVobZCpkDIQAWhxkK2QYhABaHWQsZA2EAFoeZC1kDoQAWh9kLmQPhABaIGQvZBCEAFohZDBkEYQAWiJkR2QyZBKEAVojZEhkM2QUhAFaJGQFZwBkAWQFZAFmBWQ0ZBWEAVolZElkNmQThAFaJmQ3ZB6EAFonZDhkIIQAWihkOWQfhABaKWQ6ZCGEAFoqZDtkGYQAWitkPGQihABaLGQ9ZCOEAFotZEpkP2QahAFaLmRAZCSEAFovZEFkHIQAWjBkQmRDhABaMWREZCWEAFoyZEVkJoQAWjNHAGRGZB2EAGQdZRGDA1o0ZANTAClLYUEJAAAKT2JqZWN0cyBmb3IgZGVhbGluZyB3aXRoIEhlcm1pdGVfZSBzZXJpZXMuCgpUaGlzIG1vZHVsZSBwcm92aWRlcyBhIG51bWJlciBvZiBvYmplY3RzIChtb3N0bHkgZnVuY3Rpb25zKSB1c2VmdWwgZm9yCmRlYWxpbmcgd2l0aCBIZXJtaXRlX2Ugc2VyaWVzLCBpbmNsdWRpbmcgYSBgSGVybWl0ZUVgIGNsYXNzIHRoYXQKZW5jYXBzdWxhdGVzIHRoZSB1c3VhbCBhcml0aG1ldGljIG9wZXJhdGlvbnMuICAoR2VuZXJhbCBpbmZvcm1hdGlvbgpvbiBob3cgdGhpcyBtb2R1bGUgcmVwcmVzZW50cyBhbmQgd29ya3Mgd2l0aCBzdWNoIHBvbHlub21pYWxzIGlzIGluIHRoZQpkb2NzdHJpbmcgZm9yIGl0cyAicGFyZW50IiBzdWItcGFja2FnZSwgYG51bXB5LnBvbHlub21pYWxgKS4KCkNvbnN0YW50cwotLS0tLS0tLS0KLSBgaGVybWVkb21haW5gIC0tIEhlcm1pdGVfZSBzZXJpZXMgZGVmYXVsdCBkb21haW4sIFstMSwxXS4KLSBgaGVybWV6ZXJvYCAtLSBIZXJtaXRlX2Ugc2VyaWVzIHRoYXQgZXZhbHVhdGVzIGlkZW50aWNhbGx5IHRvIDAuCi0gYGhlcm1lb25lYCAtLSBIZXJtaXRlX2Ugc2VyaWVzIHRoYXQgZXZhbHVhdGVzIGlkZW50aWNhbGx5IHRvIDEuCi0gYGhlcm1leGAgLS0gSGVybWl0ZV9lIHNlcmllcyBmb3IgdGhlIGlkZW50aXR5IG1hcCwgYGBmKHgpID0geGBgLgoKQXJpdGhtZXRpYwotLS0tLS0tLS0tCi0gYGhlcm1lbXVseGAgLS0gbXVsdGlwbHkgYSBIZXJtaXRlX2Ugc2VyaWVzIGluIGBgUF9pKHgpYGAgYnkgYGB4YGAuCi0gYGhlcm1lYWRkYCAtLSBhZGQgdHdvIEhlcm1pdGVfZSBzZXJpZXMuCi0gYGhlcm1lc3ViYCAtLSBzdWJ0cmFjdCBvbmUgSGVybWl0ZV9lIHNlcmllcyBmcm9tIGFub3RoZXIuCi0gYGhlcm1lbXVsYCAtLSBtdWx0aXBseSB0d28gSGVybWl0ZV9lIHNlcmllcy4KLSBgaGVybWVkaXZgIC0tIGRpdmlkZSBvbmUgSGVybWl0ZV9lIHNlcmllcyBieSBhbm90aGVyLgotIGBoZXJtZXZhbGAgLS0gZXZhbHVhdGUgYSBIZXJtaXRlX2Ugc2VyaWVzIGF0IGdpdmVuIHBvaW50cy4KLSBgaGVybWV2YWwyZGAgLS0gZXZhbHVhdGUgYSAyRCBIZXJtaXRlX2Ugc2VyaWVzIGF0IGdpdmVuIHBvaW50cy4KLSBgaGVybWV2YWwzZGAgLS0gZXZhbHVhdGUgYSAzRCBIZXJtaXRlX2Ugc2VyaWVzIGF0IGdpdmVuIHBvaW50cy4KLSBgaGVybWVncmlkMmRgIC0tIGV2YWx1YXRlIGEgMkQgSGVybWl0ZV9lIHNlcmllcyBvbiBhIENhcnRlc2lhbiBwcm9kdWN0LgotIGBoZXJtZWdyaWQzZGAgLS0gZXZhbHVhdGUgYSAzRCBIZXJtaXRlX2Ugc2VyaWVzIG9uIGEgQ2FydGVzaWFuIHByb2R1Y3QuCgpDYWxjdWx1cwotLS0tLS0tLQotIGBoZXJtZWRlcmAgLS0gZGlmZmVyZW50aWF0ZSBhIEhlcm1pdGVfZSBzZXJpZXMuCi0gYGhlcm1laW50YCAtLSBpbnRlZ3JhdGUgYSBIZXJtaXRlX2Ugc2VyaWVzLgoKTWlzYyBGdW5jdGlvbnMKLS0tLS0tLS0tLS0tLS0KLSBgaGVybWVmcm9tcm9vdHNgIC0tIGNyZWF0ZSBhIEhlcm1pdGVfZSBzZXJpZXMgd2l0aCBzcGVjaWZpZWQgcm9vdHMuCi0gYGhlcm1lcm9vdHNgIC0tIGZpbmQgdGhlIHJvb3RzIG9mIGEgSGVybWl0ZV9lIHNlcmllcy4KLSBgaGVybWV2YW5kZXJgIC0tIFZhbmRlcm1vbmRlLWxpa2UgbWF0cml4IGZvciBIZXJtaXRlX2UgcG9seW5vbWlhbHMuCi0gYGhlcm1ldmFuZGVyMmRgIC0tIFZhbmRlcm1vbmRlLWxpa2UgbWF0cml4IGZvciAyRCBwb3dlciBzZXJpZXMuCi0gYGhlcm1ldmFuZGVyM2RgIC0tIFZhbmRlcm1vbmRlLWxpa2UgbWF0cml4IGZvciAzRCBwb3dlciBzZXJpZXMuCi0gYGhlcm1lZ2F1c3NgIC0tIEdhdXNzLUhlcm1pdGVfZSBxdWFkcmF0dXJlLCBwb2ludHMgYW5kIHdlaWdodHMuCi0gYGhlcm1ld2VpZ2h0YCAtLSBIZXJtaXRlX2Ugd2VpZ2h0IGZ1bmN0aW9uLgotIGBoZXJtZWNvbXBhbmlvbmAgLS0gc3ltbWV0cml6ZWQgY29tcGFuaW9uIG1hdHJpeCBpbiBIZXJtaXRlX2UgZm9ybS4KLSBgaGVybWVmaXRgIC0tIGxlYXN0LXNxdWFyZXMgZml0IHJldHVybmluZyBhIEhlcm1pdGVfZSBzZXJpZXMuCi0gYGhlcm1ldHJpbWAgLS0gdHJpbSBsZWFkaW5nIGNvZWZmaWNpZW50cyBmcm9tIGEgSGVybWl0ZV9lIHNlcmllcy4KLSBgaGVybWVsaW5lYCAtLSBIZXJtaXRlX2Ugc2VyaWVzIG9mIGdpdmVuIHN0cmFpZ2h0IGxpbmUuCi0gYGhlcm1lMnBvbHlgIC0tIGNvbnZlcnQgYSBIZXJtaXRlX2Ugc2VyaWVzIHRvIGEgcG9seW5vbWlhbC4KLSBgcG9seTJoZXJtZWAgLS0gY29udmVydCBhIHBvbHlub21pYWwgdG8gYSBIZXJtaXRlX2Ugc2VyaWVzLgoKQ2xhc3NlcwotLS0tLS0tCi0gYEhlcm1pdGVFYCAtLSBBIEhlcm1pdGVfZSBzZXJpZXMgY2xhc3MuCgpTZWUgYWxzbwotLS0tLS0tLQpgbnVtcHkucG9seW5vbWlhbGAKCukAAAAAKQPaCGRpdmlzaW9u2g9hYnNvbHV0ZV9pbXBvcnTaDnByaW50X2Z1bmN0aW9uTikB2hRub3JtYWxpemVfYXhpc19pbmRleOkBAAAAKQHaCXBvbHl1dGlscykB2gtBQkNQb2x5QmFzZdoJaGVybWV6ZXJv2ghoZXJtZW9uZdoGaGVybWV42gtoZXJtZWRvbWFpbtoJaGVybWVsaW5l2ghoZXJtZWFkZNoIaGVybWVzdWLaCWhlcm1lbXVseNoIaGVybWVtdWzaCGhlcm1lZGl22ghoZXJtZXBvd9oIaGVybWV2YWzaCGhlcm1lZGVy2ghoZXJtZWludNoKaGVybWUycG9sedoKcG9seTJoZXJtZdoOaGVybWVmcm9tcm9vdHPaC2hlcm1ldmFuZGVy2ghoZXJtZWZpdNoJaGVybWV0cmlt2gpoZXJtZXJvb3Rz2ghIZXJtaXRlRdoKaGVybWV2YWwyZNoKaGVybWV2YWwzZNoLaGVybWVncmlkMmTaC2hlcm1lZ3JpZDNk2g1oZXJtZXZhbmRlcjJk2g1oZXJtZXZhbmRlcjNk2g5oZXJtZWNvbXBhbmlvbtoKaGVybWVnYXVzc9oLaGVybWV3ZWlnaHRjAQAAAAAAAAAEAAAABQAAAEMAAABzSgAAAHQAoAF8AGcBoQFcAX0AdAJ8AIMBZAEYAH0BZAJ9AngmdAN8AWQDZAODA0QAXRZ9A3QEdAV8AoMBfAB8AxkAgwJ9AnEsVwB8AlMAKQRhigMAAAogICAgcG9seTJoZXJtZShwb2wpCgogICAgQ29udmVydCBhIHBvbHlub21pYWwgdG8gYSBIZXJtaXRlIHNlcmllcy4KCiAgICBDb252ZXJ0IGFuIGFycmF5IHJlcHJlc2VudGluZyB0aGUgY29lZmZpY2llbnRzIG9mIGEgcG9seW5vbWlhbCAocmVsYXRpdmUKICAgIHRvIHRoZSAic3RhbmRhcmQiIGJhc2lzKSBvcmRlcmVkIGZyb20gbG93ZXN0IGRlZ3JlZSB0byBoaWdoZXN0LCB0byBhbgogICAgYXJyYXkgb2YgdGhlIGNvZWZmaWNpZW50cyBvZiB0aGUgZXF1aXZhbGVudCBIZXJtaXRlIHNlcmllcywgb3JkZXJlZAogICAgZnJvbSBsb3dlc3QgdG8gaGlnaGVzdCBkZWdyZWUuCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgcG9sIDogYXJyYXlfbGlrZQogICAgICAgIDEtRCBhcnJheSBjb250YWluaW5nIHRoZSBwb2x5bm9taWFsIGNvZWZmaWNpZW50cwoKICAgIFJldHVybnMKICAgIC0tLS0tLS0KICAgIGMgOiBuZGFycmF5CiAgICAgICAgMS1EIGFycmF5IGNvbnRhaW5pbmcgdGhlIGNvZWZmaWNpZW50cyBvZiB0aGUgZXF1aXZhbGVudCBIZXJtaXRlCiAgICAgICAgc2VyaWVzLgoKICAgIFNlZSBBbHNvCiAgICAtLS0tLS0tLQogICAgaGVybWUycG9seQoKICAgIE5vdGVzCiAgICAtLS0tLQogICAgVGhlIGVhc3kgd2F5IHRvIGRvIGNvbnZlcnNpb25zIGJldHdlZW4gcG9seW5vbWlhbCBiYXNpcyBzZXRzCiAgICBpcyB0byB1c2UgdGhlIGNvbnZlcnQgbWV0aG9kIG9mIGEgY2xhc3MgaW5zdGFuY2UuCgogICAgRXhhbXBsZXMKICAgIC0tLS0tLS0tCiAgICA+Pj4gZnJvbSBudW1weS5wb2x5bm9taWFsLmhlcm1pdGVfZSBpbXBvcnQgcG9seTJoZXJtZQogICAgPj4+IHBvbHkyaGVybWUobnAuYXJhbmdlKDQpKQogICAgYXJyYXkoWyAgMi4sICAxMC4sICAgMi4sICAgMy5dKQoKICAgIHIGAAAAcgEAAADp/////ykG2gJwddoJYXNfc2VyaWVz2gNsZW7aBXJhbmdlcg4AAAByEAAAACkEWgNwb2zaA2RlZ9oDcmVz2gFpqQByMAAAAPpNL29wdC9hbHQvcHl0aG9uMzcvbGliNjQvcHl0aG9uMy43L3NpdGUtcGFja2FnZXMvbnVtcHkvcG9s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c3QgYXBwZWFyIGluIGByb290c2AgbiB0aW1lcy4KICAgIEZvciBpbnN0YW5jZSwgaWYgMiBpcyBhIHJvb3Qgb2YgbXVsdGlwbGljaXR5IHRocmVlIGFuZCAzIGlzIGEgcm9vdCBvZgogICAgbXVsdGlwbGljaXR5IDIsIHRoZW4gYHJvb3RzYCBsb29rcyBzb21ldGhpbmcgbGlrZSBbMiwgMiwgMiwgMywgM10uIFRoZQogICAgcm9vdHMgY2FuIGFwcGVhciBpbiBhbnkgb3JkZXIuCgogICAgSWYgdGhlIHJldHVybmVkIGNvZWZmaWNpZW50cyBhcmUgYGNgLCB0aGVuCgogICAgLi4gbWF0aDo6IHAoeCkgPSBjXzAgKyBjXzEgKiBIZV8xKHgpICsgLi4uICsgIGNfbiAqIEhlX24oeCkKCiAgICBUaGUgY29lZmZpY2llbnQgb2YgdGhlIGxhc3QgdGVybSBpcyBub3QgZ2VuZXJhbGx5IDEgZm9yIG1vbmljCiAgICBwb2x5bm9taWFscyBpbiBIZXJtaXRlRSBmb3JtLgoKICAgIFBhcmFtZXRlcnMKICAgIC0tLS0tLS0tLS0KICAgIHJvb3RzIDogYXJyYXlfbGlrZQogICAgICAgIFNlcXVlbmNlIGNvbnRhaW5pbmcgdGhlIHJvb3RzLgoKICAgIFJldHVybnMKICAgIC0tLS0tLS0KICAgIG91dCA6IG5kYXJyYXkKICAgICAgICAxLUQgYXJyYXkgb2YgY29lZmZpY2llbnRzLiAgSWYgYWxsIHJvb3RzIGFyZSByZWFsIHRoZW4gYG91dGAgaXMgYQogICAgICAgIHJlYWwgYXJyYXksIGlmIHNvbWUgb2YgdGhlIHJvb3RzIGFyZSBjb21wbGV4LCB0aGVuIGBvdXRgIGlzIGNvbXBsZXgKICAgICAgICBldmVuIGlmIGFsbCB0aGUgY29lZmZpY2llbnRzIGluIHRoZSByZXN1bHQgYXJlIHJlYWwgKHNlZSBFeGFtcGxlcwogICAgICAgIGJlbG93KS4KCiAgICBTZWUgQWxzbwogICAgLS0tLS0tLS0KICAgIHBvbHlmcm9tcm9vdHMsIGxlZ2Zyb21yb290cywgbGFnZnJvbXJvb3RzLCBoZXJtZnJvbXJvb3RzLAogICAgY2hlYmZyb21yb290cy4KCiAgICBFeGFtcGxlcwogICAgLS0tLS0tLS0KICAgID4+PiBmcm9tIG51bXB5LnBvbHlub21pYWwuaGVybWl0ZV9lIGltcG9ydCBoZXJtZWZyb21yb290cywgaGVybWV2YWwKICAgID4+PiBjb2VmID0gaGVybWVmcm9tcm9vdHMoKC0xLCAwLCAxKSkKICAgID4+PiBoZXJtZXZhbCgoLTEsIDAsIDEpLCBjb2VmKQogICAgYXJyYXkoWyAwLiwgIDAuLCAgMC5dKQogICAgPj4+IGNvZWYgPSBoZXJtZWZyb21yb290cygoLTFqLCAxaikpCiAgICA+Pj4gaGVybWV2YWwoKC0xaiwgMWopLCBjb2VmKQogICAgYXJyYXkoWyAwLiswLmosICAwLiswLmpdKQoKICAgIHIBAAAAcgYAAABGKQFaBHRyaW1jAQAAAAAAAAACAAAABQAAAFMAAABzGAAAAGcAfABdEH0BdAB8AQsAZACDApECcQRTACkBcgYAAAApAXINAAAAKQLaAi4w2gFycjAAAAByMAAAAHIxAAAA+go8bGlzdGNvbXA+JgEAAHMCAAAABgB6Imhlcm1lZnJvbXJvb3RzLjxsb2NhbHM+LjxsaXN0Y29tcD5yNQAAAGMBAAAAAAAAAAIAAAAHAAAAEwAAAHMiAAAAZwB8AF0afQF0AIgBfAEZAIgBfAGIABcAGQCDApECcQRTAHIwAAAAKQFyEQAAACkCckEAAAByLwAAACkC2gFt2gFwcjAAAAByMQAAAHJDAAAAKgEAAHMCAAAABgByKAAAAE4pCXIrAAAAcj0AAADaBG9uZXNyKQAAAHIqAAAA2gRzb3J02gZkaXZtb2RyLAAAAHIRAAAAKQTaBXJvb3RzcjkAAAByQgAAAHI8AAAAcjAAAAApAnJEAAAAckUAAAByMQAAAHIZAAAA7wAAAHMcAAAAADIMAQoCEgEIAQ4BCAEKAQ4BGAEEARYBBAEIAWMCAAAAAAAAAAMAAAAEAAAAQwAAAHNiAAAAdACgAXwAfAFnAqEBXAJ9AH0BdAJ8AIMBdAJ8AYMBawRyPnwAZAF8AWoDhQIFABkAfAE3AAMAPAB8AH0Cbhp8AWQBfABqA4UCBQAZAHwANwADADwAfAF9AnQAoAR8AqEBUwApAmHmAwAACiAgICBBZGQgb25lIEhlcm1pdGUgc2VyaWVzIHRvIGFub3RoZXIuCgogICAgUmV0dXJucyB0aGUgc3VtIG9mIHR3byBIZXJtaXRlIHNlcmllcyBgYzFgICsgYGMyYC4gIFRoZSBhcmd1bWVudHMKICAgIGFyZSBzZXF1ZW5jZXMgb2YgY29lZmZpY2llbnRzIG9yZGVyZWQgZnJvbSBsb3dlc3Qgb3JkZXIgdGVybSB0bwogICAgaGlnaGVzdCwgaS5lLiwgWzEsMiwzXSByZXByZXNlbnRzIHRoZSBzZXJpZXMgYGBQXzAgKyAyKlBfMSArIDMqUF8yYGAuCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgYzEsIGMyIDogYXJyYXlfbGlrZQogICAgICAgIDEtRCBhcnJheXMgb2YgSGVybWl0ZSBzZXJpZXMgY29lZmZpY2llbnRzIG9yZGVyZWQgZnJvbSBsb3cgdG8KICAgICAgICBoaWdoLgoKICAgIFJldHVybnMKICAgIC0tLS0tLS0KICAgIG91dCA6IG5kYXJyYXkKICAgICAgICBBcnJheSByZXByZXNlbnRpbmcgdGhlIEhlcm1pdGUgc2VyaWVzIG9mIHRoZWlyIHN1bS4KCiAgICBTZWUgQWxzbwogICAgLS0tLS0tLS0KICAgIGhlcm1lc3ViLCBoZXJtZW11bCwgaGVybWVkaXYsIGhlcm1lcG93CgogICAgTm90ZXMKICAgIC0tLS0tCiAgICBVbmxpa2UgbXVsdGlwbGljYXRpb24sIGRpdmlzaW9uLCBldGMuLCB0aGUgc3VtIG9mIHR3byBIZXJtaXRlIHNlcmllcwogICAgaXMgYSBIZXJtaXRlIHNlcmllcyAod2l0aG91dCBoYXZpbmcgdG8gInJlcHJvamVjdCIgdGhlIHJlc3VsdCBvbnRvCiAgICB0aGUgYmFzaXMgc2V0KSBzbyBhZGRpdGlvbiwganVzdCBsaWtlIHRoYXQgb2YgInN0YW5kYXJkIiBwb2x5bm9taWFscywKICAgIGlzIHNpbXBseSAiY29tcG9uZW50LXdpc2UuIgoKICAgIEV4YW1wbGVzCiAgICAtLS0tLS0tLQogICAgPj4+IGZyb20gbnVtcHkucG9seW5vbWlhbC5oZXJtaXRlX2UgaW1wb3J0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ACkHYVAEAAAKICAgIE11bHRpcGx5IG9uZSBIZXJtaXRlIHNlcmllcyBieSBhbm90aGVyLgoKICAgIFJldHVybnMgdGhlIHByb2R1Y3Qgb2YgdHdvIEhlcm1pdGUgc2VyaWVzIGBjMWAgKiBgYzJgLiAgVGhlIGFyZ3VtZW50cwogICAgYXJlIHNlcXVlbmNlcyBvZiBjb2VmZmljaWVudHMsIGZyb20gbG93ZXN0IG9yZGVyICJ0ZXJtIiB0byBoaWdoZXN0LAogICAgZS5nLiwgWzEsMiwzXSByZXByZXNlbnRzIHRoZSBzZXJpZXMgYGBQXzAgKyAyKlBfMSArIDMqUF8yYGAuCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgYzEsIGMyIDogYXJyYXlfbGlrZQogICAgICAgIDEtRCBhcnJheXMgb2YgSGVybWl0ZSBzZXJpZXMgY29lZmZpY2llbnRzIG9yZGVyZWQgZnJvbSBsb3cgdG8KICAgICAgICBoaWdoLgoKICAgIFJldHVybnMKICAgIC0tLS0tLS0KICAgIG91dCA6IG5kYXJyYXkKICAgICAgICBPZiBIZXJtaXRlIHNlcmllcyBjb2VmZmljaWVudHMgcmVwcmVzZW50aW5nIHRoZWlyIHByb2R1Y3QuCgogICAgU2VlIEFsc28KICAgIC0tLS0tLS0tCiAgICBoZXJtZWFkZCwgaGVybWVzdWIsIGhlcm1lZGl2LCBoZXJtZXBvdwoKICAgIE5vdGVzCiAgICAtLS0tLQogICAgSW4gZ2VuZXJhbCwgdGhlIChwb2x5bm9taWFsKSBwcm9kdWN0IG9mIHR3byBDLXNlcmllcyByZXN1bHRzIGluIHRlcm1zCiAgICB0aGF0IGFyZSBub3QgaW4gdGhlIEhlcm1pdGUgcG9seW5vbWlhbCBiYXNpcyBzZXQuICBUaHVzLCB0byBleHByZXNzCiAgICB0aGUgcHJvZHVjdCBhcyBhIEhlcm1pdGUgc2VyaWVzLCBpdCBpcyBuZWNlc3NhcnkgdG8gInJlcHJvamVjdCIgdGhlCiAgICBwcm9kdWN0IG9udG8gc2FpZCBiYXNpcyBzZXQsIHdoaWNoIG1heSBwcm9kdWNlICJ1bmludHVpdGl2ZSIgKGJ1dAogICAgY29ycmVjdCkgcmVzdWx0czsgc2VlIEV4YW1wbGVzIHNlY3Rpb24gYmVsb3cuCgogICAgRXhhbXBsZXMKICAgIC0tLS0tLS0tCiAgICA+Pj4gZnJvbSBudW1weS5wb2x5bm9taWFsLmhlcm1pdGVfZSBpbXBvcnQgaGVybWVtdWwKICAgID4+PiBoZXJtZW11bChbMSwgMiwgM10sIFswLCAxLCAyXSkKICAgIGFycmF5KFsgMTQuLCAgMTUuLCAgMjguLCAgIDcuLCAgIDYuXSkKCiAgICByBgAAAHIBAAAAcjUAAAByNgAAAHIoAAAA6QMAAAApB3IpAAAAcioAAAByKwAAAHIsAAAAcg8AAAByDgAAAHIQAAAAKQhyOwAAAHJMAAAAcjgAAABaAnhzcjoAAADaAm5kci8AAAByPAAAAHIwAAAAcjAAAAByMQAAAHIRAAAAxAEAAHMqAAAAACcSAhABBAEGAgQBBAIMAQwBBgEMAQwBDgIIAQwBDAEYAQQBCAEcARIBYwIAAAAAAAAACQAAAAYAAABDAAAAcwYBAAB0AKABfAB8AWcCoQFcAn0AfQF8AWQBGQBkAmsCciR0AoMAggF0A3wAgwF9AnQDfAGDAX0DfAJ8A2sAclB8AGQDZASFAhkAZAIUAHwAZgJTAHwDZARrAnJ0fAB8AWQBGQAbAHwAZANkBIUCGQBkAhQAZgJTAHQEagV8AnwDGABkBBcAfABqBmQFjQJ9BHwAfQV4YnQHfAJ8AxgAZAFkAYMDRABdTn0GdAhkAmcBfAYUAGQEZwEXAHwBgwJ9B3wFZAEZAHwHZAEZABsAfQh8BWQDZAGFAhkAfAh8B2QDZAGFAhkAFAAYAH0FfAh8BHwGPABxolcAfAR0AKAJfAWhAWYCUwBkA1MAKQZhNgUAAAogICAgRGl2aWRlIG9uZSBIZXJtaXRlIHNlcmllcyBieSBhbm90aGVyLgoKICAgIFJldHVybnMgdGhlIHF1b3RpZW50LXdpdGgtcmVtYWluZGVyIG9mIHR3byBIZXJtaXRlIHNlcmllcwogICAgYGMxYCAvIGBjMmAuICBUaGUgYXJndW1lbnRzIGFyZSBzZXF1ZW5jZXMgb2YgY29lZmZpY2llbnRzIGZyb20gbG93ZXN0CiAgICBvcmRlciAidGVybSIgdG8gaGlnaGVzdCwgZS5nLiwgWzEsMiwzXSByZXByZXNlbnRzIHRoZSBzZXJpZXMKICAgIGBgUF8wICsgMipQXzEgKyAzKlBfMmBgLgoKICAgIFBhcmFtZXRlcnMKICAgIC0tLS0tLS0tLS0KICAgIGMxLCBjMiA6IGFycmF5X2xpa2UKICAgICAgICAxLUQgYXJyYXlzIG9mIEhlcm1pdGUgc2VyaWVzIGNvZWZmaWNpZW50cyBvcmRlcmVkIGZyb20gbG93IHRvCiAgICAgICAgaGlnaC4KCiAgICBSZXR1cm5zCiAgICAtLS0tLS0tCiAgICBbcXVvLCByZW1dIDogbmRhcnJheXMKICAgICAgICBPZiBIZXJtaXRlIHNlcmllcyBjb2VmZmljaWVudHMgcmVwcmVzZW50aW5nIHRoZSBxdW90aWVudCBhbmQKICAgICAgICByZW1haW5kZXIuCgogICAgU2VlIEFsc28KICAgIC0tLS0tLS0tCiAgICBoZXJtZWFkZCwgaGVybWVzdWIsIGhlcm1lbXVsLCBoZXJtZXBvdwoKICAgIE5vdGVzCiAgICAtLS0tLQogICAgSW4gZ2VuZXJhbCwgdGhlIChwb2x5bm9taWFsKSBkaXZpc2lvbiBvZiBvbmUgSGVybWl0ZSBzZXJpZXMgYnkgYW5vdGhlcgogICAgcmVzdWx0cyBpbiBxdW90aWVudCBhbmQgcmVtYWluZGVyIHRlcm1zIHRoYXQgYXJlIG5vdCBpbiB0aGUgSGVybWl0ZQogICAgcG9seW5vbWlhbCBiYXNpcyBzZXQuICBUaHVzLCB0byBleHByZXNzIHRoZXNlIHJlc3VsdHMgYXMgYSBIZXJtaXRlCiAgICBzZXJpZXMsIGl0IGlzIG5lY2Vzc2FyeSB0byAicmVwcm9qZWN0IiB0aGUgcmVzdWx0cyBvbnRvIHRoZSBIZXJtaXRlCiAgICBiYXNpcyBzZXQsIHdoaWNoIG1heSBwcm9kdWNlICJ1bmludHVpdGl2ZSIgKGJ1dCBjb3JyZWN0KSByZXN1bHRzOyBzZWUKICAgIEV4YW1wbGVzIHNlY3Rpb24gYmVsb3cuCgogICAgRXhhbXBsZXMKICAgIC0tLS0tLS0tCiAgICA+Pj4gZnJvbSBudW1weS5wb2x5bm9taWFsLmhlcm1pdGVfZSBpbXBvcnQgaGVybWVkaXYKICAgID4+PiBoZXJtZWRpdihbIDE0LiwgIDE1LiwgIDI4LiwgICA3LiwgICA2Ll0sIFswLCAxLCAyXSkKICAgIChhcnJheShbIDEuLCAgMi4sICAzLl0pLCBhcnJheShbIDAuXSkpCiAgICA+Pj4gaGVybWVkaXYoWyAxNS4sICAxNy4sICAyOC4sICAgNy4sICAgNi5dLCBbMCwgMSwgMl0pCiAgICAoYXJyYXkoWyAxLiwgIDIuLCAgMy5dKSwgYXJyYXkoWyAxLiwgIDIuXSkpCgogICAgcigAAAByAQAAAE5yBgAAACkBck4AAAApCnIpAAAAcioAAADaEVplcm9EaXZpc2lvbkVycm9ycisAAAByPQAAAHJPAAAAck4AAAByLAAAAHIRAAAAcksAAAApCXI7AAAAckwAAABaA2xjMVoDbGMyWgNxdW/aA3JlbXIvAAAAckUAAADaAXFyMAAAAHIwAAAAcjEAAAByEgAAAAYCAABzIgAAAAAsEgEMAQYCCAEIAQgBFAEIARwCGAEEARYBFgEQARwBDAHpEAAAAGMDAAAAAAAAAAYAAAAEAAAAQwAAAHOeAAAAdACgAXwAZwGhAVwBfQB0AnwBgwF9A3wDfAFrA3MmfANkAWsAcjB0A2QCgwGCAW5qfAJkA2sJckp8A3wCawRySnQDZASDAYIBblB8A2QBawJyZHQEagVkBWcBfABqBmQGjQJTAHwDZAVrAnJwfABTAHwAfQR4IHQHZAd8A2QFFwCDAkQAXQ59BXQIfAR8AIMCfQRxhFcAfARTAGQDUwApCGF+AwAAUmFpc2UgYSBIZXJtaXRlIHNlcmllcyB0byBhIHBvd2VyLgoKICAgIFJldHVybnMgdGhlIEhlcm1pdGUgc2VyaWVzIGBjYCByYWlzZWQgdG8gdGhlIHBvd2VyIGBwb3dgLiBUaGUKICAgIGFyZ3VtZW50IGBjYCBpcyBhIHNlcXVlbmNlIG9mIGNvZWZmaWNpZW50cyBvcmRlcmVkIGZyb20gbG93IHRvIGhpZ2guCiAgICBpLmUuLCBbMSwyLDNdIGlzIHRoZSBzZXJpZXMgIGBgUF8wICsgMipQXzEgKyAzKlBfMi5gYAoKICAgIFBhcmFtZXRlcnMKICAgIC0tLS0tLS0tLS0KICAgIGMgOiBhcnJheV9saWtlCiAgICAgICAgMS1EIGFycmF5IG9mIEhlcm1pdGUgc2VyaWVzIGNvZWZmaWNpZW50cyBvcmRlcmVkIGZyb20gbG93IHRvCiAgICAgICAgaGlnaC4KICAgIHBvdyA6IGludGVnZXIKICAgICAgICBQb3dlciB0byB3aGljaCB0aGUgc2VyaWVzIHdpbGwgYmUgcmFpc2VkCiAgICBtYXhwb3dlciA6IGludGVnZXIsIG9wdGlvbmFsCiAgICAgICAgTWF4aW11bSBwb3dlciBhbGxvd2VkLiBUaGlzIGlzIG1haW5seSB0byBsaW1pdCBncm93dGggb2YgdGhlIHNlcmllcwogICAgICAgIHRvIHVubWFuYWdlYWJsZSBzaXplLiBEZWZhdWx0IGlzIDE2CgogICAgUmV0dXJucwogICAgLS0tLS0tLQogICAgY29lZiA6IG5kYXJyYXkKICAgICAgICBIZXJtaXRlIHNlcmllcyBvZiBwb3dlci4KCiAgICBTZWUgQWxzbwogICAgLS0tLS0tLS0KICAgIGhlcm1lYWRkLCBoZXJtZXN1YiwgaGVybWVtdWwsIGhlcm1lZGl2CgogICAgRXhhbXBsZXMKICAgIC0tLS0tLS0tCiAgICA+Pj4gZnJvbSBudW1weS5wb2x5bm9taWFsLmhlcm1pdGVfZSBpbXBvcnQgaGVybWVwb3cKICAgID4+PiBoZXJtZXBvdyhbMSwgMiwgM10sIDIpCiAgICBhcnJheShbIDIzLiwgIDI4LiwgIDQ2LiwgIDEyLiwgICA5Ll0pCgogICAgcgEAAAB6JVBvd2VyIG11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlci5OehJQb3dlciBpcyB0b28gbGFyZ2VyBgAAACkBck4AAAByNQAAACkJcikAAAByKgAAANoDaW502gpWYWx1ZUVycm9ycj0AAAByPgAAAHJOAAAAciwAAAByEQAAACkGcjgAAADaA3Bvd1oIbWF4cG93ZXLaBXBvd2VyclAAAAByLwAAAHIwAAAAcjAAAAByMQAAAHITAAAARwIAAHMcAAAAACMOAQgBEAEKARABCgEIARIBCAEEBAQBFAEOAWMEAAAAAAAAAAoAAAAGAAAAQwAAAHM6AQAAdABqAXwAZAFkAWQCjQN9AHwAagJqA2QDawZyKHwAoAR0AGoFoQF9AGQEZAWEAHwBfANnAkQAgwFcAn0EfQV8BHwBawNyTnQGZAaDAYIBfARkB2sAcl50BmQIgwGCAXwFfANrA3JudAZkCYMBggF0B3wFfABqCIMCfQV8BGQHawJyhnwAUwB0AKAJfAB8BaECfQB0CnwAgwF9BnwEfAZrBXKyfABkCmQBhQIZAGQHFABTAHhwdAt8BIMBRABdZH0HfAZkARgAfQZ8AHwCOQB9AHQAagx8BmYBfABqDWQBZAqFAhkAFwB8AGoCZAuNAn0IeCp0C3wGZAdkDIMDRABdGn0JfAl8AHwJGQAUAHwIfAlkARgAPACQAHH+VwB8CH0AcbxXAHQAoAl8AGQHfAVkARcAoQN9AHwAUwApDWFIBwAACiAgICBEaWZmZXJlbnRpYXRlIGEgSGVybWl0ZV9lIHNlcmllcy4KCiAgICBSZXR1cm5zIHRoZSBzZXJpZXMgY29lZmZpY2llbnRzIGBjYCBkaWZmZXJlbnRpYXRlZCBgbWAgdGltZXMgYWxvbmcKICAgIGBheGlzYC4gIEF0IGVhY2ggaXRlcmF0aW9uIHRoZSByZXN1bHQgaXMgbXVsdGlwbGllZCBieSBgc2NsYCAodGhlCiAgICBzY2FsaW5nIGZhY3RvciBpcyBmb3IgdXNlIGluIGEgbGluZWFyIGNoYW5nZSBvZiB2YXJpYWJsZSkuIFRoZSBhcmd1bWVudAogICAgYGNgIGlzIGFuIGFycmF5IG9mIGNvZWZmaWNpZW50cyBmcm9tIGxvdyB0byBoaWdoIGRlZ3JlZSBhbG9uZyBlYWNoCiAgICBheGlzLCBlLmcuLCBbMSwyLDNdIHJlcHJlc2VudHMgdGhlIHNlcmllcyBgYDEqSGVfMCArIDIqSGVfMSArIDMqSGVfMmBgCiAgICB3aGlsZSBbWzEsMl0sWzEsMl1dIHJlcHJlc2VudHMgYGAxKkhlXzAoeCkqSGVfMCh5KSArIDEqSGVfMSh4KSpIZV8wKHkpCiAgICArIDIqSGVfMCh4KSpIZV8xKHkpICsgMipIZV8xKHgpKkhlXzEoeSlgYCBpZiBheGlzPTAgaXMgYGB4YGAgYW5kIGF4aXM9MQogICAgaXMgYGB5YGAuCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgYyA6IGFycmF5X2xpa2UKICAgICAgICBBcnJheSBvZiBIZXJtaXRlX2Ugc2VyaWVzIGNvZWZmaWNpZW50cy4gSWYgYGNgIGlzIG11bHRpZGltZW5zaW9uYWwKICAgICAgICB0aGUgZGlmZmVyZW50IGF4aXMgY29ycmVzcG9uZCB0byBkaWZmZXJlbnQgdmFyaWFibGVzIHdpdGggdGhlCiAgICAgICAgZGVncmVlIGluIGVhY2ggYXhpcyBnaXZlbiBieSB0aGUgY29ycmVzcG9uZGluZyBpbmRleC4KICAgIG0gOiBpbnQsIG9wdGlvbmFsCiAgICAgICAgTnVtYmVyIG9mIGRlcml2YXRpdmVzIHRha2VuLCBtdXN0IGJlIG5vbi1uZWdhdGl2ZS4gKERlZmF1bHQ6IDEpCiAgICBzY2wgOiBzY2FsYXIsIG9wdGlvbmFsCiAgICAgICAgRWFjaCBkaWZmZXJlbnRpYXRpb24gaXMgbXVsdGlwbGllZCBieSBgc2NsYC4gIFRoZSBlbmQgcmVzdWx0IGlzCiAgICAgICAgbXVsdGlwbGljYXRpb24gYnkgYGBzY2wqKm1gYC4gIFRoaXMgaXMgZm9yIHVzZSBpbiBhIGxpbmVhciBjaGFuZ2Ugb2YKICAgICAgICB2YXJpYWJsZS4gKERlZmF1bHQ6IDEpCiAgICBheGlzIDogaW50LCBvcHRpb25hbAogICAgICAgIEF4aXMgb3ZlciB3aGljaCB0aGUgZGVyaXZhdGl2ZSBpcyB0YWtlbi4gKERlZmF1bHQ6IDApLgoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjcuMAoKICAgIFJldHVybnMKICAgIC0tLS0tLS0KICAgIGRlciA6IG5kYXJyYXkKICAgICAgICBIZXJtaXRlIHNlcmllcyBvZiB0aGUgZGVyaXZhdGl2ZS4KCiAgICBTZWUgQWxzbwogICAgLS0tLS0tLS0KICAgIGhlcm1laW50CgogICAgTm90ZXMKICAgIC0tLS0tCiAgICBJbiBnZW5lcmFsLCB0aGUgcmVzdWx0IG9mIGRpZmZlcmVudGlhdGluZyBhIEhlcm1pdGUgc2VyaWVzIGRvZXMgbm90CiAgICByZXNlbWJsZSB0aGUgc2FtZSBvcGVyYXRpb24gb24gYSBwb3dlciBzZXJpZXMuIFRodXMgdGhlIHJlc3VsdCBvZiB0aGlzCiAgICBmdW5jdGlvbiBtYXkgYmUgInVuaW50dWl0aXZlLCIgYWxiZWl0IGNvcnJlY3Q7IHNlZSBFeGFtcGxlcyBzZWN0aW9uCiAgICBiZWxvdy4KCiAgICBFeGFtcGxlcwogICAgLS0tLS0tLS0KICAgID4+PiBmcm9tIG51bXB5LnBvbHlub21pYWwuaGVybWl0ZV9lIGltcG9ydCBoZXJtZWRlcgogICAgPj4+IGhlcm1lZGVyKFsgMS4sICAxLiwgIDEuLCAgMS5dKQogICAgYXJyYXkoWyAxLiwgIDIuLCAgMy5dKQogICAgPj4+IGhlcm1lZGVyKFstMC4yNSwgIDEuLCAgMS4vMi4sICAxLi8zLiwgIDEuLzQgXSwgbT0yKQogICAgYXJyYXkoWyAxLiwgIDIuLCAgMy5dKQoKICAgIHIGAAAAKQLaBW5kbWlu2gRjb3B5eg0/YkJoSGlJbExxUXBQYwEAAAAAAAAAAgAAAAQAAABTAAAAcxQAAABnAHwAXQx9AXQAfAGDAZECcQRTAHIwAAAAKQFyVwAAACkCckEAAADaAXRyMAAAAHIwAAAAcjEAAAByQwAAALcCAABzAgAAAAYAehxoZXJtZWRlci48bG9jYWxzPi48bGlzdGNvbXA+eidUaGUgb3JkZXIgb2YgZGVyaXZhdGlvbiBtdXN0IGJlIGludGVnZXJyAQAAAHosVGhlIG9yZGVyIG9mIGRlcml2YXRpb24gbXVzdCBiZSBub24tbmVnYXRpdmV6GFRoZSBheGlzIG11c3QgYmUgaW50ZWdlck4pAXJOAAAAcigAAAApDnI9AAAAcj4AAAByTgAAANoEY2hhctoGYXN0eXBl2gZkb3VibGVyWAAAAHIFAAAA2gRuZGlt2ghyb2xsYXhpc3IrAAAAciwAAAByTwAAANoFc2hhcGUpCnI4AAAAckQAAAByQAAAANoEYXhpc9oDY2502gVpYXhpc3I5AAAAci8AAABaA2RlctoBanIwAAAAcjAAAAByMQAAAHIVAAAAfQIAAHM0AAAAADcQAQwBDAEWAggBCAEIAQgBCAEIAQwCCAEEAgwBCAEIARACDgEIAQgBIAESARoBCAESAWMGAAAAAAAAAAwAAAAIAAAAQwAAAHPMAQAAdABqAXwAZAFkAWQCjQN9AHwAagJqA2QDawZyKHwAoAR0AGoFoQF9AHQAoAZ8AqEBczh8AmcBfQJkBGQFhAB8AXwFZwJEAIMBXAJ9Bn0HfAZ8AWsDcl50B2QGgwGCAXwGZAdrAHJudAdkCIMBggF0CHwCgwF8BmsEcoJ0B2QJgwGCAXwHfAVrA3KSdAdkCoMBggF0CXwHfABqCoMCfQd8BmQHawJyqnwAUwB0AKALfAB8B6ECfQB0DHwCgwFkB2cBfAZ0CHwCgwEYABQAFwB9AnjkdA18BoMBRABd2H0IdAh8AIMBfQl8AHwEOQB9AHwJZAFrApABciJ0AKAOfABkBxkAZAdrAqEBkAFyInwAZAcFABkAfAJ8CBkANwADADwAcdp0AGoPfAlkARcAZgF8AGoQZAFkC4UCGQAXAHwAagJkDI0CfQp8AGQHGQBkBxQAfApkBzwAfABkBxkAfApkATwAeCx0DWQBfAmDAkQAXR59C3wAfAsZAHwLZAEXABsAfAp8C2QBFwA8AJABcW5XAHwKZAcFABkAfAJ8CBkAdBF8A3wKgwIYADcAAwA8AHwKfQBx2lcAdACgC3wAZAd8B2QBFwChA30AfABTACkNYXINAAAKICAgIEludGVncmF0ZSBhIEhlcm1pdGVfZSBzZXJpZXMuCgogICAgUmV0dXJucyB0aGUgSGVybWl0ZV9lIHNlcmllcyBjb2VmZmljaWVudHMgYGNgIGludGVncmF0ZWQgYG1gIHRpbWVzIGZyb20KICAgIGBsYm5kYCBhbG9uZyBgYXhpc2AuIEF0IGVhY2ggaXRlcmF0aW9uIHRoZSByZXN1bHRpbmcgc2VyaWVzIGlzCiAgICAqKm11bHRpcGxpZWQqKiBieSBgc2NsYCBhbmQgYW4gaW50ZWdyYXRpb24gY29uc3RhbnQsIGBrYCwgaXMgYWRkZWQuCiAgICBUaGUgc2NhbGluZyBmYWN0b3IgaXMgZm9yIHVzZSBpbiBhIGxpbmVhciBjaGFuZ2Ugb2YgdmFyaWFibGUuICAoIkJ1eWVyCiAgICBiZXdhcmUiOiBub3RlIHRoYXQsIGRlcGVuZGluZyBvbiB3aGF0IG9uZSBpcyBkb2luZywgb25lIG1heSB3YW50IGBzY2xgCiAgICB0byBiZSB0aGUgcmVjaXByb2NhbCBvZiB3aGF0IG9uZSBtaWdodCBleHBlY3Q7IGZvciBtb3JlIGluZm9ybWF0aW9uLAogICAgc2VlIHRoZSBOb3RlcyBzZWN0aW9uIGJlbG93LikgIFRoZSBhcmd1bWVudCBgY2AgaXMgYW4gYXJyYXkgb2YKICAgIGNvZWZmaWNpZW50cyBmcm9tIGxvdyB0byBoaWdoIGRlZ3JlZSBhbG9uZyBlYWNoIGF4aXMsIGUuZy4sIFsxLDIsM10KICAgIHJlcHJlc2VudHMgdGhlIHNlcmllcyBgYEhfMCArIDIqSF8xICsgMypIXzJgYCB3aGlsZSBbWzEsMl0sWzEsMl1dCiAgICByZXByZXNlbnRzIGBgMSpIXzAoeCkqSF8wKHkpICsgMSpIXzEoeCkqSF8wKHkpICsgMipIXzAoeCkqSF8xKHkpICsKICAgIDIqSF8xKHgpKkhfMSh5KWBgIGlmIGF4aXM9MCBpcyBgYHhgYCBhbmQgYXhpcz0xIGlzIGBgeWBgLgoKICAgIFBhcmFtZXRlcnMKICAgIC0tLS0tLS0tLS0KICAgIGMgOiBhcnJheV9saWtlCiAgICAgICAgQXJyYXkgb2YgSGVybWl0ZV9lIHNlcmllcyBjb2VmZmljaWVudHMuIElmIGMgaXMgbXVsdGlkaW1lbnNpb25hbAogICAgICAgIHRoZSBkaWZmZXJlbnQgYXhpcyBjb3JyZXNwb25kIHRvIGRpZmZlcmVudCB2YXJpYWJsZXMgd2l0aCB0aGUKICAgICAgICBkZWdyZWUgaW4gZWFjaCBheGlzIGdpdmVuIGJ5IHRoZSBjb3JyZXNwb25kaW5nIGluZGV4LgogICAgbSA6IGludCwgb3B0aW9uYWwKICAgICAgICBPcmRlciBvZiBpbnRlZ3JhdGlvbiwgbXVzdCBiZSBwb3NpdGl2ZS4gKERlZmF1bHQ6IDEpCiAgICBrIDoge1tdLCBsaXN0LCBzY2FsYXJ9LCBvcHRpb25hbAogICAgICAgIEludGVncmF0aW9uIGNvbnN0YW50KHMpLiAgVGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBpbnRlZ3JhbCBhdAogICAgICAgIGBgbGJuZGBgIGlzIHRoZSBmaXJzdCB2YWx1ZSBpbiB0aGUgbGlzdCwgdGhlIHZhbHVlIG9mIHRoZSBzZWNvbmQKICAgICAgICBpbnRlZ3JhbCBhdCBgYGxibmRgYCBpcyB0aGUgc2Vjb25kIHZhbHVlLCBldGMuICBJZiBgYGsgPT0gW11gYCAodGhlCiAgICAgICAgZGVmYXVsdCksIGFsbCBjb25zdGFudHMgYXJlIHNldCB0byB6ZXJvLiAgSWYgYGBtID09IDFgYCwgYSBzaW5nbGUKICAgICAgICBzY2FsYXIgY2FuIGJlIGdpdmVuIGluc3RlYWQgb2YgYSBsaXN0LgogICAgbGJuZCA6IHNjYWxhciwgb3B0aW9uYWwKICAgICAgICBUaGUgbG93ZXIgYm91bmQgb2YgdGhlIGludGVncmFsLiAoRGVmYXVsdDogMCkKICAgIHNjbCA6IHNjYWxhciwgb3B0aW9uYWwKICAgICAgICBGb2xsb3dpbmcgZWFjaCBpbnRlZ3JhdGlvbiB0aGUgcmVzdWx0IGlzICptdWx0aXBsaWVkKiBieSBgc2NsYAogICAgICAgIGJlZm9yZSB0aGUgaW50ZWdyYXRpb24gY29uc3RhbnQgaXMgYWRkZWQuIChEZWZhdWx0OiAxKQogICAgYXhpcyA6IGludCwgb3B0aW9uYWwKICAgICAgICBBeGlzIG92ZXIgd2hpY2ggdGhlIGludGVncmFsIGlzIHRha2VuLiAoRGVmYXVsdDogMCkuCgogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuNy4wCgogICAgUmV0dXJucwogICAgLS0tLS0tLQogICAgUyA6IG5kYXJyYXkKICAgICAgICBIZXJtaXRlX2Ugc2VyaWVzIGNvZWZmaWNpZW50cyBvZiB0aGUgaW50ZWdyYWwuCgogICAgUmFpc2VzCiAgICAtLS0tLS0KICAgIFZhbHVlRXJyb3IKICAgICAgICBJZiBgYG0gPCAwYGAsIGBgbGVuKGspID4gbWBgLCBgYG5wLmlzc2NhbGFyKGxibmQpID09IEZhbHNlYGAsIG9yCiAgICAgICAgYGBucC5pc3NjYWxhcihzY2wpID09IEZhbHNlYGAuCgogICAgU2VlIEFsc28KICAgIC0tLS0tLS0tCiAgICBoZXJtZWRlcgoKICAgIE5vdGVzCiAgICAtLS0tLQogICAgTm90ZSB0aGF0IHRoZSByZXN1bHQgb2YgZWFjaCBpbnRlZ3JhdGlvbiBpcyAqbXVsdGlwbGllZCogYnkgYHNjbGAuCiAgICBXaHkgaXMgdGhpcyBpbXBvcnRhbnQgdG8gbm90ZT8gIFNheSBvbmUgaXMgbWFraW5nIGEgbGluZWFyIGNoYW5nZSBvZgogICAgdmFyaWFibGUgOm1hdGg6YHUgPSBheCArIGJgIGluIGFuIGludGVncmFsIHJlbGF0aXZlIHRvIGB4YC4gIFRoZW4KICAgIDptYXRoOmBkeCA9IGR1L2FgLCBzbyBvbmUgd2lsbCBuZWVkIHRvIHNldCBgc2NsYCBlcXVhbCB0bwogICAgOm1hdGg6YDEvYWAgLSBwZXJoYXBzIG5vdCB3aGF0IG9uZSB3b3VsZCBoYXZlIGZpcnN0IHRob3VnaHQuCgogICAgQWxzbyBub3RlIHRoYXQsIGluIGdlbmVyYWwsIHRoZSByZXN1bHQgb2YgaW50ZWdyYXRpbmcgYSBDLXNlcmllcyBuZWVkcwogICAgdG8gYmUgInJlcHJvamVjdGVkIiBvbnRvIHRoZSBDLXNlcmllcyBiYXNpcyBzZXQuICBUaHVzLCB0eXBpY2FsbHksCiAgICB0aGUgcmVzdWx0IG9mIHRoaXMgZnVuY3Rpb24gaXMgInVuaW50dWl0aXZlLCIgYWxiZWl0IGNvcnJlY3Q7IHNlZQogICAgRXhhbXBsZXMgc2VjdGlvbiBiZWxvdy4KCiAgICBFeGFtcGxlcwogICAgLS0tLS0tLS0KICAgID4+PiBmcm9tIG51bXB5LnBvbHlub21pYWwuaGVybWl0ZV9lIGltcG9ydCBoZXJtZWludAogICAgPj4+IGhlcm1laW50KFsxLCAyLCAzXSkgIyBpbnRlZ3JhdGUgb25jZSwgdmFsdWUgMCBhdCAwLgogICAgYXJyYXkoWyAxLiwgIDEuLCAgMS4sICAxLl0pCiAgICA+Pj4gaGVybWVpbnQoWzEsIDIsIDNdLCBtPTIpICMgaW50ZWdyYXRlIHR3aWNlLCB2YWx1ZSAmIGRlcml2IDAgYXQgMAogICAgYXJyYXkoWy0wLjI1ICAgICAgLCAgMS4gICAgICAgICwgIDAuNSAgICAgICAsICAwLjMzMzMzMzMzLCAgMC4yNSAgICAgIF0pCiAgICA+Pj4gaGVybWVpbnQoWzEsIDIsIDNdLCBrPTEp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cmAuIElmIGB0ZW5zb3JgIGlzIHRydWUgdGhlIHNoYXBlIHdpbGwgYmUgYy5zaGFwZVsxOl0gKwogICAgeC5zaGFwZS4gSWYgYHRlbnNvcmAgaXMgZmFsc2UgdGhlIHNoYXBlIHdpbGwgYmUgYy5zaGFwZVsxOl0uIE5vdGUgdGhhdAogICAgc2NhbGFycyBoYXZlIHNoYXBlICgsKS4KCiAgICBUcmFpbGluZyB6ZXJvcyBpbiB0aGUgY29lZmZpY2llbnRzIHdpbGwgYmUgdXNlZCBpbiB0aGUgZXZhbHVhdGlvbiwgc28KICAgIHRoZXkgc2hvdWxkIGJlIGF2b2lkZWQgaWYgZWZmaWNpZW5jeSBpcyBhIGNvbmNlcm4uCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgeCA6IGFycmF5X2xpa2UsIGNvbXBhdGlibGUgb2JqZWN0CiAgICAgICAgSWYgYHhgIGlzIGEgbGlzdCBvciB0dXBsZSwgaXQgaXMgY29udmVydGVkIHRvIGFuIG5kYXJyYXksIG90aGVyd2lzZQogICAgICAgIGl0IGlzIGxlZnQgdW5jaGFuZ2VkIGFuZCB0cmVhdGVkIGFzIGEgc2NhbGFyLiBJbiBlaXRoZXIgY2FzZSwgYHhgCiAgICAgICAgb3IgaXRzIGVsZW1lbnRzIG11c3Qgc3VwcG9ydCBhZGRpdGlvbiBhbmQgbXVsdGlwbGljYXRpb24gd2l0aAogICAgICAgIHdpdGggdGhlbXNlbHZlcyBhbmQgd2l0aCB0aGUgZWxlbWVudHMgb2YgYGNgLgogICAgYyA6IGFycmF5X2xpa2UKICAgICAgICBBcnJheSBvZiBjb2VmZmljaWVudHMgb3JkZXJlZCBzbyB0aGF0IHRoZSBjb2VmZmljaWVudHMgZm9yIHRlcm1zIG9mCiAgICAgICAgZGVncmVlIG4gYXJlIGNvbnRhaW5lZCBpbiBjW25dLiBJZiBgY2AgaXMgbXVsdGlkaW1lbnNpb25hbCB0aGUKICAgICAgICByZW1haW5pbmcgaW5kaWNlcyBlbnVtZXJhdGUgbXVsdGlwbGUgcG9seW5vbWlhbHMuIEluIHRoZSB0d28KICAgICAgICBkaW1lbnNpb25hbCBjYXNlIHRoZSBjb2VmZmljaWVudHMgbWF5IGJlIHRob3VnaHQgb2YgYXMgc3RvcmVkIGluCiAgICAgICAgdGhlIGNvbHVtbnMgb2YgYGNgLgogICAgdGVuc29yIDogYm9vbGVhbiwgb3B0aW9uYWwKICAgICAgICBJZiBUcnVlLCB0aGUgc2hhcGUgb2YgdGhlIGNvZWZmaWNpZW50IGFycmF5IGlzIGV4dGVuZGVkIHdpdGggb25lcwogICAgICAgIG9uIHRoZSByaWdodCwgb25lIGZvciBlYWNoIGRpbWVuc2lvbiBvZiBgeGAuIFNjYWxhcnMgaGF2ZSBkaW1lbnNpb24gMAogICAgICAgIGZvciB0aGlzIGFjdGlvbi4gVGhlIHJlc3VsdCBpcyB0aGF0IGV2ZXJ5IGNvbHVtbiBvZiBjb2VmZmljaWVudHMgaW4KICAgICAgICBgY2AgaXMgZXZhbHVhdGVkIGZvciBldmVyeSBlbGVtZW50IG9mIGB4YC4gSWYgRmFsc2UsIGB4YCBpcyBicm9hZGNhc3QKICAgICAgICBvdmVyIHRoZSBjb2x1bW5zIG9mIGBjYCBmb3IgdGhlIGV2YWx1YXRpb24uICBUaGlzIGtleXdvcmQgaXMgdXNlZnVsCiAgICAgICAgd2hlbiBgY2AgaXMgbXVsdGlkaW1lbnNpb25hbC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgVHJ1ZS4KCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMS43LjAKCiAgICBSZXR1cm5zCiAgICAtLS0tLS0tCiAgICB2YWx1ZXMgOiBuZGFycmF5LCBhbGdlYnJhX2xpa2UKICAgICAgICBUaGUgc2hhcGUgb2YgdGhlIHJldHVybiB2YWx1ZSBpcyBkZXNjcmliZWQgYWJvdmUuCgogICAgU2VlIEFsc28KICAgIC0tLS0tLS0tCiAgICBoZXJtZXZhbDJkLCBoZXJtZWdyaWQyZCwgaGVybWV2YWwzZCwgaGVybWVncmlkM2QKCiAgICBOb3RlcwogICAgLS0tLS0KICAgIFRoZSBldmFsdWF0aW9uIHVzZXMgQ2xlbnNoYXcgcmVjdXJzaW9uLCBha2Egc3ludGhldGljIGRpdmlzaW9uLgoKICAgIEV4YW1wbGVzCiAgICAtLS0tLS0tLQogICAgPj4+IGZyb20gbnVtcHkucG9seW5vbWlhbC5oZXJtaXRlX2UgaW1wb3J0IGhlcm1ldmFsCiAgICA+Pj4gY29lZiA9IFsxLDIsM10KICAgID4+PiBoZXJtZXZhbCgxLCBjb2VmKQogICAgMy4wCiAgICA+Pj4gaGVybWV2YWwoW1sxLDJdLFszLDRdXSwgY29lZikKICAgIGFycmF5KFtbICAzLiwgIDE0Ll0sCiAgICAgICAgICAgWyAzMS4sICA1NC5dXSkKCiAgICByBgAAAHIBAAAAKQJyWwAAAHJcAAAAeg0/YkJoSGlJbExxUXBQKQFyBgAAAHI1AAAAcjYAAAByKAAAAHJRAAAAKRByPQAAAHI+AAAAck4AAAByXgAAAHJfAAAAcmAAAADaCmlzaW5zdGFuY2XaBXR1cGxlcmkAAADaB2FzYXJyYXlaB25kYXJyYXnaB3Jlc2hhcGVyYwAAAHJhAAAAcisAAAByLAAAACkI2gF4cjgAAADaBnRlbnNvcnI6AAAAcjsAAAByUgAAAHIvAAAAcjwAAAByMAAAAHIwAAAAcjEAAAByFAAAAE4DAABzLAAAAABFEAEMAQwBDgEKARABFgIMAQgBBgEMAQgBCgIIAQgBCAEYAQQBCAEWARABYwMAAAAAAAAAAwAAAAYAAABDAAAAc0wAAAB5GnQAagF8AHwBZgJkAWQCjQJcAn0AfQFXAG4UAQABAAEAdAJkA4MBggFZAG4CWAB0A3wAfAKDAn0CdAN8AXwCZARkBY0DfQJ8AlMAKQZhSQYAAAogICAgRXZhbHVhdGUgYSAyLUQgSGVybWl0ZUUgc2VyaWVzIGF0IHBvaW50cyAoeCwgeSkuCgogICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB2YWx1ZXM6CgogICAgLi4gbWF0aDo6IHAoeCx5KSA9IFxzdW1fe2ksan0gY197aSxqfSAqIEhlX2koeCkgKiBIZV9qKHkpCgogICAgVGhlIHBhcmFtZXRlcnMgYHhgIGFuZCBgeWAgYXJlIGNvbnZlcnRlZCB0byBhcnJheXMgb25seSBpZiB0aGV5IGFyZQogICAgdHVwbGVzIG9yIGEgbGlzdHMsIG90aGVyd2lzZSB0aGV5IGFyZSB0cmVhdGVkIGFzIGEgc2NhbGFycyBhbmQgdGhleQogICAgbXVzdCBoYXZlIHRoZSBzYW1lIHNoYXBlIGFmdGVyIGNvbnZlcnNpb24uIEluIGVpdGhlciBjYXNlLCBlaXRoZXIgYHhgCiAgICBhbmQgYHlgIG9yIHRoZWlyIGVsZW1lbnRzIG11c3Qgc3VwcG9ydCBtdWx0aXBsaWNhdGlvbiBhbmQgYWRkaXRpb24gYm90aAogICAgd2l0aCB0aGVtc2VsdmVzIGFuZCB3aXRoIHRoZSBlbGVtZW50cyBvZiBgY2AuCgogICAgSWYgYGNgIGlzIGEgMS1EIGFycmF5IGEgb25lIGlzIGltcGxpY2l0bHkgYXBwZW5kZWQgdG8gaXRzIHNoYXBlIHRvIG1ha2UKICAgIGl0IDItRC4gVGhlIHNoYXBlIG9mIHRoZSByZXN1bHQgd2lsbCBiZSBjLnNoYXBlWzI6XSArIHguc2hhcGUuCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgeCwgeSA6IGFycmF5X2xpa2UsIGNvbXBhdGlibGUgb2JqZWN0cwogICAgICAgIFRoZSB0d28gZGltZW5zaW9uYWwgc2VyaWVzIGlzIGV2YWx1YXRlZCBhdCB0aGUgcG9pbnRzIGAoeCwgeSlgLAogICAgICAgIHdoZXJlIGB4YCBhbmQgYHlgIG11c3QgaGF2ZSB0aGUgc2FtZSBzaGFwZS4gSWYgYHhgIG9yIGB5YCBpcyBhIGxpc3QKICAgICAgICBvciB0dXBsZSwgaXQgaXMgZmlyc3QgY29udmVydGVkIHRvIGFuIG5kYXJyYXksIG90aGVyd2lzZSBpdCBpcyBsZWZ0CiAgICAgICAgdW5jaGFuZ2VkIGFuZCBpZiBpdCBpc24ndCBhbiBuZGFycmF5IGl0IGlzIHRyZWF0ZWQgYXMgYSBzY2FsYXIuCiAgICBjIDogYXJyYXlfbGlrZQogICAgICAgIEFycmF5IG9mIGNvZWZmaWNpZW50cyBvcmRlcmVkIHNvIHRoYXQgdGhlIGNvZWZmaWNpZW50IG9mIHRoZSB0ZXJtCiAgICAgICAgb2YgbXVsdGktZGVncmVlIGksaiBpcyBjb250YWluZWQgaW4gYGBjW2ksal1gYC4gSWYgYGNgIGhhcwogICAgICAgIGRpbWVuc2lvbiBncmVhdGVyIHRoYW4gdHdvIHRoZSByZW1haW5pbmcgaW5kaWNlcyBlbnVtZXJhdGUgbXVsdGlwbGUKICAgICAgICBzZXRzIG9mIGNvZWZmaWNpZW50cy4KCiAgICBSZXR1cm5zCiAgICAtLS0tLS0tCiAgICB2YWx1ZXMgOiBuZGFycmF5LCBjb21wYXRpYmxlIG9iamVjdAogICAgICAgIFRoZSB2YWx1ZXMgb2YgdGhlIHR3byBkaW1lbnNpb25hbCBwb2x5bm9taWFsIGF0IHBvaW50cyBmb3JtZWQgd2l0aAogICAgICAgIHBhaXJzIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzIGZyb20gYHhgIGFuZCBgeWAuCgogICAgU2VlIEFsc28KICAgIC0tLS0tLS0tCiAgICBoZXJtZXZhbCwgaGVybWVncmlkMmQsIGhlcm1ldmFsM2QsIGhlcm1lZ3JpZDNkCgogICAgTm90ZXMKICAgIC0tLS0tCgogICAgLi4gdmVyc2lvbmFkZGVkOjogMS43LjAKCiAgICByAQAAACkBclwAAAB6FXgsIHkgYXJlIGluY29tcGF0aWJsZUYpAXJxAAAAKQRyPQAAAHI+AAAAclgAAAByFAAAACkDcnAAAADaAXlyOAAAAHIwAAAAcjAAAAByMQAAAHIfAAAArQMAAHMOAAAAAC4CARoBBgEOAgoBDgFjAwAAAAAAAAADAAAAAwAAAEMAAABzGAAAAHQAfAB8AoMCfQJ0AHwBfAKDAn0CfAJTACkBYdcGAAAKICAgIEV2YWx1YXRlIGEgMi1EIEhlcm1pdGVFIHNlcmllcyBvbiB0aGUgQ2FydGVzaWFuIHByb2R1Y3Qgb2YgeCBhbmQgeS4KCiAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHZhbHVlczoKCiAgICAuLiBtYXRoOjogcChhLGIpID0gXHN1bV97aSxqfSBjX3tpLGp9ICogSF9pKGEpICogSF9qKGIpCgogICAgd2hlcmUgdGhlIHBvaW50cyBgKGEsIGIpYCBjb25zaXN0IG9mIGFsbCBwYWlycyBmb3JtZWQgYnkgdGFraW5nCiAgICBgYWAgZnJvbSBgeGAgYW5kIGBiYCBmcm9tIGB5YC4gVGhlIHJlc3VsdGluZyBwb2ludHMgZm9ybSBhIGdyaWQgd2l0aAogICAgYHhgIGluIHRoZSBmaXJzdCBkaW1lbnNpb24gYW5kIGB5YCBpbiB0aGUgc2Vjb25kLgoKICAgIFRoZSBwYXJhbWV0ZXJzIGB4YCBhbmQgYHlgIGFyZSBjb252ZXJ0ZWQgdG8gYXJyYXlzIG9ubHkgaWYgdGhleSBhcmUKICAgIHR1cGxlcyBvciBhIGxpc3RzLCBvdGhlcndpc2UgdGhleSBhcmUgdHJlYXRlZCBhcyBhIHNjYWxhcnMuIEluIGVpdGhlcgogICAgY2FzZSwgZWl0aGVyIGB4YCBhbmQgYHlgIG9yIHRoZWlyIGVsZW1lbnRzIG11c3Qgc3VwcG9ydCBtdWx0aXBsaWNhdGlvbgogICAgYW5kIGFkZGl0aW9uIGJvdGggd2l0aCB0aGVtc2VsdmVzIGFuZCB3aXRoIHRoZSBlbGVtZW50cyBvZiBgY2AuCgogICAgSWYgYGNgIGhhcyBmZXdlciB0aGFuIHR3byBkaW1lbnNpb25zLCBvbmVzIGFyZSBpbXBsaWNpdGx5IGFwcGVuZGVkIHRvCiAgICBpdHMgc2hhcGUgdG8gbWFrZSBpdCAyLUQuIFRoZSBzaGFwZSBvZiB0aGUgcmVzdWx0IHdpbGwgYmUgYy5zaGFwZVsyOl0gKwogICAgeC5zaGFwZS4KCiAgICBQYXJhbWV0ZXJzCiAgICAtLS0tLS0tLS0tCiAgICB4LCB5IDogYXJyYXlfbGlrZSwgY29tcGF0aWJsZSBvYmplY3RzCiAgICAgICAgVGhlIHR3byBkaW1lbnNpb25hbCBzZXJpZXMgaXMgZXZhbHVhdGVkIGF0IHRoZSBwb2ludHMgaW4gdGhlCiAgICAgICAgQ2FydGVzaWFuIHByb2R1Y3Qgb2YgYHhgIGFuZCBgeWAuICBJZiBgeGAgb3IgYHlgIGlzIGEgbGlzdCBvcgogICAgICAgIHR1cGxlLCBpdCBpcyBmaXJzdCBjb252ZXJ0ZWQgdG8gYW4gbmRhcnJheSwgb3RoZXJ3aXNlIGl0IGlzIGxlZnQKICAgICAgICB1bmNoYW5nZWQgYW5kLCBpZiBpdCBpc24ndCBhbiBuZGFycmF5LCBpdCBpcyB0cmVhdGVkIGFzIGEgc2NhbGFyLgogICAgYyA6IGFycmF5X2xpa2UKICAgICAgICBBcnJheSBvZiBjb2VmZmljaWVudHMgb3JkZXJlZCBzbyB0aGF0IHRoZSBjb2VmZmljaWVudHMgZm9yIHRlcm1zIG9mCiAgICAgICAgZGVncmVlIGksaiBhcmUgY29udGFpbmVkIGluIGBgY1tpLGpdYGAuIElmIGBjYCBoYXMgZGltZW5zaW9uCiAgICAgICAgZ3JlYXRlciB0aGFuIHR3byB0aGUgcmVtYWluaW5nIGluZGljZXMgZW51bWVyYXRlIG11bHRpcGxlIHNldHMgb2YKICAgICAgICBjb2VmZmljaWVudHMuCgogICAgUmV0dXJucwogICAgLS0tLS0tLQogICAgdmFsdWVzIDogbmRhcnJheSwgY29tcGF0aWJsZSBvYmplY3QKICAgICAgICBUaGUgdmFsdWVzIG9mIHRoZSB0d28gZGltZW5zaW9uYWwgcG9seW5vbWlhbCBhdCBwb2ludHMgaW4gdGhlIENhcnRlc2lhbgogICAgICAgIHByb2R1Y3Qgb2YgYHhgIGFuZCBgeWAuCgogICAgU2VlIEFsc28KICAgIC0tLS0tLS0tCiAgICBoZXJtZXZhbCwgaGVybWV2YWwyZCwgaGVybWV2YWwzZCwgaGVybWVncmlkM2QKCiAgICBOb3RlcwogICAgLS0tLS0KCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjcuMAoKICAgICkBchQAAAApA3JwAAAAcnIAAAByOAAAAHIwAAAAcjAAAAByMQAAAHIhAAAA5QMAAHMGAAAAADIKAQoBYwQAAAAAAAAABAAAAAYAAABDAAAAc14AAAB5HnQAagF8AHwBfAJmA2QBZAKNAlwDfQB9AX0CVwBuFAEAAQABAHQCZAODAYIBWQBuAlgAdAN8AHwDgwJ9A3QDfAF8A2QEZAWNA30DdAN8AnwDZARkBY0DfQN8A1MAKQZhqgYAAAogICAgRXZhbHVhdGUgYSAzLUQgSGVybWl0ZV9lIHNlcmllcyBhdCBwb2ludHMgKHgsIHksIHopLgoKICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdmFsdWVzOgoKICAgIC4uIG1hdGg6OiBwKHgseSx6KSA9IFxzdW1fe2ksaixrfSBjX3tpLGosa30gKiBIZV9pKHgpICogSGVfaih5KSAqIEhlX2soeikKCiAgICBUaGUgcGFyYW1ldGVycyBgeGAsIGB5YCwgYW5kIGB6YCBhcmUgY29udmVydGVkIHRvIGFycmF5cyBvbmx5IGlmCiAgICB0aGV5IGFyZSB0dXBsZXMgb3IgYSBsaXN0cywgb3RoZXJ3aXNlIHRoZXkgYXJlIHRyZWF0ZWQgYXMgYSBzY2FsYXJzIGFuZAogICAgdGhleSBtdXN0IGhhdmUgdGhlIHNhbWUgc2hhcGUgYWZ0ZXIgY29udmVyc2lvbi4gSW4gZWl0aGVyIGNhc2UsIGVpdGhlcgogICAgYHhgLCBgeWAsIGFuZCBgemAgb3IgdGhlaXIgZWxlbWVudHMgbXVzdCBzdXBwb3J0IG11bHRpcGxpY2F0aW9uIGFuZAogICAgYWRkaXRpb24gYm90aCB3aXRoIHRoZW1zZWx2ZXMgYW5kIHdpdGggdGhlIGVsZW1lbnRzIG9mIGBjYC4KCiAgICBJZiBgY2AgaGFzIGZld2VyIHRoYW4gMyBkaW1lbnNpb25zLCBvbmVzIGFyZSBpbXBsaWNpdGx5IGFwcGVuZGVkIHRvIGl0cwogICAgc2hhcGUgdG8gbWFrZSBpdCAzLUQuIFRoZSBzaGFwZSBvZiB0aGUgcmVzdWx0IHdpbGwgYmUgYy5zaGFwZVszOl0gKwogICAgeC5zaGFwZS4KCiAgICBQYXJhbWV0ZXJzCiAgICAtLS0tLS0tLS0tCiAgICB4LCB5LCB6IDogYXJyYXlfbGlrZSwgY29tcGF0aWJsZSBvYmplY3QKICAgICAgICBUaGUgdGhyZWUgZGltZW5zaW9uYWwgc2VyaWVzIGlzIGV2YWx1YXRlZCBhdCB0aGUgcG9pbnRzCiAgICAgICAgYCh4LCB5LCB6KWAsIHdoZXJlIGB4YCwgYHlgLCBhbmQgYHpgIG11c3QgaGF2ZSB0aGUgc2FtZSBzaGFwZS4gIElmCiAgICAgICAgYW55IG9mIGB4YCwgYHlgLCBvciBgemAgaXMgYSBsaXN0IG9yIHR1cGxlLCBpdCBpcyBmaXJzdCBjb252ZXJ0ZWQKICAgICAgICB0byBhbiBuZGFycmF5LCBvdGhlcndpc2UgaXQgaXMgbGVmdCB1bmNoYW5nZWQgYW5kIGlmIGl0IGlzbid0IGFuCiAgICAgICAgbmRhcnJheSBpdCBpcyAgdHJlYXRlZCBhcyBhIHNjYWxhci4KICAgIGMgOiBhcnJheV9saWtlCiAgICAgICAgQXJyYXkgb2YgY29lZmZpY2llbnRzIG9yZGVyZWQgc28gdGhhdCB0aGUgY29lZmZpY2llbnQgb2YgdGhlIHRlcm0gb2YKICAgICAgICBtdWx0aS1kZWdyZWUgaSxqLGsgaXMgY29udGFpbmVkIGluIGBgY1tpLGosa11gYC4gSWYgYGNgIGhhcyBkaW1lbnNpb24KICAgICAgICBncmVhdGVyIHRoYW4gMyB0aGUgcmVtYWluaW5nIGluZGljZXMgZW51bWVyYXRlIG11bHRpcGxlIHNldHMgb2YKICAgICAgICBjb2VmZmljaWVudHMuCgogICAgUmV0dXJucwogICAgLS0tLS0tLQogICAgdmFsdWVzIDogbmRhcnJheSwgY29tcGF0aWJsZSBvYmplY3QKICAgICAgICBUaGUgdmFsdWVzIG9mIHRoZSBtdWx0aWRpbWVuc2lvbmFsIHBvbHlub21pYWwgb24gcG9pbnRzIGZvcm1lZCB3aXRoCiAgICAgICAgdHJpcGxlcyBvZiBjb3JyZXNwb25kaW5nIHZhbHVlcyBmcm9tIGB4YCwgYHlgLCBhbmQgYHpgLgoKICAgIFNlZSBBbHNvCiAgICAtLS0tLS0tLQogICAgaGVybWV2YWwsIGhlcm1ldmFsMmQsIGhlcm1lZ3JpZDJkLCBoZXJtZWdyaWQzZAoKICAgIE5vdGVzCiAgICAtLS0tLQoKICAgIC4uIHZlcnNpb25hZGRlZDo6IDEuNy4wCgogICAgcgEAAAApAXJcAAAAehh4LCB5LCB6IGFyZSBpbmNvbXBhdGlibGVGKQFycQAAACkEcj0AAAByPgAAAHJYAAAAchQAAAApBHJwAAAAcnIAAADaAXpyOAAAAHIwAAAAcjAAAAByMQAAAHIgAAAAHAQAAHMQAAAAADACAR4BBgEOAgoBDgEOAWMEAAAAAAAAAAQAAAADAAAAQwAAAHMiAAAAdAB8AHwDgwJ9A3QAfAF8A4MCfQN0AHwCfAODAn0DfANTACkBYVYHAAAKICAgIEV2YWx1YXRlIGEgMy1EIEhlcm1pdGVFIHNlcmllcyBvbiB0aGUgQ2FydGVzaWFuIHByb2R1Y3Qgb2YgeCwgeSwgYW5kIHouCgogICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB2YWx1ZXM6CgogICAgLi4gbWF0aDo6IHAoYSxiLGMpID0gXHN1bV97aSxqLGt9IGNfe2ksaixrfSAqIEhlX2koYSkgKiBIZV9qKGIpICogSGVfayhjKQoKICAgIHdoZXJlIHRoZSBwb2ludHMgYChhLCBiLCBjKWAgY29uc2lzdCBvZiBhbGwgdHJpcGxlcyBmb3JtZWQgYnkgdGFraW5nCiAgICBgYWAgZnJvbSBgeGAsIGBiYCBmcm9tIGB5YCwgYW5kIGBjYCBmcm9tIGB6YC4gVGhlIHJlc3VsdGluZyBwb2ludHMgZm9ybQogICAgYSBncmlkIHdpdGggYHhgIGluIHRoZSBmaXJzdCBkaW1lbnNpb24sIGB5YCBpbiB0aGUgc2Vjb25kLCBhbmQgYHpgIGluCiAgICB0aGUgdGhpcmQuCgogICAgVGhlIHBhcmFtZXRlcnMgYHhgLCBgeWAsIGFuZCBgemAgYXJlIGNvbnZlcnRlZCB0byBhcnJheXMgb25seSBpZiB0aGV5CiAgICBhcmUgdHVwbGVzIG9yIGEgbGlzdHMsIG90aGVyd2lzZSB0aGV5IGFyZSB0cmVhdGVkIGFzIGEgc2NhbGFycy4gSW4KICAgIGVpdGhlciBjYXNlLCBlaXRoZXIgYHhgLCBgeWAsIGFuZCBgemAgb3IgdGhlaXIgZWxlbWVudHMgbXVzdCBzdXBwb3J0CiAgICBtdWx0aXBsaWNhdGlvbiBhbmQgYWRkaXRpb24gYm90aCB3aXRoIHRoZW1zZWx2ZXMgYW5kIHdpdGggdGhlIGVsZW1lbnRzCiAgICBvZiBgY2AuCgogICAgSWYgYGNgIGhhcyBmZXdlciB0aGFuIHRocmVlIGRpbWVuc2lvbnMsIG9uZXMgYXJlIGltcGxpY2l0bHkgYXBwZW5kZWQgdG8KICAgIGl0cyBzaGFwZSB0byBtYWtlIGl0IDMtRC4gVGhlIHNoYXBlIG9mIHRoZSByZXN1bHQgd2lsbCBiZSBjLnNoYXBlWzM6XSArCiAgICB4LnNoYXBlICsgeS5zaGFwZSArIHouc2hhcGUuCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgeCwgeSwgeiA6IGFycmF5X2xpa2UsIGNvbXBhdGlibGUgb2JqZWN0cwogICAgICAgIFRoZSB0aHJlZSBkaW1lbnNpb25hbCBzZXJpZXMgaXMgZXZhbHVhdGVkIGF0IHRoZSBwb2ludHMgaW4gdGhlCiAgICAgICAgQ2FydGVzaWFuIHByb2R1Y3Qgb2YgYHhgLCBgeWAsIGFuZCBgemAuICBJZiBgeGAsYHlgLCBvciBgemAgaXMgYQogICAgICAgIGxpc3Qgb3IgdHVwbGUsIGl0IGlzIGZpcnN0IGNvbnZlcnRlZCB0byBhbiBuZGFycmF5LCBvdGhlcndpc2UgaXQgaXMKICAgICAgICBsZWZ0IHVuY2hhbmdlZCBhbmQsIGlmIGl0IGlzbid0IGFuIG5kYXJyYXksIGl0IGlzIHRyZWF0ZWQgYXMgYQogICAgICAgIHNjYWxhci4KICAgIGMgOiBhcnJheV9saWtlCiAgICAgICAgQXJyYXkgb2YgY29lZmZpY2llbnRzIG9yZGVyZWQgc28gdGhhdCB0aGUgY29lZmZpY2llbnRzIGZvciB0ZXJtcyBvZgogICAgICAgIGRlZ3JlZSBpLGogYXJlIGNvbnRhaW5lZCBpbiBgYGNbaSxqXWBgLiBJZiBgY2AgaGFzIGRpbWVuc2lvbgogICAgICAgIGdyZWF0ZXIgdGhhbiB0d28gdGhlIHJlbWFpbmluZyBpbmRpY2VzIGVudW1lcmF0ZSBtdWx0aXBsZSBzZXRzIG9mCiAgICAgICAgY29lZmZpY2llbnRzLgoKICAgIFJldHVybnMKICAgIC0tLS0tLS0KICAgIHZhbHVlcyA6IG5kYXJyYXksIGNvbXBhdGlibGUgb2JqZWN0CiAgICAgICAgVGhlIHZhbHVlcyBvZiB0aGUgdHdvIGRpbWVuc2lvbmFsIHBvbHlub21pYWwgYXQgcG9pbnRzIGluIHRoZSBDYXJ0ZXNpYW4KICAgICAgICBwcm9kdWN0IG9mIGB4YCBhbmQgYHlgLgoKICAgIFNlZSBBbHNvCiAgICAtLS0tLS0tLQogICAgaGVybWV2YWwsIGhlcm1ldmFsMmQsIGhlcm1lZ3JpZDJkLCBoZXJtZXZhbDNkCgogICAgTm90ZXMKICAgIC0tLS0tCgogICAgLi4gdmVyc2lvbmFkZGVkOjogMS43LjAKCiAgICApAXIUAAAAKQRycAAAAHJyAAAAcnMAAAByOAAAAHIwAAAAcjAAAAByMQAAAHIiAAAAVwQAAHMIAAAAADUKAQoBCgFjAgAAAAAAAAAHAAAABQAAAEMAAABz0AAAAHQAfAGDAX0CfAJ8AWsDchh0AWQBgwGCAXwCZAJrAHIodAFkA4MBggF0AmoDfABkAmQEZAWNA2QGFwB9AHwCZAQXAGYBfABqBBcAfQN8AGoFfQR0AmoGfAN8BGQHjQJ9BXwAZAIUAGQEFwB8BWQCPAB8AmQCawRywHwAfAVkBDwAeD50B2QIfAJkBBcAgwJEAF0sfQZ8BXwGZAQYABkAfAAUAHwFfAZkCBgAGQB8BmQEGAAUABgAfAV8BjwAcZBXAHQCoAh8BWQCfAVqCaEDUwApCWESBgAAUHNldWRvLVZhbmRlcm1vbmRlIG1hdHJpeCBvZiBnaXZlbiBkZWdyZWUuCgogICAgUmV0dXJucyB0aGUgcHNldWRvLVZhbmRlcm1vbmRlIG1hdHJpeCBvZiBkZWdyZWUgYGRlZ2AgYW5kIHNhbXBsZSBwb2ludHMKICAgIGB4YC4gVGhlIHBzZXVkby1WYW5kZXJtb25kZSBtYXRyaXggaXMgZGVmaW5lZCBieQoKICAgIC4uIG1hdGg6OiBWWy4uLiwgaV0gPSBIZV9pKHgpLAoKICAgIHdoZXJlIGAwIDw9IGkgPD0gZGVnYC4gVGhlIGxlYWRpbmcgaW5kaWNlcyBvZiBgVmAgaW5kZXggdGhlIGVsZW1lbnRzIG9mCiAgICBgeGAgYW5kIHRoZSBsYXN0IGluZGV4IGlzIHRoZSBkZWdyZWUgb2YgdGhlIEhlcm1pdGVFIHBvbHlub21pYWwuCgogICAgSWYgYGNgIGlzIGEgMS1EIGFycmF5IG9mIGNvZWZmaWNpZW50cyBvZiBsZW5ndGggYG4gKyAxYCBhbmQgYFZgIGlzIHRoZQogICAgYXJyYXkgYGBWID0gaGVybWV2YW5kZXIoeCwgbilgYCwgdGhlbiBgYG5wLmRvdChWLCBjKWBgIGFuZAogICAgYGBoZXJtZXZhbCh4LCBjKWBgIGFyZSB0aGUgc2FtZSB1cCB0byByb3VuZG9mZi4gVGhpcyBlcXVpdmFsZW5jZSBpcwogICAgdXNlZnVsIGJvdGggZm9yIGxlYXN0IHNxdWFyZXMgZml0dGluZyBhbmQgZm9yIHRoZSBldmFsdWF0aW9uIG9mIGEgbGFyZ2UKICAgIG51bWJlciBvZiBIZXJtaXRlRSBzZXJpZXMgb2YgdGhlIHNhbWUgZGVncmVlIGFuZCBzYW1wbGUgcG9pbnRzLgoKICAgIFBhcmFtZXRlcnMKICAgIC0tLS0tLS0tLS0KICAgIHggOiBhcnJheV9saWtlCiAgICAgICAgQXJyYXkgb2YgcG9pbnRzLiBUaGUgZHR5cGUgaXMgY29udmVydGVkIHRvIGZsb2F0NjQgb3IgY29tcGxleDEyOAogICAgICAgIGRlcGVuZGluZyBvbiB3aGV0aGVyIGFueSBvZiB0aGUgZWxlbWVudHMgYXJlIGNvbXBsZXguIElmIGB4YCBpcwogICAgICAgIHNjYWxhciBpdCBpcyBjb252ZXJ0ZWQgdG8gYSAxLUQgYXJyYXkuCiAgICBkZWcgOiBpbnQKICAgICAgICBEZWdyZWUgb2YgdGhlIHJlc3VsdGluZyBtYXRyaXguCgogICAgUmV0dXJucwogICAgLS0tLS0tLQogICAgdmFuZGVyIDogbmRhcnJheQogICAgICAgIFRoZSBwc2V1ZG8tVmFuZGVybW9uZGUgbWF0cml4LiBUaGUgc2hhcGUgb2YgdGhlIHJldHVybmVkIG1hdHJpeCBpcwogICAgICAgIGBgeC5zaGFwZSArIChkZWcgKyAxLClgYCwgd2hlcmUgVGhlIGxhc3QgaW5kZXggaXMgdGhlIGRlZ3JlZSBvZiB0aGUKICAgICAgICBjb3JyZXNwb25kaW5nIEhlcm1pdGVFIHBvbHlub21pYWwuICBUaGUgZHR5cGUgd2lsbCBiZSB0aGUgc2FtZSBhcwogICAgICAgIHRoZSBjb252ZXJ0ZWQgYHhgLgoKICAgIEV4YW1wbGVzCiAgICAtLS0tLS0tLQogICAgPj4+IGZyb20gbnVtcHkucG9seW5vbWlhbC5oZXJtaXRlX2UgaW1wb3J0IGhlcm1ldmFuZGVyCiAgICA+Pj4geCA9IG5wLmFycmF5KFstMSwgMCwgMV0pCiAgICA+Pj4gaGVybWV2YW5kZXIoeCwgMykKICAgIGFycmF5KFtbIDEuLCAtMS4sICAwLiwgIDIuXSwKICAgICAgICAgICBbIDEuLCAgMC4sIC0xLiwgLTAuXSwKICAgICAgICAgICBbIDEuLCAgMS4sICAwLiwgLTIuXV0pCgogICAgehNkZWcgbXVzdCBiZSBpbnRlZ2VycgEAAAB6GGRlZyBtdXN0IGJlIG5vbi1uZWdhdGl2ZXIGAAAAKQJyXAAAAHJbAAAAZwAAAAAAAAAAKQFyTgAAAHI1AAAAKQpyVwAAAHJYAAAAcj0AAAByPgAAAHJjAAAAck4AAAByTwAAAHIsAAAAcmIAAAByYQAAACkHcnAAAAByLQAAANoEaWRlZ1oEZGltc1oEZHR5cNoBdnIvAAAAcjAAAAByMAAAAHIxAAAAchoAAACSBAAAcx4AAAAALAgBCAEIAQgBCAIUARABBgEOARABCAEIARQBLAFjAwAAAAAAAAAKAAAABgAAAEMAAABzngAAAGQBZAKEAHwCRACDAX0DZANkAoQAdAB8A3wCgwJEAIMBfQR8BGQEZARnAmsDcjZ0AWQFgwGCAXwDXAJ9BX0GdAJqA3wAfAFmAmQGZAeNAmQIFwBcAn0AfQF0BHwAfAWDAn0HdAR8AXwGgwJ9CHwHZAkZAHwIZApkC2QLZAuFAmYDGQAUAH0JfAmgBXwJagZkC2QMhQIZAGQNFwChAVMAKQ5hmwYAAFBzZXVkby1WYW5kZXJtb25kZSBtYXRyaXggb2YgZ2l2ZW4gZGVncmVlcy4KCiAgICBSZXR1cm5zIHRoZSBwc2V1ZG8tVmFuZGVybW9uZGUgbWF0cml4IG9mIGRlZ3JlZXMgYGRlZ2AgYW5kIHNhbXBsZQogICAgcG9pbnRzIGAoeCwgeSlgLiBUaGUgcHNldWRvLVZhbmRlcm1vbmRlIG1hdHJpeCBpcyBkZWZpbmVkIGJ5CgogICAgLi4gbWF0aDo6IFZbLi4uLCAoZGVnWzFdICsgMSkqaSArIGpdID0gSGVfaSh4KSAqIEhlX2ooeSksCgogICAgd2hlcmUgYDAgPD0gaSA8PSBkZWdbMF1gIGFuZCBgMCA8PSBqIDw9IGRlZ1sxXWAuIFRoZSBsZWFkaW5nIGluZGljZXMgb2YKICAgIGBWYCBpbmRleCB0aGUgcG9pbnRzIGAoeCwgeSlgIGFuZCB0aGUgbGFzdCBpbmRleCBlbmNvZGVzIHRoZSBkZWdyZWVzIG9mCiAgICB0aGUgSGVybWl0ZUUgcG9seW5vbWlhbHMuCgogICAgSWYgYGBWID0gaGVybWV2YW5kZXIyZCh4LCB5LCBbeGRlZywgeWRlZ10pYGAsIHRoZW4gdGhlIGNvbHVtbnMgb2YgYFZgCiAgICBjb3JyZXNwb25kIHRvIHRoZSBlbGVtZW50cyBvZiBhIDItRCBjb2VmZmljaWVudCBhcnJheSBgY2Agb2Ygc2hhcGUKICAgICh4ZGVnICsgMSwgeWRlZyArIDEpIGluIHRoZSBvcmRlcgoKICAgIC4uIG1hdGg6OiBjX3swMH0sIGNfezAxfSwgY197MDJ9IC4uLiAsIGNfezEwfSwgY197MTF9LCBjX3sxMn0gLi4uCgogICAgYW5kIGBgbnAuZG90KFYsIGMuZmxhdClgYCBhbmQgYGBoZXJtZXZhbDJkKHgsIHksIGMpYGAgd2lsbCBiZSB0aGUgc2FtZQogICAgdXAgdG8gcm91bmRvZmYuIFRoaXMgZXF1aXZhbGVuY2UgaXMgdXNlZnVsIGJvdGggZm9yIGxlYXN0IHNxdWFyZXMKICAgIGZpdHRpbmcgYW5kIGZvciB0aGUgZXZhbHVhdGlvbiBvZiBhIGxhcmdlIG51bWJlciBvZiAyLUQgSGVybWl0ZUUKICAgIHNlcmllcyBvZiB0aGUgc2FtZSBkZWdyZWVzIGFuZCBzYW1wbGUgcG9pbnRzLgoKICAgIFBhcmFtZXRlcnMKICAgIC0tLS0tLS0tLS0KICAgIHgsIHkgOiBhcnJheV9saWtlCiAgICAgICAgQXJyYXlzIG9mIHBvaW50IGNvb3JkaW5hdGVzLCBhbGwgb2YgdGhlIHNhbWUgc2hhcGUuIFRoZSBkdHlwZXMKICAgICAgICB3aWxsIGJlIGNvbnZlcnRlZCB0byBlaXRoZXIgZmxvYXQ2NCBvciBjb21wbGV4MTI4IGRlcGVuZGluZyBvbgogICAgICAgIHdoZXRoZXIgYW55IG9mIHRoZSBlbGVtZW50cyBhcmUgY29tcGxleC4gU2NhbGFycyBhcmUgY29udmVydGVkIHRvCiAgICAgICAgMS1EIGFycmF5cy4KICAgIGRlZyA6IGxpc3Qgb2YgaW50cwogICAgICAgIExpc3Qgb2YgbWF4aW11bSBkZWdyZWVzIG9mIHRoZSBmb3JtIFt4X2Rl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cmRlcgoKICAgIC4uIG1hdGg6OiBjX3swMDB9LCBjX3swMDF9LCBjX3swMDJ9LC4uLiAsIGNfezAxMH0sIGNfezAxMX0sIGNfezAxMn0sLi4uCgogICAgYW5kICBgYG5wLmRvdChWLCBjLmZsYXQpYGAgYW5kIGBgaGVybWV2YWwzZCh4LCB5LCB6LCBjKWBgIHdpbGwgYmUgdGhlCiAgICBzYW1lIHVwIHRvIHJvdW5kb2ZmLiBUaGlzIGVxdWl2YWxlbmNlIGlzIHVzZWZ1bCBib3RoIGZvciBsZWFzdCBzcXVhcmVzCiAgICBmaXR0aW5nIGFuZCBmb3IgdGhlIGV2YWx1YXRpb24gb2YgYSBsYXJnZSBudW1iZXIgb2YgMy1EIEhlcm1pdGVFCiAgICBzZXJpZXMgb2YgdGhlIHNhbWUgZGVncmVlcyBhbmQgc2FtcGxlIHBvaW50cy4KCiAgICBQYXJhbWV0ZXJzCiAgICAtLS0tLS0tLS0tCiAgICB4LCB5LCB6IDogYXJyYXlfbGlrZQogICAgICAgIEFycmF5cyBvZiBwb2ludCBjb29yZGluYXRlcywgYWxsIG9mIHRoZSBzYW1lIHNoYXBlLiBUaGUgZHR5cGVzIHdpbGwKICAgICAgICBiZSBjb252ZXJ0ZWQgdG8gZWl0aGVyIGZsb2F0NjQgb3IgY29tcGxleDEyOCBkZXBlbmRpbmcgb24gd2hldGhlcgogICAgICAgIGFueSBvZiB0aGUgZWxlbWVudHMgYXJlIGNvbXBsZXguIFNjYWxhcnMgYXJlIGNvbnZlcnRlZCB0byAxLUQKICAgICAgICBhcnJheXMuCiAgICBkZWcgOiBsaXN0IG9mIGludHMKICAgICAgICBMaXN0IG9mIG1heGltdW0gZGVncmVlcyBvZiB0aGUgZm9ybSBbeF9kZWcsIHlfZGVnLCB6X2RlZ10uCgogICAgUmV0dXJucwogICAgLS0tLS0tLQogICAgdmFuZGVyM2QgOiBuZGFycmF5CiAgICAgICAgVGhlIHNoYXBlIG9mIHRoZSByZXR1cm5lZCBtYXRyaXggaXMgYGB4LnNoYXBlICsgKG9yZGVyLClgYCwgd2hlcmUKICAgICAgICA6bWF0aDpgb3JkZXIgPSAoZGVnWzBdKzEpKihkZWcoWzFdKzEp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IHN0b3JlZCBpbiB0aGUgY29ycmVzcG9uZGluZyBjb2x1bW5zIG9mIGEgMi1EIHJldHVybi4KICAgIFRoZSBmaXR0ZWQgcG9seW5vbWlhbChzKSBhcmUgaW4gdGhlIGZvcm0KCiAgICAuLiBtYXRoOjogIHAoeCkgPSBjXzAgKyBjXzEgKiBIZV8xKHgpICsgLi4uICsgY19uICogSGVfbih4KSwKCiAgICB3aGVyZSBgbmAgaXMgYGRlZ2AuCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgeCA6IGFycmF5X2xpa2UsIHNoYXBlIChNLCkKICAgICAgICB4LWNvb3JkaW5hdGVzIG9mIHRoZSBNIHNhbXBsZSBwb2ludHMgYGAoeFtpXSwgeVtpXSlgYC4KICAgIHkgOiBhcnJheV9saWtlLCBzaGFwZSAoTSwpIG9yIChNLCBLKQogICAgICAgIHktY29vcmRpbmF0ZXMgb2YgdGhlIHNhbXBsZSBwb2ludHMuIFNldmVyYWwgZGF0YSBzZXRzIG9mIHNhbXBsZQogICAgICAgIHBvaW50cyBzaGFyaW5nIHRoZSBzYW1lIHgtY29vcmRpbmF0ZXMgY2FuIGJlIGZpdHRlZCBhdCBvbmNlIGJ5CiAgICAgICAgcGFzc2luZyBpbiBhIDJELWFycmF5IHRoYXQgY29udGFpbnMgb25lIGRhdGFzZXQgcGVyIGNvbHVtbi4KICAgIGRlZyA6IGludCBvciAxLUQgYXJyYXlfbGlrZQogICAgICAgIERlZ3JlZShzKSBvZiB0aGUgZml0dGluZyBwb2x5bm9taWFscy4gSWYgYGRlZ2AgaXMgYSBzaW5nbGUgaW50ZWdlcgogICAgICAgIGFsbCB0ZXJtcyB1cCB0byBhbmQgaW5jbHVkaW5nIHRoZSBgZGVnYCd0aCB0ZXJtIGFyZSBpbmNsdWRlZCBpbiB0aGUKICAgICAgICBmaXQuIEZvciBOdW1QeSB2ZXJzaW9ucyA+PSAxLjExLjAgYSBsaXN0IG9mIGludGVnZXJzIHNwZWNpZnlpbmcgdGhlCiAgICAgICAgZGVncmVlcyBvZiB0aGUgdGVybXMgdG8gaW5jbHVkZSBtYXkgYmUgdXNlZCBpbnN0ZWFkLgogICAgcmNvbmQgOiBmbG9hdCwgb3B0aW9uYWwKICAgICAgICBSZWxhdGl2ZSBjb25kaXRpb24gbnVtYmVyIG9mIHRoZSBmaXQuIFNpbmd1bGFyIHZhbHVlcyBzbWFsbGVyIHRoYW4KICAgICAgICB0aGlzIHJlbGF0aXZlIHRvIHRoZSBsYXJnZXN0IHNpbmd1bGFyIHZhbHVlIHdpbGwgYmUgaWdub3JlZC4gVGhlCiAgICAgICAgZGVmYXVsdCB2YWx1ZSBpcyBsZW4oeCkqZXBzLCB3aGVyZSBlcHMgaXMgdGhlIHJlbGF0aXZlIHByZWNpc2lvbiBvZgogICAgICAgIHRoZSBmbG9hdCB0eXBlLCBhYm91dCAyZS0xNiBpbiBtb3N0IGNhc2VzLgogICAgZnVsbCA6IGJvb2wsIG9wdGlvbmFsCiAgICAgICAgU3dpdGNoIGRldGVybWluaW5nIG5hdHVyZSBvZiByZXR1cm4gdmFsdWUuIFdoZW4gaXQgaXMgRmFsc2UgKHRoZQogICAgICAgIGRlZmF1bHQpIGp1c3QgdGhlIGNvZWZmaWNpZW50cyBhcmUgcmV0dXJuZWQsIHdoZW4gVHJ1ZSBkaWFnbm9zdGljCiAgICAgICAgaW5mb3JtYXRpb24gZnJvbSB0aGUgc2luZ3VsYXIgdmFsdWUgZGVjb21wb3NpdGlvbiBpcyBhbHNvIHJldHVybmVkLgogICAgdyA6IGFycmF5X2xpa2UsIHNoYXBlIChgTWAsKSwgb3B0aW9uYWwKICAgICAgICBXZWlnaHRzLiBJZiBub3QgTm9uZSwgdGhlIGNvbnRyaWJ1dGlvbiBvZiBlYWNoIHBvaW50CiAgICAgICAgYGAoeFtpXSx5W2ldKWBgIHRvIHRoZSBmaXQgaXMgd2VpZ2h0ZWQgYnkgYHdbaV1gLiBJZGVhbGx5IHRoZQogICAgICAgIHdlaWdodHMgYXJlIGNob3NlbiBzbyB0aGF0IHRoZSBlcnJvcnMgb2YgdGhlIHByb2R1Y3RzIGBgd1tpXSp5W2ldYGAKICAgICAgICBhbGwgaGF2ZSB0aGUgc2FtZSB2YXJpYW5jZS4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIE5vbmUuCgogICAgUmV0dXJucwogICAgLS0tLS0tLQogICAgY29lZiA6IG5kYXJyYXksIHNoYXBlIChNLCkgb3IgKE0sIEspCiAgICAgICAgSGVybWl0ZSBjb2VmZmljaWVudHMgb3JkZXJlZCBmcm9tIGxvdyB0byBoaWdoLiBJZiBgeWAgd2FzIDItRCwKICAgICAgICB0aGUgY29lZmZpY2llbnRzIGZvciB0aGUgZGF0YSBpbiBjb2x1bW4gayAgb2YgYHlgIGFyZSBpbiBjb2x1bW4KICAgICAgICBga2AuCgogICAgW3Jlc2lkdWFscywgcmFuaywgc2luZ3VsYXJfdmFsdWVzLCByY29uZF0gOiBsaXN0CiAgICAgICAgVGhlc2UgdmFsdWVzIGFyZSBvbmx5IHJldHVybmVkIGlmIGBmdWxsYCA9IFRydWUKCiAgICAgICAgcmVzaWQgLS0gc3VtIG9mIHNxdWFyZWQgcmVzaWR1YWxzIG9mIHRoZSBsZWFzdCBzcXVhcmVzIGZpdAogICAgICAgIHJhbmsgLS0gdGhlIG51bWVyaWNhbCByYW5rIG9mIHRoZSBzY2FsZWQgVmFuZGVybW9uZGUgbWF0cml4CiAgICAgICAgc3YgLS0gc2luZ3VsYXIgdmFsdWVzIG9mIHRoZSBzY2FsZWQgVmFuZGVybW9uZGUgbWF0cml4CiAgICAgICAgcmNvbmQgLS0gdmFsdWUgb2YgYHJjb25kYC4KCiAgICAgICAgRm9yIG1vcmUgZGV0YWlscywgc2VlIGBsaW5hbGcubHN0c3FgLgoKICAgIFdhcm5zCiAgICAtLS0tLQogICAgUmFua1dhcm5pbmcKICAgICAgICBUaGUgcmFuayBvZiB0aGUgY29lZmZpY2llbnQgbWF0cml4IGluIHRoZSBsZWFzdC1zcXVhcmVzIGZpdCBpcwogICAgICAgIGRlZmljaWVudC4gVGhlIHdhcm5pbmcgaXMgb25seSByYWlzZWQgaWYgYGZ1bGxgID0gRmFsc2UuICBUaGUKICAgICAgICB3YXJuaW5ncyBjYW4gYmUgdHVybmVkIG9mZiBieQoKICAgICAgICA+Pj4gaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgPj4+IHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgUmFua1dhcm5pbmcpCgogICAgU2VlIEFsc28KICAgIC0tLS0tLS0tCiAgICBjaGViZml0LCBsZWdmaXQsIHBvbHlmaXQsIGhlcm1maXQsIHBvbHlmaXQKICAgIGhlcm1ldmFsIDogRXZhbHVhdGVzIGEgSGVybWl0ZSBzZXJpZXMuCiAgICBoZXJtZXZhbmRlciA6IHBzZXVkbyBWYW5kZXJtb25kZSBtYXRyaXggb2YgSGVybWl0ZSBzZXJpZXMuCiAgICBoZXJtZXdlaWdodCA6IEhlcm1pdGVFIHdlaWdodCBmdW5jdGlvbi4KICAgIGxpbmFsZy5sc3RzcSA6IENvbXB1dGVzIGEgbGVhc3Qtc3F1YXJlcyBmaXQgZnJvbSB0aGUgbWF0cml4LgogICAgc2NpcHkuaW50ZXJwb2xhdGUuVW5pdmFyaWF0ZVNwbGluZSA6IENvbXB1dGVzIHNwbGluZSBmaXRzLgoKICAgIE5vdGVzCiAgICAtLS0tLQogICAgVGhlIHNvbHV0aW9uIGlzIHRoZSBjb2VmZmljaWVudHMgb2YgdGhlIEhlcm1pdGVFIHNlcmllcyBgcGAgdGhhdAogICAgbWluaW1pemVzIHRoZSBzdW0gb2YgdGhlIHdlaWdodGVkIHNxdWFyZWQgZXJyb3JzCgogICAgLi4gbWF0aDo6IEUgPSBcc3VtX2ogd19qXjIgKiB8eV9qIC0gcCh4X2opfF4yLAoKICAgIHdoZXJlIHRoZSA6bWF0aDpgd19qYCBhcmUgdGhlIHdlaWdodHMuIFRoaXMgcHJvYmxlbSBpcyBzb2x2ZWQgYnkKICAgIHNldHRpbmcgdXAgdGhlICh0eXBpY2FsbHkpIG92ZXJkZXRlcm1pbmVkIG1hdHJpeCBlcXVhdGlvbgoKICAgIC4uIG1hdGg6OiBWKHgpICogYyA9IHcgKiB5LAoKICAgIHdoZXJlIGBWYCBpcyB0aGUgcHNldWRvIFZhbmRlcm1vbmRlIG1hdHJpeCBvZiBgeGAsIHRoZSBlbGVtZW50cyBvZiBgY2AKICAgIGFyZSB0aGUgY29lZmZpY2llbnRzIHRvIGJlIHNvbHZlZCBmb3IsIGFuZCB0aGUgZWxlbWVudHMgb2YgYHlgIGFyZSB0aGUKICAgIG9ic2VydmVkIHZhbHVlcy4gIFRoaXMgZXF1YXRpb24gaXMgdGhlbiBzb2x2ZWQgdXNpbmcgdGhlIHNpbmd1bGFyIHZhbHVlCiAgICBkZWNvbXBvc2l0aW9uIG9mIGBWYC4KCiAgICBJZiBzb21lIG9mIHRoZSBzaW5ndWxhciB2YWx1ZXMgb2YgYFZgIGFyZSBzbyBzbWFsbCB0aGF0IHRoZXkgYXJlCiAgICBuZWdsZWN0ZWQsIHRoZW4gYSBgUmFua1dhcm5pbmdgIHdpbGwgYmUgaXNzdWVkLiBUaGlzIG1lYW5zIHRoYXQgdGhlCiAgICBjb2VmZmljaWVudCB2YWx1ZXMgbWF5IGJlIHBvb3JseSBkZXRlcm1pbmVkLiBVc2luZyBhIGxvd2VyIG9yZGVyIGZpdAogICAgd2lsbCB1c3VhbGx5IGdldCByaWQgb2YgdGhlIHdhcm5pbmcuICBUaGUgYHJjb25kYCBwYXJhbWV0ZXIgY2FuIGFsc28gYmUKICAgIHNldCB0byBhIHZhbHVlIHNtYWxsZXIgdGhhbiBpdHMgZGVmYXVsdCwgYnV0IHRoZSByZXN1bHRpbmcgZml0IG1heSBiZQogICAgc3B1cmlvdXMgYW5kIGhhdmUgbGFyZ2UgY29udHJpYnV0aW9ucyBmcm9tIHJvdW5kb2ZmIGVycm9yLgoKICAgIEZpdHMgdXNpbmcgSGVybWl0ZUUgc2VyaWVzIGFyZSBwcm9iYWJseSBtb3N0IHVzZWZ1bCB3aGVuIHRoZSBkYXRhIGNhbgogICAgYmUgYXBwcm94aW1hdGVkIGJ5IGBgc3FydCh3KHgpKSAqIHAoeClgYCwgd2hlcmUgYHcoeClgIGlzIHRoZSBIZXJtaXRlRQogICAgd2VpZ2h0LiBJbiB0aGF0IGNhc2UgdGhlIHdlaWdodCBgYHNxcnQodyh4W2ldKWBgIHNob3VsZCBiZSB1c2VkCiAgICB0b2dldGhlciB3aXRoIGRhdGEgdmFsdWVzIGBgeVtpXS9zcXJ0KHcoeFtpXSlgYC4gVGhlIHdlaWdodCBmdW5jdGlvbiBpcwogICAgYXZhaWxhYmxlIGFzIGBoZXJtZXdlaWdodGAuCgogICAgUmVmZXJlbmNlcwogICAgLS0tLS0tLS0tLQogICAgLi4gWzFdIFdpa2lwZWRpYSwgIkN1cnZlIGZpdHRpbmciLAogICAgICAgICAgIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3VydmVfZml0dGluZwoKICAgIEV4YW1wbGVzCiAgICAtLS0tLS0tLQogICAgPj4+IGZyb20gbnVtcHkucG9seW5vbWlhbC5oZXJtaXRlX2UgaW1wb3J0IGhlcm1lZml0LCBoZXJtZXZhbAogICAgPj4+IHggPSBucC5saW5zcGFjZSgtMTAsIDEwKQogICAgPj4+IGVyciA9IG5wLnJhbmRvbS5yYW5kbihsZW4oeCkpLzEwCiAgICA+Pj4geSA9IGhlcm1ldmFsKHgsIFsxLCAyLCAzXSkgKyBlcnIKICAgID4+PiBoZXJtZWZpdCh4LCB5LCAyKQogICAgYXJyYXkoWyAxLjAxNjkwNDQ1LCAgMS45OTk1MTQxOCwgIDIuOTk5NDg2OTZdKQoKICAgIGcAAAAAAAAAAHIGAAAA2gJpdXIBAAAAejBkZWcgbXVzdCBiZSBhbiBpbnQgb3Igbm9uLWVtcHR5IDEtRCBhcnJheSBvZiBpbnR6EWV4cGVjdGVkIGRlZyA+PSAwehhleHBlY3RlZCAxRCB2ZWN0b3IgZm9yIHh6H2V4cGVjdGVkIG5vbi1lbXB0eSB2ZWN0b3IgZm9yIHhyNQAAAHodZXhwZWN0ZWQgMUQgb3IgMkQgYXJyYXkgZm9yIHl6JGV4cGVjdGVkIHggYW5kIHkgdG8gaGF2ZSBzYW1lIGxlbmd0aHIoAAAATnoYZXhwZWN0ZWQgMUQgdmVjdG9yIGZvciB3eiRleHBlY3RlZCB4IGFuZCB3IHRvIGhhdmUgc2FtZSBsZW5ndGgpAXJOAAAAeiFUaGUgZml0IG1heSBiZSBwb29ybHkgY29uZGl0aW9uZWQpAdoKc3RhY2tsZXZlbCkfcj0AAABybgAAAHJhAAAAck4AAADaBGtpbmRySgAAANoJVHlwZUVycm9y2gNtaW5yWAAAAHIrAAAAchoAAAByRwAAANoBVFoFZmluZm/aA2Vwc9oKaXNzdWJjbGFzc9oEdHlwZVoPY29tcGxleGZsb2F0aW5n2gRzcXJ02gZzcXVhcmXaBHJlYWzaBGltYWfaA3N1bdoCbGFaBWxzdHNx2gV6ZXJvc3JjAAAA2gh3YXJuaW5nc9oEd2FybnIpAAAAWgtSYW5rV2FybmluZykScnAAAABycgAAAHItAAAAWgVyY29uZNoEZnVsbNoBd1oEbG1heNoFb3JkZXJaA3ZhbtoDbGhz2gNyaHNyQAAAAHI4AAAAWgZyZXNpZHNaBHJhbmvaAXPaAmNj2gNtc2dyMAAAAHIwAAAAcjEAAAByGwAAAFAFAABzagAAAAB8DgEOAQoDIAEIAQwBCAEKAQgBCgEIARQBCAEQAQgCCgEEAQgBDAIKAQgBCAEWAwYBBgEKAQ4BDAEIARIBCAMIAQgDCgEWAxIBJgIWAQwDHgEMAwwBDAEgAhQBCAEEAxABBAESAgYBEAJjAQAAAAAAAAAGAAAACwAAAEMAAABzJAEAAHQAoAF8AGcBoQFcAX0AdAJ8AIMBZAFrAHIidANkAoMBggF0AnwAgwFkAWsCckp0BKAFfABkAxkACwB8AGQEGQAbAGcBZwGhAVMAdAJ8AIMBZAQYAH0BdARqBnwBfAFmAnwAagdkBY0CfQJ0BKAIZAZkBnQEoAl0BKAKfAFkBBgAZANkB6EDoQEbAGYCoQF9A3QEagugDHwDoQFkCGQIZAeFAxkAfQN8AqANZAehAWQEZAh8AWQEFwCFAxkAfQR8AqANZAehAXwBZAh8AWQEFwCFAxkAfQV0BKAJdASgCmQEfAGhAqEBfARkCTwAfAR8BWQJPAB8AmQIZAiFAmQHZgIFABkAfAN8AGQIZAeFAhkAFAB8AGQHGQAbADgAAwA8AHwCUwApCmGZAgAACiAgICBSZXR1cm4gdGhlIHNjYWxlZCBjb21wYW5pb24gbWF0cml4IG9mIGMuCgogICAgVGhlIGJhc2lzIHBvbHlub21pYWxzIGFyZSBzY2FsZWQgc28gdGhhdCB0aGUgY29tcGFuaW9uIG1hdHJpeCBpcwogICAgc3ltbWV0cmljIHdoZW4gYGNgIGlzIGFuIEhlcm1pdGVFIGJhc2lzIHBvbHlub21pYWwuIFRoaXMgcHJvdmlkZXMKICAgIGJldHRlciBlaWdlbnZhbHVlIGVzdGltYXRlcyB0aGFuIHRoZSB1bnNjYWxlZCBjYXNlIGFuZCBmb3IgYmFzaXMKICAgIHBvbHlub21pYWxzIHRoZSBlaWdlbnZhbHVlcyBhcmUgZ3VhcmFudGVlZCB0byBiZSByZWFsIGlmCiAgICBgbnVtcHkubGluYWxnLmVpZ3ZhbHNoYCBpcyB1c2VkIHRvIG9idGFpbiB0aGVtLgoKICAgIFBhcmFtZXRlcnMKICAgIC0tLS0tLS0tLS0KICAgIGMgOiBhcnJheV9saWtlCiAgICAgICAgMS1EIGFycmF5IG9mIEhlcm1pdGVFIHNlcmllcyBjb2VmZmljaWVudHMgb3JkZXJlZCBmcm9tIGxvdyB0byBoaWdoCiAgICAgICAgZGVncmVlLgoKICAgIFJldHVybnMKICAgIC0tLS0tLS0KICAgIG1hdCA6IG5kYXJyYXkKICAgICAgICBTY2FsZWQgY29tcGFuaW9uIG1hdHJpeCBvZiBkaW1lbnNpb25zIChkZWcsIGRlZykuCgogICAgTm90ZXMKICAgIC0tLS0tCgogICAgLi4gdmVyc2lvbmFkZGVkOjogMS43LjAKCiAgICByNQAAAHouU2VyaWVzIG11c3QgaGF2ZSBtYXhpbXVtIGRlZ3JlZSBvZiBhdCBsZWFzdCAxLnIBAAAAcgYAAAApAXJOAAAAZwAAAAAAAPA/cigAAABOLikOcikAAAByKgAAAHIrAAAAclgAAAByPQAAAHI+AAAAco4AAAByTgAAAFoGaHN0YWNrcogAAABaBmFyYW5nZdoIbXVsdGlwbHnaCmFjY3VtdWxhdGVybwAAACkGcjgAAAByOQAAANoDbWF0ckAAAADaA3RvcFoDYm90cjAAAAByMAAAAHIxAAAAciUAAAAZBgAAcx4AAAAAHA4BDAEIAQwBHAIMARQBJgEWARgBGAEWAQgBLAFjAQAAAAAAAAADAAAABQAAAEMAAABzbgAAAHQAoAF8AGcBoQFcAX0AdAJ8AIMBZAFrAXIqdANqBGcAfABqBWQCjQJTAHQCfACDAWQDawJyUHQDoAR8AGQEGQALAHwAZAEZABsAZwGhAVMAdAZ8AIMBfQF0B6AIfAGhAX0CfAKgCaEAAQB8AlMAKQVhUwUAAAogICAgQ29tcHV0ZSB0aGUgcm9vdHMgb2YgYSBIZXJtaXRlRSBzZXJpZXMuCgogICAgUmV0dXJuIHRoZSByb290cyAoYS5rLmEuICJ6ZXJvcyIpIG9mIHRoZSBwb2x5bm9taWFsCgogICAgLi4gbWF0aDo6IHAoeCkgPSBcc3VtX2kgY1tpXSAqIEhlX2koeCkuCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgYyA6IDEtRCBhcnJheV9saWtlCiAgICAgICAgMS1EIGFycmF5IG9mIGNvZWZmaWNpZW50cy4KCiAgICBSZXR1cm5zCiAgICAtLS0tLS0tCiAgICBvdXQgOiBuZGFycmF5CiAgICAgICAgQXJyYXkgb2YgdGhlIHJvb3RzIG9mIHRoZSBzZXJpZXMuIElmIGFsbCB0aGUgcm9vdHMgYXJlIHJlYWwsCiAgICAgICAgdGhlbiBgb3V0YCBpcyBhbHNvIHJlYWwsIG90aGVyd2lzZSBpdCBpcyBjb21wbGV4LgoKICAgIFNlZSBBbHNvCiAgICAtLS0tLS0tLQogICAgcG9seXJvb3RzLCBsZWdyb290cywgbGFncm9vdHMsIGhlcm1yb290cywgY2hlYnJvb3RzCgogICAgTm90ZXMKICAgIC0tLS0tCiAgICBUaGUgcm9vdCBlc3RpbWF0ZXMgYXJlIG9idGFpbmVkIGFzIHRoZSBlaWdlbnZhbHVlcyBvZiB0aGUgY29tcGFuaW9uCiAgICBtYXRyaXgsIFJvb3RzIGZhciBmcm9tIHRoZSBvcmlnaW4gb2YgdGhlIGNvbXBsZXggcGxhbmUgbWF5IGhhdmUgbGFyZ2UKICAgIGVycm9ycyBkdWUgdG8gdGhlIG51bWVyaWNhbCBpbnN0YWJpbGl0eSBvZiB0aGUgc2VyaWVzIGZvciBzdWNoCiAgICB2YWx1ZXMuIFJvb3RzIHdpdGggbXVsdGlwbGljaXR5IGdyZWF0ZXIgdGhhbiAxIHdpbGwgYWxzbyBzaG93IGxhcmdlcgogICAgZXJyb3JzIGFzIHRoZSB2YWx1ZSBvZiB0aGUgc2VyaWVzIG5lYXIgc3VjaCBwb2ludHMgaXMgcmVsYXRpdmVseQogICAgaW5zZW5zaXRpdmUgdG8gZXJyb3JzIGluIHRoZSByb290cy4gSXNvbGF0ZWQgcm9vdHMgbmVhciB0aGUgb3JpZ2luIGNhbgogICAgYmUgaW1wcm92ZWQgYnkgYSBmZXcgaXRlcmF0aW9ucyBvZiBOZXd0b24ncyBtZXRob2QuCgogICAgVGhlIEhlcm1pdGVFIHNlcmllcyBiYXNpcyBwb2x5bm9taWFscyBhcmVuJ3QgcG93ZXJzIG9mIGB4YCBzbyB0aGUKICAgIHJlc3VsdHMgb2YgdGhpcyBmdW5jdGlvbiBtYXkgc2VlbSB1bmlu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bmQgd2VpZ2h0cyBmb3IgR2F1c3MtSGVybWl0ZUUgcXVhZHJhdHVyZS4KICAgIFRoZXNlIHNhbXBsZSBwb2ludHMgYW5kIHdlaWdodHMgd2lsbCBjb3JyZWN0bHkgaW50ZWdyYXRlIHBvbHlub21pYWxzIG9mCiAgICBkZWdyZWUgOm1hdGg6YDIqZGVnIC0gMWAgb3IgbGVzcyBvdmVyIHRoZSBpbnRlcnZhbCA6bWF0aDpgWy1caW5mLCBcaW5mXWAKICAgIHdpdGggdGhlIHdlaWdodCBmdW5jdGlvbiA6bWF0aDpgZih4KSA9IFxleHAoLXheMi8yKWAuCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgZGVnIDogaW50CiAgICAgICAgTnVtYmVyIG9mIHNhbXBsZSBwb2ludHMgYW5kIHdlaWdodHMuIEl0IG11c3QgYmUgPj0gMS4KCiAgICBSZXR1cm5zCiAgICAtLS0tLS0tCiAgICB4IDogbmRhcnJheQogICAgICAgIDEtRCBuZGFycmF5IGNvbnRhaW5pbmcgdGhlIHNhbXBsZSBwb2ludHMuCiAgICB5IDogbmRhcnJheQogICAgICAgIDEtRCBuZGFycmF5IGNvbnRhaW5pbmcgdGhlIHdlaWdodHMuCgogICAgTm90ZXMKICAgIC0tLS0tCgogICAgLi4gdmVyc2lvbmFkZGVkOjogMS43LjAKCiAgICBUaGUgcmVzdWx0cyBoYXZlIG9ubHkgYmVlbiB0ZXN0ZWQgdXAgdG8gZGVncmVlIDEwMCwgaGlnaGVyIGRlZ3JlZXMgbWF5CiAgICBiZSBwcm9ibGVtYXRpYy4gVGhlIHdlaWdodHMgYXJlIGRldGVybWluZWQgYnkgdXNpbmcgdGhlIGZhY3QgdGhhdAoKICAgIC4uIG1hdGg6OiB3X2sgPSBjIC8gKEhlJ19uKHhfaykgKiBIZV97bi0xfSh4X2spKQoKICAgIHdoZXJlIDptYXRoOmBjYCBpcyBhIGNvbnN0YW50IGluZGVwZW5kZW50IG9mIDptYXRoOmBrYCBhbmQgOm1hdGg6YHhfa2AKICAgIGlzIHRoZSBrJ3RoIHJvb3Qgb2YgOm1hdGg6YEhlX25gLCBhbmQgdGhlbiBzY2FsaW5nIHRoZSByZXN1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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).