LyoKICogV2luZSBjb21tYW5kIHByb21wdAogKiBGcmVuY2ggTGFuZ3VhZ2UgU3VwcG9ydAogKgogKiBDb3B5cmlnaHQgMjAwMyBTeWx2YWluIFBldHJlb2xsZQogKiAKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKTEFOR1VBR0UgTEFOR19GUkVOQ0gsIFNVQkxBTkdfTkVVVFJBTAoKU1RSSU5HVEFCTEUKewogIFdDTURfQVRUUklCLCAiQWlkZSBkJyBBVFRSSUJcbiIKICBXQ01EX0NBTEwsCiJDQUxMIDxmaWNoaWVyYmF0Y2g+IHNlcnQg4CBhcHBlbGVyIHVuIGZpY2hpZXIgYmF0Y2ggXG5cCmRlcHVpcyB1biBhdXRyZSBmaWNoaWVyIGJhdGNoLiBRdWFuZCBsZSBmaWNoaWVyIGJhdGNoIHNvcnQsIGxlIGNvbnRy9GxlIHJldmllbnRcblwKYXUgZmljaGllciBxdWkgbCdhIGFwcGVs6S4gTGEgY29tbWFuZGUgQ0FMTCBkb2l0IOp0cmUgc3VpdmllIGRlcyBwYXJhbeh0cmVzXG5cCmRlIGxhIHByb2PpZHVyZSBhcHBlbOllLlxuXApcblwKTGVzIGNoYW5nZW1lbnRzIGRlIHLpcGVydG9pcmUgY291cmFudCwgZGUgdmFyaWFibGVzIGQnZW52aXJvbm1lbnQgZXRjLiBmYWl0c1xuXApkYW5zIHVuZSBwcm9j6WR1cmUgYXBwZWzpZSBzb250IHRyYW5zbWlzIOAgbCdhcHBlbGFudC5cbiIKCiAgV0NNRF9DRCwgICAgICJDaGFuZ2UgbGUgculwZXJ0b2lyZSBjb3VyYW50IHBhciBk6WZhdXRcbiIKICBXQ01EX0NIRElSLCAgIkNoYW5nZSBsZSBy6XBlcnRvaXJlIGNvdXJhbnQgcGFyIGTpZmF1dFxuIgoKICBXQ01EX0NMUywKIkNMUyBlZmZhY2UgbCfpY3JhblxuIgoKICBXQ01EX0NPUFksICAgIkFpZGUgZGUgQ09QWVxuIgogIFdDTURfQ1RUWSwgICAiQWlkZSBkZSBDVFRZXG4iCiAgV0NNRF9EQVRFLCAgICJBaWRlIGRlIERBVEVcbiIKICBXQ01EX0RFTCwgICAgIkFpZGUgZGUgREVMXG4iCiAgV0NNRF9ESVIsICAgICJBaWRlIGRlIERJUlxuIgoKICBXQ01EX0VDSE8sCiJFQ0hPIDxjaGHubmU+IGFmZmljaGUgPGNoYe5uZT4gc3VyIGxhIGNvbnNvbGUgY291cmFudGUuXG5cClxuXApFQ0hPIE9OIHByb3ZvcXVlIGwnYWZmaWNoYWdlIGRlIHRvdXRlcyBsZXMgY29tbWFuZGVzIHN1ciBsYSBjb25zb2xlXG5cCmF2YW50IGxldXIgZXjpY3V0aW9uLlxuXApcblwKRUNITyBPRkYgYW5udWxlIGwnZWZmZXQgZGUgdG91dCBwculj6WRlbnQgRUNITyBPTiAoRUNITyBlc3QgT0ZGIHBhclxuXApk6WZhdXQpLiBPbiBwZXV0IGVtcOpjaGVyIGwnYWZmaWNoYWdlIGRlIEVDSE8gT0ZGIGVuIGxlIGZhaXNhbnRcblwKcHLpY+lkZXIgZCd1biBzaWduZSBALlxuIgoKICBXQ01EX0VSQVNFLCAgIkFpZGUgZGUgRVJBU0VcbiIKCiAgV0NNRF9GT1IsCiJMYSBjb21tYW5kZSBGT1Igc2VydCDgIGV46WN1dGVyIHVuZSBjb21tYW5kZSBwb3VyIHVuIGdyb3VwZSBkZSBmaWNoaWVycy5cblwKXG5cClN5bnRheGU6IEZPUiAldmFyaWFibGUgSU4gKGdyb3VwZSkgRE8gY29tbWFuZGVcblwKXG5cCkxhIG7pY2Vzc2l06SBkZSBkb3VibGVyIGxlIHNpZ25lICclJyBlbiB1dGlsaXNhbnQgRk9SIGRhbnMgdW4gZmljaGllciBiYXRjaCBcblwKbidleGlzdGUgcGFzIGRhbnMgY21kLlxuIgoKICBXQ01EX0dPVE8sCiJMYSBjb21tYW5kZSBHT1RPIHRyYW5zZuhyZSBsJ2V46WN1dGlvbiDgIHVuIGF1dHJlIGxhYmVsIGRhbnMgdW4gXG5cCmZpY2hpZXIgYmF0Y2guXG5cClxuXApMZSBsYWJlbCBjaWJsZSBkZSBHT1RPIHBldXQg6nRyZSBsb25nIGRlIDI1NSBjYXJhY3TocmVzXG5cCm1haXMgbmUgcGV1dCBpbmNsdXJlIGQnZXNwYWNlcyAoY2VjaSBlc3QgZGlmZulyZW50IGQnYXV0cmVzIHN5c3TobWVzXG5cCmQnZXhwbG9pdGF0aW9uKS4gU2kgZGV1eCBvdSBwbHVzaWV1cnMgbGFiZWxzIGlkZW50aXF1ZXMgc29udCBkYW5zIGxlIG3qbWUgZmljaGllciBcblwKc2V1bCBsZSBwcmVtaWVyIHNlcmEgZXjpY3V06S4gRXNzYXllciBkZSBzYXV0ZXIg4CB1biBsYWJlbCBub24tZXhpc3RhbnRcblwKdGVybWluZSBsJ2V46WN1dGlvbiBkdSBmaWNoaWVyIGJhdGNoIC5cblwKXG5cCkdPVE8gbidhIHBhcyBkJ2VmZmV0IHNpIHV0aWxpc+kgaW50ZXJhY3RpdmVtZW50LlxuIgoKICBXQ01EX0hFTFAsICAgIkFmZmljaGUgdW5lIGJy6HZlIGFpZGUgc3VyIGxlcyBjb21tYW5kZXMgaW50ZXJuZXMgZGUgQ01EXG4iCgogIFdDTURfSUYsCiJJRiBlc3QgdXRpbGlz6SBwb3VyIGV46WN1dGVyIHVuZSBjb21tYW5kZSBkZSBmYedvbiBjb25kaXRpb25uZWxsZS5cblwKXG5cClN5bnRheGU6CUlGIFtOT1RdIEVYSVNUIG5vbWZpY2hpZXIgY29tbWFuZGVcblwKCQlJRiBbTk9UXSBjaGHubmUxPT1jaGHubmUyIGNvbW1hbmRlXG5cCgkJSUYgW05PVF0gRVJST1JMRVZFTCBub21icmUgY29tbWFuZGVcblwKXG5cCkRhbnMgbGEgZGV1eGnobWUgZm9ybWUgZGUgbGEgY29tbWFuZGUsIGNoYe5uZTEgZXQgY2hh7m5lMiBkb2l2ZW50IOp0cmUgXG5cCmVudHJlIGd1aWxsZW1ldHMgZG91Ymxlcy4gTGEgY29tcGFyYWlzb24gZXN0IGluc2Vuc2libGUg4CBsYSBjYXNzZS5cbiIKCiAgV0NNRF9MQUJFTCwgICJMQUJFTCBzZXJ0IOAgbW9kaWZpZXIgbGUgbm9tIGRlIHZvbHVtZSBkJ3VuIGRpc3F1ZS4gIFxuXApcblwKU3ludGF4ZTogTEFCRUwgW2xlY3RldXI6XVxuXApMYSBjb21tbmFuZGUgZGVtYW5kZXJhIGxlIG5vdXZlYXUgbm9tIGRlIHZvbHVtZSBwb3VyIGxlIGxlY3RldXIgZG9ubukuXG5cClZvdXMgcG91dmV6IGFmZmljaGVyIGxlIG5vbSBkZSB2b2x1bWUgYXZlYyBsYSBjb21tYW5kZSBWT0wuXG4iCgogIFdDTURfTUQsICAgICAiQ3LpZSAgbGUgculwZXJ0b2lyZSBkb25u6SBlbiBwYXJhbeh0cmUuXG4iCiAgV0NNRF9NS0RJUiwgICJDcullICBsZSBy6XBlcnRvaXJlIGRvbm7pIGVuIHBhcmFt6HRyZS5cbiIKICBXQ01EX01PVkUsCiJNT1ZFIGTpcGxhY2UgdW4gZmljaGllciwgdW4gZ3JvdXBlIGRlIGZpY2hpZXJzIG91IHVuIHLpcGVydG9pcmVcblwK4CB1biBhdXRyZSBlbmRyb2l0LiBTaSBsJ29iamV0IGTpcGxhY+kgZXN0IHVuIHLpcGVydG9pcmUgYWxvcnNcblwKdG91cyBsZXMgZmljaGllcnMgZXQgc291cy1y6XBlcnRvaXJlcyBkZSBsJ29iamV0IHNvbnQg6WdhbGVtZW50IGTpcGxhY+lzLlxuXApNT1ZFIOljaG91ZSBzaSBsJ2FuY2llbiBldCBsZSBub3V2ZWwgZW1wbGFjZW1lbnQgc29udCBzdXIgZGVzIGxlY3RldXJzIERPUyBkaWZm6XJlbnRzLlxuIgoKICBXQ01EX1BBVEgsCiJQQVRIIGFmZmljaGUgb3UgY2hhbmdlIGxlIGNoZW1pbiBkZSByZWNoZXJjaGUgZGUgY21kLlxuXApFbnRyZXIgUEFUSCBhZmZpY2hlcmEgbGUgculnbGFnZSBjb3VyYW50IGRlIFBBVEggKGF1IGTpcGFydFxuXApjJ2VzdCBsYSB2YWxldXIgZG9ubullIGRhbnMgbGUgZmljaGllciBkZSBjb25maWd1cmF0aW9uIHdpbmUpLiBQb3VyIGNoYW5nZXJcblwKbGUgculnbGFnZSwgZmFpdGVzIHN1aXZyZSBsYSBjb21tYW5kZSBQQVRIIGRlIGxhIG5vdXZlbGxlIHZhbGV1ci5cblwKSWwgZXN0IHBvc3NpYmxlIGRlIG1vZGlmaWVyIGxlIFBBVEggZW4gdXRpbGlzYW50IGxhIHZhcmlhYmxlIGQnZW52aXJvbm1lbnQgUEFUSCwgXG5cCnBhciBleGVtcGxlIDpcblwKCQlQQVRIICVQQVRIJTtjOlxcdGVtcCBcbiIKCiAgV0NNRF9QQVVTRSwKIlBBVVNFIGFmZmljaGUgdW4gbWVzc2FnZSBzdXIgbCfpY3JhbiA6ICdQcmVzc2V6IEVudHLpZSBwb3VyIGNvbnRpbnVlcidcblwKZXQgYXR0ZW5kIHF1ZSBsJ3V0aWxpc2F0ZXVyIHByZXNzZSBsYSB0b3VjaGUgRW50cullLiBQQVVTRSBlc3Qgc3VydG91dCB1dGlsaXPpIGRhbnNcblwKbGVzIGZpY2hpZXJzIGJhdGNocyBwb3VyIHBlcm1ldHRyZSDgIGwndXRpbGlzYXRldXIgZGUgbGlyZSBsYSBzb3J0aWUgZGVcblwKbGEgZGVybmnocmUgY29tbWFuZGUgYXZhbnQgcXUnZWxsZSBuZSBkaXNwYXJhaXNzZSBkZSBsJ+ljcmFuLlxuIgoKICBXQ01EX1BST01QVCwKIlBST01QVCBy6GdsZSBsJ2ludml0ZSBkZSBjb21tYW5kZS5cblwKXG5cCkxhIGNoYe5uZSBzdWl2YW50IGxhIGNvbW1hbmRlIFBST01QVCAoYW5kIHRoZSBzcGFjZSBpbW1lZGlhdGVseSBhZnRlcilcblwKYXBwYXJh7nQgYXUgZOlidXQgZGUgbGEgbGlnbmUgcXVhbmQgY21kIGF0dGVuZCB1bmUgZW50cullIHRleHRlLlxuXApcblwKTGVzIGNoYe5uZXMgZGUgY2FyYWN06HJlcyBzdWl2YW50ZXMgb250IHVuZSBzaWduaWZpY2F0aW9uIHNw6WNpYWxlIDpcblwKXG5cCiQkICAgIFNpZ25lIERvbGxhciAgICAgICAgJF8gICAgU2F1dCBkZSBsaWduZSAgICAgICAkYiAgICBTaWduZSBQaXBlICh8KVxuXAokZCAgICBEYXRlIGNvdXJhbnRlICAgICAgICRlICAgIEVzY2FwZSAgICAgICAgICAgICAgJGcgICAgU2lnbmUgPlxuXAokbCAgICBTaWduZSA8ICAgICAgICAgICAgICRuICAgIExlY3RldXIgY291cmFudCAgICAgJHAgICAgUulwZXJ0b2lyZSBjb3VyYW50XG5cCiRxICAgIFNpZ25lID0gICAgICAgICAgICAgJHQgICAgSGV1cmUgY291cmFudGUgICAgICAkdiAgICBWZXJzaW9uIGRlIGNtZFxuXApcblwKTm90ZXogcXUnZW50cmVyIGxhIGNvbW1hbmRlIFBST01QVCBzYW5zIHRleHRlIGQnaW52aXRlIHJlbWV0IGwnaW52aXRlXG5cCuAgbGEgdmFsZXVyIHBhciBk6WZhdXQsIHF1aSBlc3QgbGEgbGV0dHJlIGR1IGxlY3RldXIgY291cmFudCBzdWl2aWUgZGVcblwKc29uIHLpcGVydG9pcmUgY291cmFudCBldCBkJ3VuIHNpZ25lIHBsdXMtZ3JhbmQtcXVlICg+KS5cblwKKFRlbCBxdWUgbGEgY29tbWFuZGUgUFJPTVBUICRwJGcpLlxuXApcblwKTCdpbnZpdGUgcGV1dCBhdXNzaSDqdHJlIG1vZGlmaellIGVuIGNoYW5nZWFudCBsYSB2YXJpYWJsZSBkJ2Vudmlyb25tZW50IFBST01QVCxcblwKZG9uYyBsYSBjb21tYW5kZSAnU0VUIFBST01QVD10ZXh0ZScgYSBsZSBt6m1lIGVmZmV0IHF1ZSAnUFJPTVBUIHRleHRlJ1xuIgoKICBXQ01EX1JFTSwKIlVuZSBsaWduZSBkZSBjb21tYW5kZSBjb21tZW7nYW50IHBhciBSRU0gKHN1aXZpIGQndW5lIGVzcGFjZSkgbidlbmdlbmRyZSBcblwKYXVjdW5lIGFjdGlvbiwgZXQgcGV1dCBkb25jIHNlcnZpciBkZSBjb21tZW50YWlyZSBkYW5zIHVuIGZpY2hpZXIgYmF0Y2guXG4iCgogIFdDTURfUkVOLCAgICAiQWlkZSBkZSBSRU5cbiIKICBXQ01EX1JFTkFNRSwgIkFpZGUgZGUgUkVOQU1FXG4iCiAgV0NNRF9SRCwgICAgICJFZmZhY2UgbGUgculwZXJ0b2lyZSBkb25u6SBlbiBwYXJhbeh0cmUuXG4iCiAgV0NNRF9STURJUiwgICJFZmZhY2UgbGUgculwZXJ0b2lyZSBkb25u6SBlbiBwYXJhbeh0cmUuXG4iCgogIFdDTURfU0VULAoiU0VUIGFmZmljaGUgb3UgY2hhbmdlIGxlcyB2YXJpYWJsZXMgZCdlbnZpcm9ubmVtZW50IGRlIGNtZC5cblwKXG5cClNFVCBzYW5zIHBhcmFt6HRyZSBhZmZpY2hlIGwnZW52aXJvbm5lbWVudCBjb3VyYW50LlxuXApcblwKUG91ciBjcullciBldCBtb2RpZmllciB1bmUgdmFyaWFibGUgZCdlbnZpcm9ubmVtZW50IGxhIHN5bnRheGUgZXN0OlxuXApcblwKICAgICAgU0VUIDx2YXJpYWJsZT49PHZhbGV1cj5cblwKXG5cCm/5IDx2YXJpYWJsZT4gZXQgPHZhbGV1cj4gc29udCBkZXMgY2hh7m5lcyBkZSBjYXJhY3TocmVzLiBJbCBlc3Qg4CBub3RlciBxdWUgPHZhcmlhYmxlPlxuXApuZSBwZXV0IGNvbnRlbmlyIGQnZXNwYWNlLCBldCBxdSdpbCBuZSBkb2l0IHBhcyB5IGVuIGF2b2lyIG5vbiBwbHVzIGF1dG91ciBkdSBzaWduZSBkJ+lnYWxpdOkuXG5cClxuXApTb3VzIFdpbmUsIGwnZW52aXJvbm1lbnQgZHUgc3lzdOhtZSBo9HRlIGVzdFxuXAppbmNsdXMgZGFucyBsJ2Vudmlyb25ubWVudCBXaW4zMiwgaWwgeSBhdXJhIHBhciBjb25z6XF1ZW50IGfpbulyYWxlbWVudFxuXApiaWVuIHBsdXMgZGUgdmFsZXVycyBxdWUgZGFucyB1biBzeXN06G1lIFdpbjMyIG5hdGlmLiBOb3RleiBxdSdpbFxuXApuJ2VzdCBwYXMgcG9zc2libGUgZGUgbW9kaWZpZXIgbCdlbnZpcm9ubmVtZW50IGR1IHN5c3TobWUgZCdleHBsb2l0YXRpb24gZGFucyBjbWQuXG4iCgogIFdDTURfU0hJRlQsCiJTSElGVCBlc3QgdXRpbGlz6SBkYW5zIHVuIGZpY2hpZXIgYmF0Y2ggcG91ciBlbmxldmVyIHVuIHBhcmFt6HRyZSBkZSBsYVxuXApsaXN0ZSwgYWluc2kgbGUgcGFyYW3odHJlIDIgZGV2aWVudCBwYXJhbeh0cmUgMSBldCBhaW5zaSBkZSBzdWl0ZS4gSWwgZXN0IHNhbnMgZWZmZXRcblwKcydpbCBlc3QgYXBwZWzpIGRlcHVpcyBsYSBsaWduZSBkZSBjb21tYW5kZS5cbiIKCiAgV0NNRF9USU1FLCAgICJBaWRlIGRlIFRJTUVcbiIKCiAgV0NNRF9USVRMRSwKIlLoZ2xlIGxlIHRpdHJlIGRlIGxhIGZlbup0cmUgcG91ciBsYSBzZXNzaW9uIGNtZCwgc3ludGF4ZTogVElUTEUgW2NoYe5uZV1cbiIKCiAgV0NNRF9UWVBFLAoiVFlQRSA8bm9tZmljaGllcj4gYWZmaWNoZSA8bm9tZmljaGllcj4gc3VyIGxhIGNvbnNvbGUgKG91IGFpbGxldXJzXG5cCnNpIHJlZGlyaWfpKS4gQXVjdW4gdGVzdCBuJ2VzdCBmYWl0IHF1YW5kIGF1IGZvcm1hdCB0ZXh0ZSBkdSBmaWNoaWVyLlxuIgoKICBXQ01EX1ZFUklGWSwKIlZFUklGWSBlc3QgdXRpbGlz6SBwb3VyIHBvc2l0aW9ubmVyLCBlZmZhY2VyIG91IHRlc3RlciBsZSBmbGFnIGRlIHbpcmlmaWNhdGlvbi5cblwKTGVzIGZvcm1lcyBzdWl2YW50ZXMgc29udCBjb3JyZWN0ZXMgOlxuXApWRVJJRlkgT04JUG9zaXRpb25uZSBsZSBmbGFnXG5cClZFUklGWSBPRkYJRWZmYWNlIGxlIGZsYWdcblwKVkVSSUZZXHRcdEFmZmljaGUgbCfpdGF0IE9OIG91IE9GRiBkdSBmbGFnLlxuXApcblwKTGUgZmxhZyBkZSB2ZXJpZmljYXRpb24gbidhIHBhcyBkZSBmb25jdGlvbiBkYW5zIFdpbmUuXG4iCgogIFdDTURfVkVSLAoiVkVSIGFmZmljaGUgbGEgdmVyc2lvbiBkZSBjbWQgYWN0dWVsbGVtZW50IGVuIG3pbW9pcmUuXG4iCgogIFdDTURfVk9MLCAiXHRcdEFmZmljaGUgbGUgbm9tIGRlIHZvbHVtZSBkJ3VuIGxlY3RldXIgZGUgZGlzcXVlXG4iCgogIFdDTURfTU9SRSwgICAiTU9SRSBkaXNwbGF5cyBvdXRwdXQgb2YgZmlsZXMgb3IgcGlwZWQgaW5wdXQgaW4gcGFnZXMuXG4iCgogIFdDTURfRVhJVCwKIkVYSVQgdGVybWluZSBsYSBzZXNzaW9uIGRlIGxpZ25lIGRlIGNvbW1hbmRlIGV0IHJldG91cm5lXG5cCmF1IHN5c3TobWUgZCdleHBsb2l0YXRpb24gb3UgYXUgc2hlbGwgb/kgdm91cyBhdmV6IGludm9xdekgY21kLlxuIgoKICAxMDAwLCAiTGVzIGNvbW1hbmRlcyBpbnRlcm5lcyBDTUQgc29udDpcblwKQVRUUklCXHRcdEFmZmljaGUgb3UgY2hhbmdlIGxlcyBhdHRyaWJ1dHMgZGUgZmljaGllcnMgRE9TXG5cCkNBTExcdFx0SW52b3F1ZSB1biBmaWNoaWVyIGJhdGNoIOAgbCdpbnTpcmlldXIgZCd1biBhdXRyZVxuXApDRCAoQ0hESVIpXHRDaGFuZ2UgbGUgculwZXJ0b2lyZSBjb3VyYW50IHBhciBk6WZhdXRcblwKQ0xTXHRcdEVmZmFjZSBsJ+ljcmFuXG5cCkNPUFlcdFx0Q29waWUgdW4gb3UgcGx1c2lldXJzIGZpY2hpZXJzXG5cCkNUVFlcdFx0Q2hhbmdlIGxlIHDpcmlwaOlyaXF1ZSBkJ2VudHLpZS9zb3J0aWVcblwKREFURVx0XHRBZmZpY2hlIG91IGNoYW5nZSBsYSBkYXRlIHN5c3TobWVcblwKREVMIChFUkFTRSlcdEVmZmFjZSB1biBmaWNoaWVyIG91IHVuIGdyb3VwZSBkZSBmaWNoaWVyc1xuXApESVJcdFx0TGlzdGUgbGUgY29udGVudSBkJ3VuIHLpcGVydG9pcmVcblwKRUNIT1x0XHRBZmZpY2hlIGR1IHRleHRlIHN1ciBsYSBjb25zb2xlXG5cCkhFTFBcdFx0QWZmaWNoZSBkZSBicmVmcyBk6XRhaWxzIHN1ciBsJ3V0aWxpc2F0aW9uIGQndW5lIGNvbW1hbmRlXG5cCk1EIChNS0RJUilcdENy6WUgdW4gculwZXJ0b2lyZVxuXApNT1JFXHRcdERpc3BsYXkgb3V0cHV0IGluIHBhZ2VzXG5cCk1PVkVcdFx0ROlwbGFjZSB1biBmaWNoaWVyLCB1biBncm91cGUgZGUgZmljaGllcnMgb3UgdW4gculwZXJ0b2lyZVxuXApQQVRIXHRcdFLoZ2xlIG91IGFmZmljaGUgbGUgY2hlbWluIGRlIHJlY2hlcmNoZVxuXApQUk9NUFRcdFx0Q2hhbmdlIGwnaW52aXRlIGRlIGNvbW1hbmRlXG5cClJFTiAoUkVOQU1FKVx0UmVub21tZSB1biBmaWNoaWVyLCB1biBncm91cGUgZGUgZmljaGllcnMgb3UgdW4gculwZXJ0b2lyZVxuXApSRCAoUk1ESVIpXHRFZmZhY2UgdW4gculwZXJ0b2lyZVxuXApTRVRcdFx0UuhnbGUgb3UgYWZmaWNoZSBsZXMgdmFyaWFibGVzIGQnZW52aXJvbm1lbnRcblwKVElNRVx0XHRS6GdsZSBvdSBhZmZpY2hlIGwnaGV1cmUgc3lzdOhtZSBjb3VyYW50ZVxuXApUSVRMRVx0XHRS6GdsZSBsZSB0aXRyZSBkZSBsYSBmZW7qdHJlIHBvdXIgbGEgc2Vzc2lvbiBDTURcblwKVFlQRVx0XHRBZmZpY2hlIGxlIGNvbnRlbnUgZCd1biBmaWNoaWVyIHRleHRlXG5cClZFUlx0XHRBZmZpY2hlIGxhIHZlcnNpb24gZGUgY21kIGFjdHVlbGxlbWVudCBlbiBt6W1vaXJlLlxuXApWT0xcdFx0QWZmaWNoZSBsZSBub20gZGUgdm9sdW1lIGQndW4gbGVjdGV1ciBkZSBkaXNxdWVcblwKRVhJVFx0XHRRdWl0dGUgQ01EXG5cblwKRW50cmV6IEhFTFAgPGNvbW1hbmRlPiBwb3VyIHBsdXMgZCdpbmZvcm1hdGlvbnMgc3VyIGxlcyBjb21tYW5kZXMgY2ktZGVzc3VzXG4iCgogIFdDTURfQ09ORklSTSwgIkFyZSB5b3Ugc3VyZSIKICBXQ01EX1lFUywgIlkiCiAgV0NNRF9OTywgIk4iCiAgV0NNRF9OT0FTU09DLCAiRmlsZSBhc3NvY2lhdGlvbiBtaXNzaW5nIGZvciBleHRlbnNpb24gJXNcbiIKICBXQ01EX05PRlRZUEUsICJObyBvcGVuIGNvbW1hbmQgYXNzb2NpYXRlZCB3aXRoIGZpbGUgdHlwZSAnJXMnXG4iCiAgV0NNRF9PVkVSV1JJVEUsICJPdmVyd3JpdGUgJXMiCiAgV0NNRF9NT1JFU1RSLCAiTW9yZS4uLiIKICBXQ01EX1RSVU5DQVRFRExJTkUsICJMaW5lIGluIEJhdGNoIHByb2Nlc3NpbmcgcG9zc2libHkgdHJ1bmNhdGVkLiBVc2luZzpcbiIKICBXQ01EX05ZSSwgIk5vdCBZZXQgSW1wbGVtZW50ZWRcblxuIgogIFdDTURfTk9BUkcsICJBcmd1bWVudCBtaXNzaW5nXG4iCiAgV0NNRF9TWU5UQVhFUlIsICJTeW50YXggZXJyb3JcbiIKICBXQ01EX0ZJTEVOT1RGT1VORCwgIiVzIDogRmlsZSBOb3QgRm91bmRcbiIKICBXQ01EX05PQ01ESEVMUCwgIk5vIGhlbHAgYXZhaWxhYmxlIGZvciAlc1xuIgogIFdDTURfTk9UQVJHRVQsICJUYXJnZXQgdG8gR09UTyBub3QgZm91bmRcbiIKICBXQ01EX0NVUlJFTlREQVRFLCAiQ3VycmVudCBEYXRlIGlzICVzXG4iCiAgV0NNRF9DVVJSRU5UVElNRSwgIkN1cnJlbnQgVGltZSBpcyAlc1xuIgogIFdDTURfTkVXREFURSwgIkVudGVyIG5ldyBkYXRlOiAiCiAgV0NNRF9ORVdUSU1FLCAiRW50ZXIgbmV3IHRpbWU6ICIKICBXQ01EX01JU1NJTkdFTlYsICJFbnZpcm9ubWVudCB2YXJpYWJsZSAlcyBub3QgZGVmaW5lZFxuIgogIFdDTURfUkVBREZBSUwsICJGYWlsZWQgdG8gb3BlbiAnJXMnXG4iCiAgV0NNRF9DQUxMSU5TQ1JJUFQsICJDYW5ub3QgY2FsbCBiYXRjaCBsYWJlbCBvdXRzaWRlIG9mIGEgYmF0Y2ggc2NyaXB0XG4iCiAgV0NNRF9BTEwsICJBIgogIFdDTURfREVMUFJPTVBULCAiJXMsIERlbGV0ZSIKICBXQ01EX0VDSE9QUk9NUFQsICJFY2hvIGlzICVzXG4iCiAgV0NNRF9WRVJJRllQUk9NUFQsICJWZXJpZnkgaXMgJXNcbiIKICBXQ01EX1ZFUklGWUVSUiwgIlZlcmlmeSBtdXN0IGJlIE9OIG9yIE9GRlxuIjsKICBXQ01EX0FSR0VSUiwgIlBhcmFtZXRlciBlcnJvclxuIgogIFdDTURfVk9MVU1FREVUQUlMLCAiVm9sdW1lIGluIGRyaXZlICVjIGlzICVzXG5Wb2x1bWUgU2VyaWFsIE51bWJlciBpcyAlMDR4LSUwNHhcblxuIgogIFdDTURfVk9MVU1FUFJPTVBULCAiVm9sdW1lIGxhYmVsICgxMSBjaGFyYWN0ZXJzLCBFTlRFUiBmb3Igbm9uZSk/IgogIFdDTURfTk9QQVRILCAiUEFUSCBub3QgZm91bmRcbiIKICBXQ01EX0FOWUtFWSwiUHJlc3MgUmV0dXJuIGtleSB0byBjb250aW51ZTogIgogIFdDTURfQ09OU1RJVExFLCJXaW5lIENvbW1hbmQgUHJvbXB0IgogIFdDTURfVkVSU0lPTiwiQ01EIFZlcnNpb24gJXNcblxuIgogIFdDTURfTU9SRVBST01QVCwgIk1vcmU/ICIKfQo=