LyoKICogKEdlcm1hbikgUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDQgTWljaGFlbCBGcml0c2NoZXIKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKTEFOR1VBR0UgTEFOR19HRVJNQU4sIFNVQkxBTkdfTkVVVFJBTAoKLyoKICogTWVudQogKi8KCgpJRFJfUkVHRURJVF9NRU5VIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFBPUFVQICImUmVnaXN0cnkiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJSZWdpc3RyeSAmaW1wb3J0aWVyZW4uLi4iLCAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUKCiAgICAgICAgTUVOVUlURU0gIlJlZ2lzdHJ5ICZleHBvcnRpZXJlbi4uLiIsICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQoKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJk1pdCBOZXR6d2Vya3JlZ2lzdHJ5IHZlcmJpbmRlbi4uLiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICImVm9uIE5ldHp3ZXJrcmVnaXN0cnkgdHJlbm5lbi4uLiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRHJ1Y2tlblx0U3RyZytQIiwgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9QUklOVCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZCZWVuZGVuIiwgICAgICAgICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX0VYSVQKICAgIEVORAogICAgUE9QVVAgIiZCZWFyYmVpdGVuIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJsRuZGVybiIsICAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBQT1BVUCAiJk5ldSIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiJlNjaGz8c3NlbCIsICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICImWmVpY2hlbmZvbGdlIiwgICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImQmlu5HJ3ZXJ0IiwgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImRFdPUkQtV2VydCIsICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZNZWhydGVpbGlnZSBaZWljaGVuZm9sZ2UiLCAgSURfRURJVF9ORVdfTVVMVElfU1RSSU5HVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkz2c2NoZW5cdEVudGYiLCAgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJlVtYmVuZW5uZW4iLCAgICAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiU2NobPxzc2VsbmFtZW4gJmtvcGllcmVuIiwgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU3VjaGVuXHRTdHJnK0YiLCAgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICImV2VpdGVyc3VjaGVuXHRGMyIsICAgICAgICAgICAgICBJRF9FRElUX0ZJTkRORVhULCBHUkFZRUQKICAgIEVORAogICAgUE9QVVAgIiZBbnNpY2h0IgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiU3RhdHVzJmxlaXN0ZSIsICAgICAgICAgICAgICAgICAgSURfVklFV19TVEFUVVNCQVIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlRyZW5uZW4iLCAgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19TUExJVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQWt0dWFsaXNpZXJlblx0RjUiLCAgICAgICAgICAgICBJRF9WSUVXX1JFRlJFU0gKICAgIEVORAogICAgUE9QVVAgIiZGYXZvcml0ZW4iCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJadSBkZW4gRmF2b3JpdGVuICZoaW56dWb8Z2VuLi4uIiwgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMKICAgICAgICBNRU5VSVRFTSAiVm9uIGRlbiBGYXZvcml0ZW4gJmz2c2NoZW4uLi4iLCAgICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFCiAgICBFTkQKICAgIFBPUFVQICImSGlsZmUiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImSGlsZmV0aGVtZW5cdEYxIiwgICAgICAgICAgICAgICBJRF9IRUxQX0hFTFBUT1BJQ1MKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJtxiZXIgUmVnaXN0cnkgRWRpdG9yIiwgICAgICAgICAgSURfSEVMUF9BQk9VVAogICAgRU5ECkVORAoKSURSX1BPUFVQX01FTlVTIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICBQT1BVUCAiIgogIEJFR0lOCglNRU5VSVRFTSAiJsRuZGVybiIsICAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKCU1FTlVJVEVNICJCaW7kcmUgRGF0ZW4g5G5kZXJuIiwgICAgICAgICAgICBJRF9FRElUX01PRElGWV9CSU4KCU1FTlVJVEVNIFNFUEFSQVRPUgoJTUVOVUlURU0gIiZM9nNjaGVuXHRFbnRmIiwgICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCglNRU5VSVRFTSAiJlVtYmVubmVuZW4iLCAgICAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICBFTkQKICBQT1BVUCAiIgogIEJFR0lOCiAgICAgICAgUE9QVVAgIiZOZXUiCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIiZTY2hs/HNzZWwiLCAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiJlplaWNoZW5mb2xnZSIsICAgICAgICAgICAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkJpbuRyd2VydCIsICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkRXT1JEIFdlcnQiLCAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImTWVocnRlaWxpZ2UgWmVpY2hlbmZvbGdlIiwgIElEX0VESVRfTkVXX01VTFRJX1NUUklOR1ZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZM9nNjaGVuXHRFbnRmIiwgICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIiZVbWJlbmVubmVuIiwgICAgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZFeHBvcnRpZXJlbi4uLiIsICAgICAgICAgICAgICAgIElEX0VESVRfRVhQT1JUCiAgICAgICAgTUVOVUlURU0gIlNjaGz8c3NlbG5hbWVuICZrb3BpZXJlbiIsICAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlN1Y2hlblx0U3RyZytGIiwgICAgICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICBFTkQKRU5ECgoKLyoKICogRGlhbG9nCiAqLwoKSUREX0VYUE9SVF9URU1QTEFURSBESUFMT0cgRElTQ0FSREFCTEUgIDUwLCA1MCwgMjc4LCA1NApTVFlMRSBEU18zRExPT0sgfCBEU19DT05UUk9MIHwgV1NfQ0hJTEQgfCBXU19WSVNJQkxFIHwgV1NfQ0xJUFNJQkxJTkdTIHwKICAgIFdTX0JPUkRFUgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAiUmVnaXN0cnkgJmV4cG9ydGllcmVuIiwgSURDX0VYUE9SVF9CQVNFLCA2LCA2LCAyNjYsIDQyLCBXU19HUk9VUAogICAgQVVUT1JBRElPQlVUVE9OICImQWxsZXMiLCBJRENfRVhQT1JUX0FMTCwgMTIsIDE1LCAyNDQsIDEyCiAgICBBVVRPUkFESU9CVVRUT04gIkF1c2dld+RobHRlciAmWndlaWc6IiwgSURDX0VYUE9SVF9TRUxFQ1RFRCwgMTIsIDMwLCA5MCwgMTIKICAgIEVESVRURVhUIElEQ19FWFBPUlRfUEFUSCwgMTAyLCAzMCwgMTY0LCAxMgpFTkQKCklERF9GSU5EIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDg1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJTdWNoZW4iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiU3VjaGVuOiIsSURDX1NUQVRJQyw1LDcsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw0MCw1LDExMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBMVEVYVCAgICAgICAgICAgIlN1Y2hlbiBuYWNoOiIsSURDX1NUQVRJQyw1LCAyMiwgMTE5LCA4CiAgICBDSEVDS0JPWCAgICAgICAgIlNjaGz8c3NlbG4iLCBJRENfRklORF9LRVlTLCA1LCAzNCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgV1NfR1JPVVAgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAiV2VydGVuIiwgSURDX0ZJTkRfVkFMVUVTLCA1LCA0NiwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBDSEVDS0JPWCAgICAgICAgIkRhdGVuIiwgSURDX0ZJTkRfQ09OVEVOVCwgNSwgNTgsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgQ0hFQ0tCT1ggICAgICAgICJLb21wbGV0dGUgWmVpY2hlbmZvbGdlIHZlcmdsZWljaGVuIiwgSURDX0ZJTkRfV0hPTEUsIDUsIDcwLCAxNTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBERUZQVVNIQlVUVE9OICAgIlN1Y2hlbiIsSURPSywxNjAsNSw0NSwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJBYmJyZWNoZW4iLElEQ0FOQ0VMLDE2MCwyMiw0NSwxMSwgV1NfR1JPVVAKRU5ECgpJRERfQURERkFWT1JJVEUgRElBTE9HIERJU0NBUkRBQkxFICAyMiwxNywgMjEwLCA1NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiWnUgZGVuIEZhdm9yaXRlbiBoaW56dWb8Z2VuIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAiTkFNRToiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAiT0siLElET0ssMTEwLDQwLDQ1LDExLCBXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgIkFiYnJlY2hlbiIsSURDQU5DRUwsMTYwLDQwLDQ1LDExLCBXU19HUk9VUApFTkQKCklERF9ERUxGQVZPUklURSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLDE3LCAyMTAsIDkwClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJWb24gZGVuIEZhdm9yaXRlbiBlbnRmZXJuZW4iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICJOYW1lOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIExJU1RCT1ggICAgICAgIElEQ19OQU1FX0xJU1QsNSwxNSwyMDAsNTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBMQlNfU09SVCB8IExCU19OT0lOVEVHUkFMSEVJR0hUIHwgV1NfVlNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgIk9LIixJRE9LLDExMCw3Myw0NSwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgIkFiYnJlY2hlbiIsSURDQU5DRUwsMTYwLDczLDQ1LDExLFdTX0dST1VQCkVORAoKSUREX0VESVRfU1RSSU5HIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJaZWljaGVuZm9sZ2Ug5G5kZXJuIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIk5hbWU6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwgfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJEYXRlbjoiLElEQ19TVEFUSUMsNSwzMCwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTEwLDYwLDQ1LDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIkFiYnJlY2hlbiIsSURDQU5DRUwsMTYwLDYwLDQ1LDExLFdTX0dST1VQCkVORAoKSUREX0VESVRfRFdPUkQgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgMTAwClNUWUxFIERTX01PREFMRlJBTUUgfCBEU19OT0lETEVNU0cgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJEV09SRC1XZXJ0IGVkaXRpZXJlbiIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJOYW1lOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMIHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiRGF0ZW46IixJRENfU1RBVElDLDUsMzAsOTAsOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsOTAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIEdST1VQQk9YICAgICAgICAiQmFzaXMiLCBJRENfRFdPUkRfQkFTRSwgMTIwLCAzMCwgODUsIDM3LCBCU19HUk9VUEJPWAogICAgQVVUT1JBRElPQlVUVE9OICJIZXhhZGV6aW1hbCIsIElEQ19EV09SRF9IRVgsIDEzMCwgNDAsIDYwLCAxMCwgV1NfVEFCU1RPUAogICAgQVVUT1JBRElPQlVUVE9OICJEZXppbWFsIiwgSURDX0RXT1JEX0RFQywgMTMwLCA1MiwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDExMCw4MCw0NSwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJBYmJyZWNoZW4iLElEQ0FOQ0VMLDE2MCw4MCw0NSwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX0JJTkFSWSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTX05PSURMRU1TRyB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkJpbuRyZW4gV2VydCBlZGl0aWVyZW4iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTmFtZToiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTCB8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIkRhdGVuOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIENPTlRST0wgICAgICAgICAiIixJRENfVkFMVUVfREFUQSwiSGV4RWRpdCIsV1NfVEFCU1RPUCw0LDQwLDE2MCw0MAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxMTAsODUsNDUsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiQWJicmVjaGVuIixJRENBTkNFTCwxNjAsODUsNDUsMTEsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9NVUxUSV9TVFJJTkcgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgMTc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJNZWhydGVpbGlnZSBaZWljaGVuZm9sZ2UgZWRpdGllcmVuIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIk5hbWU6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEx8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIkRhdGVuOiIsSURDX1NUQVRJQyw1LDMwLDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCwyMDAsMTEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgV1NfSFNDUk9MTCB8IFdTX1ZTQ1JPTEwgfCBFU19NVUxUSUxJTkUgfCBFU19XQU5UUkVUVVJOCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDExMCwxNjAsNDUsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiQWJicmVjaGVuIixJRENBTkNFTCwxNjAsMTYwLDQ1LDExLFdTX0dST1VQCkVORAoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19MSVNUX0NPTFVNTl9OQU1FICAgICJOYW1lIgogICAgSURTX0xJU1RfQ09MVU1OX1RZUEUgICAgIlR5cCIKICAgIElEU19MSVNUX0NPTFVNTl9EQVRBICAgICJEYXRlbiIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0FQUF9USVRMRSAgICAgICAgICAgIlJlZ2lzdHJ5LUVkaXRvciIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfTUVOVSAgICAgICAgIkJlZmVobGUgenVtIEJlYXJiZWl0ZW4gZGVyIGdhbnplbiBSZWdpc3RyeSIKICAgIElEX0VESVRfTUVOVSAgICAgICAgICAgICJCZWZlaGxlIHp1bSDEbmRlcm4gdm9uIFNjaGz8c3NlbG4gb2RlciBXZXJ0ZW4iCiAgICBJRF9WSUVXX01FTlUgICAgICAgICAgICAiQmVmZWhsZSB6dW0gQW5wYXNzZW4gZGVzIEZlbnN0ZXJzIgogICAgSURfRkFWT1JJVEVTX01FTlUgICAgICAgIkJlZmVobGUgZvxyIGRpZSBGYXZvcml0ZW4iCiAgICBJRF9IRUxQX01FTlUgICAgICAgICAgICAiQmVmZWhsZSB6dW0gQW56ZWlnZW4gdm9uIEhpbGZlIG9kZXIgSW5mb3JtYXRpb25lbiD8YmVyIGRhcyBQcm9ncmFtbSIKICAgIElEX0VESVRfTkVXX01FTlUgICAgICAgICJCZWZlaGxlIHp1bSBFcnN0ZWxsZW4gdm9uIG5ldWVuIFNjaGz8c3NlbG4gb2RlciBEYXRlbiIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfRURJVF9NT0RJRlkgICAgICAgICAgIsRuZGVydCBkaWUgRGF0ZW4gZWluZXMgV2VydGVzIgogICAgSURfRURJVF9ORVdfS0VZICAgICAgICAgIkb8Z3QgZWluZW4gbmV1ZW4gU2NobPxzc2VsIGhpbnp1IgogICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUgIkb8Z3QgZWluZSBuZXVlIFplaWNoZW5mb2xnZSBoaW56dSAiCiAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRSAiRvxndCBlaW5lbiBuZXVlbiBCaW7kcndlcnQgaGluenUiCiAgICBJRF9FRElUX05FV19EV09SRFZBTFVFICAiRvxndCBlaW5lbiBuZXVlbiBEV09SRC1XZXJ0IGhpbnp1IgogICAgSURfRURJVF9ORVdfTVVMVElfU1RSSU5HVkFMVUUgIkb8Z3QgZWluZSBuZXVlIG1laHJ0ZWlsaWdlIFplaWNoZW5mb2xnZSBoaW56dSIKICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRSAiSW1wb3J0aWVydCBlaW5lIFRleHRkYXRlaSBpbiBkaWUgUmVnaXN0cnkiCiAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBvcnRpZXJ0IFRlaWxlIG9kZXIgZGllIGdhbnplIFJlZ2lzdHJ5IGluIGVpbmUgVGV4dGRhdGVpIgogICAgSURfUkVHSVNUUllfQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZlcmJpbmRldCB6dSBkZXIgUmVnaXN0cnkgZWluZXMgRnJlbWRjb21wdXRlcnMiCiAgICBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVHJlbm50IGRpZSBWZXJiaW5kdW5nIHp1IGRlciBSZWdpc3RyeSBlaW5lcyBGcmVtZGNvbXB1dGVycyIKICAgIElEX1JFR0lTVFJZX1BSSU5UICAgICAgICJEcnVja3QgVGVpbGUgb2RlciBkaWUgZ2VzYW10ZSBSZWdpc3RyeSBhdXMiCi8qICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICLWZmZuZXQgZGllIEhpbGZlIiAqLwogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIlplaWd0IFByb2dyYW1tbmFtZSwgVmVyc2lvbiB1bmQgQ29weXJpZ2h0IGFuIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9FWElUICAgICAgICAiQmVlbmRldCBkZW4gUmVnaXN0cnktRWRpdG9yIgogICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTICJG/Gd0IFNjaGz8c3NlbCB6dSBkZW4gRmF2b3JpdGVuIGhpbnp1IgogICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFICJM9nNjaHQgU2NobPxzc2VsIHZvbiBkZW4gRmF2b3JpdGVuIgogICAgSURfVklFV19TVEFUVVNCQVIgICAgICAgIlplaWd0IG9kZXIgdmVyc3RlY2t0IGRpZSBTdGF0dXNsZWlzdGUiCiAgICBJRF9WSUVXX1NQTElUICAgICAgICAgICAixG5kZXJ0IGRpZSBQb3NpdGlvbiBkYXMgRmVuc3RlcnRlaWxlcnMiCiAgICBJRF9WSUVXX1JFRlJFU0ggICAgICAgICAiQWt0dWFsaXNpZXJ0IGRhcyBGZW5zdGVyIgogICAgSURfRURJVF9ERUxFVEUgICAgICAgICAgIkz2c2NodCBkaWUgQXVzd2FobCIKICAgIElEX0VESVRfUkVOQU1FICAgICAgICAgICJCZW5lbm50IGRpZSBBdXN3YWhsIHVtIgogICAgSURfRURJVF9DT1BZS0VZTkFNRSAgICAgIktvcGllcnQgZGVuIFNjaGz8c3NlbG5hbWVuIGluIGRpZSBad2lzY2hlbmFibGFnZSIKICAgIElEX0VESVRfRklORCAgICAgICAgICAgICJGaW5kZXQgZWluZSBaZWljaGVuZm9sZ2UgaW4gZWluZW0gU2NobPxzc2VsLCBlaW5lbSBOYW1lbiBvZGVyIGluIERhdGVuIgogICAgSURfRURJVF9GSU5ETkVYVCAgICAgICAgIkZpbmRldCBkaWUgbuRjaHN0ZSBaZWljaGVuZm9sZ2UiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19FUlJPUiAgICAgICAgICAgICAgICJGZWhsZXIiCiAgICBJRFNfQkFEX0tFWSAgICAgICAgICAgICAiS2FubiBkZW4gU2NobPxzc2VsICclcycgbmljaHQgbGVzZW4iCiAgICBJRFNfQkFEX1ZBTFVFICAgICAgICAgICAiS2FubiBkZW4gV2VydCAnJXMnIG5pY2h0IGxlc2VuIgogICAgSURTX1VOU1VQUE9SVEVEX1RZUEUgICAgIkthbm4gU2NobPxzc2VsIHZvbiBkaWVzZW0gVHlwICglbGQpIG5pY2h0IORuZGVybiIKICAgIElEU19UT09fQklHX1ZBTFVFICAgICAgICJEZXIgV2VydCBpc3QgenUgZ3Jv3yAoJWxkKSIKICAgIElEU19ERUxFVEVfQk9YX1RJVExFICAgICJCaXR0ZSBiZXN05HRpZ2VuIgogICAgSURTX0RFTEVURV9CT1hfVEVYVCAgICAgIldvbGxlbiBTaWUgJyVzJyB3aXJrbGljaCBs9nNjaGVuPyIKICAgIElEU19ORVdLRVkgICAgICAgICAgICAgICJOZXVlciBTY2hs/HNzZWwgIyVkIgogICAgSURTX05FV1ZBTFVFICAgICAgICAgICAgIk5ldWVyIFdlcnQgIyVkIgogICAgSURTX05PVEZPVU5EICAgICAgICAgICAgIlN1Y2hmb2xnZSAnJXMnIHd1cmRlIG5pY2h0IGdlZnVuZGVuLiIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0ZJTEVESUFMT0dfSU1QT1JUX1RJVExFICAgIlJlZ2lzdHJ5LURhdGVpIGltcG9ydGllcmVuIgogICAgSURTX0ZJTEVESUFMT0dfRVhQT1JUX1RJVExFICAgIlJlZ2lzdHJ5LURhdGVpIGV4cG9ydGllcmVuIgogICAgSURTX0ZJTEVESUFMT0dfRklMVEVSICAgICAgICAgIlJlZ2lzdHJ5LURhdGVpZW5cMCoucmVnXDBXaW45eC9OVDQgUmVnaXN0cnktRGF0ZWllbiAoUkVHRURJVDQpXDAqLnJlZ1wwQWxsZSBEYXRlaWVuICgqLiopXDAqLipcMFwwIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfUkVHSVNUUllfUk9PVF9OQU1FICAgICAgICAgICAiQXJiZWl0c3BsYXR6IgogICAgSURTX1JFR0lTVFJZX0RFRkFVTFRfVkFMVUUgICAgICAgIihTdGFuZGFyZCkiCiAgICBJRFNfUkVHSVNUUllfVkFMVUVfTk9UX1NFVCAgICAgICAiKFdlcnQgbmljaHQgZ2VzZXR6dCkiCiAgICBJRFNfUkVHSVNUUllfVkFMVUVfQ0FOVF9ESVNQTEFZICAiKGthbm4gV2VydCBuaWNodCBkYXJzdGVsbGVuKSIKICAgIElEU19SRUdJU1RSWV9VTktOT1dOX1RZUEUgICAgICAgICIodW5iZWthbm50ICVkKSIKRU5ECgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKgogKiBURVhUSU5DTFVERQogKi8KCjEgVEVYVElOQ0xVREUgRElTQ0FSREFCTEUKQkVHSU4KICAgICJyZXNvdXJjZS5oXDAiCkVORAoKCgovKgogKiBTdHJpbmcgVGFibGUKICovCgovKgogKlNUUklOR1RBQkxFIERJU0NBUkRBQkxFCiAqQkVHSU4KICogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgItZmZm5ldCBkaWUgSGlsZmUuIgogKiAgICBJRF9IRUxQX0FCT1VUICAgICAgICAgICAiWmVpZ3QgUHJvZ3JhbW1uYW1lLCBWZXJzaW9uIHVuZCBDb3B5cmlnaHQgYW4iCiAqRU5ECiAqLwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwo=