LyoKICogUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDMsMjAwNCwyMDA3LDIwMDggSm9z6SBNYW51ZWwgRmVycmVyIE9ydGl6CiAqIENvcHlyaWdodCAyMDA5IEphaW1lIEFuZHJlcyBSYXZlIFRvcnJlcwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojaW5jbHVkZSAicmVzb3VyY2UuaCIKCkxBTkdVQUdFIExBTkdfU1BBTklTSCwgU1VCTEFOR19ORVVUUkFMCgovKgogKiBNZW51CiAqLwoKSURSX1JFR0VESVRfTUVOVSBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiJlJlZ2lzdHJvIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkltcG9ydGFyIGFyY2hpdm8gZGUgcmVnaXN0cm8uLi4iLCBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSAiJkV4cG9ydGFyIGFyY2hpdm8gZGUgcmVnaXN0cm8uLi4iLCBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkNvbmVjdGFyIHJlZ2lzdHJvIGRlIHJlZC4uLiIsIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICImRGVzY29uZWN0YXIgcmVnaXN0cm8gZGUgcmVkLi4uIiwgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWSwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkltJnByaW1pclx0Q3RybCtQIiwgICAgICAgICAgIElEX1JFR0lTVFJZX1BSSU5ULCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiUyZhbGlyIiwgICAgICAgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfRVhJVAogICAgRU5ECiAgICBQT1BVUCAiJkVkaXRhciIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZNb2RpZmljYXIiLCAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgUE9QVVAgIiZOdWV2byIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiJkNsYXZlIiwgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiVmFsb3IgZGUgYyZhZGVuYSIsICAgICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIlZhbG9yICZiaW5hcmlvIiwgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxvciAmRFdPUkQiLCAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxvciBkZSBjYWRlbmEgJm36bHRpcGxlIiwgICBJRF9FRElUX05FV19NVUxUSV9TVFJJTkdWQUxVRQogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRWxpbWluYXJcdERlbCIsICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICImUmVub21icmFyXHRGMiIsICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQ29waWFyIG5vbWJyZSBkZSBjbGF2ZSIsICAgICBJRF9FRElUX0NPUFlLRVlOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZCdXNjYXJcdEN0cmwrRiIsICAgICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIkJ1c2NhciAmc2lndWllbnRlXHRGMyIsICAgICAgIElEX0VESVRfRklORE5FWFQsIEdSQVlFRAogICAgRU5ECiAgICBQT1BVUCAiJlZlciIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZCYXJyYSBkZSBlc3RhZG8iLCAgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZTZXBhcmFyIiwgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1BMSVQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkFjdHVhbGl6YXJcdEY1IiwgICAgICAgICAgICAgSURfVklFV19SRUZSRVNICiAgICBFTkQKICAgIFBPUFVQICImRmF2b3JpdG9zIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkHxYWRpciBhIGZhdm9yaXRvcyIsICAgICAgICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTCiAgICAgICAgTUVOVUlURU0gIiZFbGltaW5hciBmYXZvcml0byIsICAgICAgICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURQogICAgRU5ECiAgICBQT1BVUCAiQSZ5dWRhIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJlRlbWFzIGRlIGF5dWRhXHRGMSIsICAgICAgICAgSURfSEVMUF9IRUxQVE9QSUNTCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZBY2VyY2EgZGVsIEVkaXRvciBkZWwgcmVnaXN0cm8iLCBJRF9IRUxQX0FCT1VUCiAgICBFTkQKRU5ECgpJRFJfUE9QVVBfTUVOVVMgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogIFBPUFVQICIiCiAgQkVHSU4KCU1FTlVJVEVNICImTW9kaWZpY2FyIiAgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQoJTUVOVUlURU0gIk1vZGlmaWNhciBkYXRvcyBiaW5hcmlvcyIsICAgIElEX0VESVRfTU9ESUZZX0JJTgoJTUVOVUlURU0gU0VQQVJBVE9SCglNRU5VSVRFTSAiJkVsaW1pbmFyXHREZWwiLCAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKCU1FTlVJVEVNICImUmVub21icmFyIiwgICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogIEVORAogIFBPUFVQICIiCiAgQkVHSU4KICAgICAgICBQT1BVUCAiJk51ZXZvIgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICImQ2xhdmUiLCAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiVmFsb3IgZGUgJmNhZGVuYSIsICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxvciAmYmluYXJpbyIsICAgICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIlZhbG9yICZEV09SRCIsICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxvciBkZSBjYWRlbmEgJm36bHRpcGxlIiwgSURfRURJVF9ORVdfTVVMVElfU1RSSU5HVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkVsaW1pbmFyXHREZWwiLCAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJlJlbm9tYnJhclx0RjIiLCAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkV4cG9ydGFyLi4uIiwgICAgICAgICAgICAgICAgSURfRURJVF9FWFBPUlQKICAgICAgICBNRU5VSVRFTSAiJkNvcGlhciBub21icmUgZGUgY2xhdmUiLCAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQnVzY2FyXHRDdHJsK0YiLCAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogIEVORApFTkQKCgovKgogKiBEaWFsb2cKICovCgpJRERfRVhQT1JUX1RFTVBMQVRFIERJQUxPRyBESVNDQVJEQUJMRSAgNTAsIDUwLCAyNzgsIDU0ClNUWUxFIERTXzNETE9PSyB8IERTX0NPTlRST0wgfCBXU19DSElMRCB8IFdTX1ZJU0lCTEUgfCBXU19DTElQU0lCTElOR1MgfAogICAgV1NfQk9SREVSCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICJFeHBvcnRhciByZWdpc3RybyIsIElEQ19FWFBPUlRfQkFTRSwgNiwgNiwgMjY2LCA0MiwgV1NfR1JPVVAKICAgIEFVVE9SQURJT0JVVFRPTiAiJlRvZG8iLCBJRENfRVhQT1JUX0FMTCwgMTIsIDE1LCAyNDQsIDEyCiAgICBBVVRPUkFESU9CVVRUT04gIiZSYW1hIHNlbGVjY2lvbmFkYToiLCBJRENfRVhQT1JUX1NFTEVDVEVELCAxMiwgMzAsIDcwLCAxMgogICAgRURJVFRFWFQgSURDX0VYUE9SVF9QQVRILCA4MiwgMzAsIDE4NCwgMTIKRU5ECgpJRERfRklORCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA4NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiQnVzY2FyIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIkJ1c2NhcjoiLElEQ19TVEFUSUMsNSw3LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNDAsNSwxMjUsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgTFRFWFQgICAgICAgICAgICJCdXNjYXIgZW46IixJRENfU1RBVElDLDUsIDIyLCAxMTksIDgKICAgIENIRUNLQk9YICAgICAgICAiQ2xhdmVzIiwgSURDX0ZJTkRfS0VZUywgNSwgMzQsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IFdTX0dST1VQIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBDSEVDS0JPWCAgICAgICAgIk5vbWJyZSBkZSB2YWxvcmVzIiwgSURDX0ZJTkRfVkFMVUVTLCA1LCA0NiwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBDSEVDS0JPWCAgICAgICAgIkNvbnRlbmlkbyBkZSB2YWxvcmVzIiwgSURDX0ZJTkRfQ09OVEVOVCwgNSwgNTgsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgQ0hFQ0tCT1ggICAgICAgICJT82xvIGNhZGVuYSBjb21wbGV0YSIsIElEQ19GSU5EX1dIT0xFLCA1LCA3MCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBERUZQVVNIQlVUVE9OICAgIkJ1c2NhciIsSURPSywxNzUsNSwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJDZXJyYXIiLElEQ0FOQ0VMLDE3NSwyMiwzMCwxMSwgV1NfR1JPVVAKRU5ECgpJRERfQURERkFWT1JJVEUgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgNTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkHxYWRpciBmYXZvcml0byIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJOb21icmU6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwKICAgICBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJBY2VwdGFyIixJRE9LLDE0MCw0MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJDYW5jZWxhciIsSURDQU5DRUwsMTc1LDQwLDMwLDExLCBXU19HUk9VUApFTkQKCklERF9ERUxGQVZPUklURSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA5MApTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRWxpbWluYXIgZmF2b3JpdG8iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTm9tYnJlOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIExJU1RCT1ggICAgICAgICBJRENfTkFNRV9MSVNULDUsMTUsMjAwLDUyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgTEJTX1NPUlQgfCBMQlNfTk9JTlRFR1JBTEhFSUdIVCB8IFdTX1ZTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiQWNlcHRhciIsSURPSywxNDAsNzMsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiQ2FuY2VsYXIiLElEQ0FOQ0VMLDE3NSw3MywzMCwxMSwgV1NfR1JPVVAKRU5ECgpJRERfRURJVF9TVFJJTkcgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgNzUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkVkaXRhciBjYWRlbmEiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTm9tYnJlIGRlbCB2YWxvcjoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTCB8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIkRhdG9zIGRlbCB2YWxvcjoiLElEQ19TVEFUSUMsNSwzMCwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiQWNlcHRhciIsSURPSywxNDAsNjAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAiQ2FuY2VsYXIiLElEQ0FOQ0VMLDE3NSw2MCwzMCwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX0RXT1JEIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRWRpdGFyIERXT1JEIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIk5vbWJyZSBkZWwgdmFsb3I6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwgfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJEYXRvcyBkZWwgdmFsb3I6IixJRENfU1RBVElDLDUsMzAsOTAsOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsOTAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIEdST1VQQk9YICAgICAgICAiQmFzZSIsIElEQ19EV09SRF9CQVNFLCAxMjAsIDMwLCA4NSwgMzcsIEJTX0dST1VQQk9YCiAgICBBVVRPUkFESU9CVVRUT04gIkhleGFkZWNpbWFsIiwgSURDX0RXT1JEX0hFWCwgMTMwLCA0MCwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBBVVRPUkFESU9CVVRUT04gIkRlY2ltYWwiLCBJRENfRFdPUkRfREVDLCAxMzAsIDUyLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIERFRlBVU0hCVVRUT04gICAiQWNlcHRhciIsSURPSywxNDAsODAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAiQ2FuY2VsYXIiLElEQ0FOQ0VMLDE3NSw4MCwzMCwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX0JJTkFSWSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTX05PSURMRU1TRyB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkVkaXRhciBiaW5hcmlvIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIk5vbWJyZSBkZWwgdmFsb3I6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwKICAgICBFU19BVVRPSFNDUk9MTHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiRGF0b3MgZGVsIHZhbG9yOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIENPTlRST0wgICAgICAgICAiIixJRENfVkFMVUVfREFUQSwiSGV4RWRpdCIsV1NfVEFCU1RPUCw0LDQwLDE2MCw0MAogICAgREVGUFVTSEJVVFRPTiAgICJBY2VwdGFyIixJRE9LLDE0MCw4MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICJDYW5jZWxhciIsSURDQU5DRUwsMTc1LDgwLDMwLDExLFdTX0dST1VQCkVORAoKSUREX0VESVRfTVVMVElfU1RSSU5HIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDE3NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRWRpdGFyIGNhZGVuYSBt+mx0aXBsZSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJOb21icmUgZGVsIHZhbG9yOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJEYXRvcyBkZWwgdmFsb3I6IixJRENfU1RBVElDLDUsMzAsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDIwMCwxMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBXU19IU0NST0xMIHwgV1NfVlNDUk9MTCB8IEVTX01VTFRJTElORSB8IEVTX1dBTlRSRVRVUk4KICAgIERFRlBVU0hCVVRUT04gICAiQWNlcHRhciIsSURPSywxNDAsMTYwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIkNhbmNlbGFyIixJRENBTkNFTCwxNzUsMTYwLDMwLDExLFdTX0dST1VQCkVORAoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19MSVNUX0NPTFVNTl9OQU1FICAgICJOb21icmUiCiAgICBJRFNfTElTVF9DT0xVTU5fVFlQRSAgICAiVGlwbyIKICAgIElEU19MSVNUX0NPTFVNTl9EQVRBICAgICJEYXRvcyIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0FQUF9USVRMRSAgICAgICAgICAgIkVkaXRvciBkZWwgcmVnaXN0cm8iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX01FTlUgICAgICAgICJDb250aWVuZSBjb21hbmRvcyBwYXJhIHRyYWJhamFyIGNvbiBlbCByZWdpc3RybyBjb21wbGV0byIKICAgIElEX0VESVRfTUVOVSAgICAgICAgICAgICJDb250aWVuZSBjb21hbmRvcyBwYXJhIGVkaXRhciB2YWxvcmVzIG8gY2xhdmVzIgogICAgSURfVklFV19NRU5VICAgICAgICAgICAgIkNvbnRpZW5lIGNvbWFuZG9zIHBhcmEgcGVyc29uYWxpemFyIGxhIHZlbnRhbmEgZGUgcmVnaXN0cm8iCiAgICBJRF9GQVZPUklURVNfTUVOVSAgICAgICAiQ29udGllbmUgY29tYW5kb3MgcGFyYSBhY2NlZGVyIGEgY2xhdmVzIHVzYWRhcyBmcmVjdWVudGVtZW50ZSIKICAgIElEX0hFTFBfTUVOVSAgICAgICAgICAgICJDb250aWVuZSBjb21hbmRvcyBwYXJhIG1vc3RyYXIgYXl1ZGEgZSBpbmZvcm1hY2nzbiBzb2JyZSBlbCBlZGl0b3IgZGUgcmVnaXN0cm8iCiAgICBJRF9FRElUX05FV19NRU5VICAgICAgICAiQ29udGllbmUgY29tYW5kb3MgcGFyYSBjcmVhciBudWV2YXMgY2xhdmVzIG8gdmFsb3JlcyIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfRURJVF9NT0RJRlkgICAgICAgICAgIk1vZGlmaWNhIGxvcyBkYXRvcyBkZWwgdmFsb3IiCiAgICBJRF9FRElUX05FV19LRVkgICAgICAgICAiQfFhZGUgdW5hIG51ZXZhIGNsYXZlIgogICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUgIkHxYWRlIHVuIG51ZXZvIHZhbG9yIGRlIGNhZGVuYSIKICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFICJB8WFkZSB1biBudWV2byB2YWxvciBiaW5hcmlvIgogICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRSAgIkHxYWRlIHVuIG51ZXZvIHZhbG9yIGRlIGRvYmxlIHBhbGFicmEiCiAgICBJRF9FRElUX05FV19NVUxUSV9TVFJJTkdWQUxVRSAiQfFhZGUgdW4gbnVldm8gdmFsb3IgZGUgY2FkZW5hIG36bHRpcGxlIgogICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFICJJbXBvcnRhIHVuIGFyY2hpdm8gZGUgdGV4dG8gYWwgcmVnaXN0cm8iCiAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBvcnRhIHRvZG8gbyBwYXJ0ZSBkZWwgcmVnaXN0cm8gYSB1biBhcmNoaXZvIGRlIHRleHRvIgogICAgSURfUkVHSVNUUllfQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNlIGNvbmVjdGEgYWwgcmVnaXN0cm8gZGUgdW4gb3JkZW5hZG9yIHJlbW90byIKICAgIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZSBkZXNjb25lY3RhIGRlbCByZWdpc3RybyBkZSB1biBvcmRlbmFkb3IgcmVtb3RvIgogICAgSURfUkVHSVNUUllfUFJJTlQgICAgICAgIkltcHJpbWUgdG9kbyBvIHBhcnRlIGRlbCByZWdpc3RybyIKLyogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgIkFicmUgbGEgYXl1ZGEgZGVsIEVkaXRvciBkZWwgcmVnaXN0cm8iICovCiAgICBJRF9IRUxQX0FCT1VUICAgICAgICAgICAiTXVlc3RyYSBpbmZvcm1hY2nzbiBkZWwgcHJvZ3JhbWEsIG76bWVybyBkZSB2ZXJzafNuIHkgZGVyZWNob3MgZGUgYXV0b3IiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX0VYSVQgICAgICAgICJTYWxlIGRlbCBlZGl0b3IgZGUgcmVnaXN0cm8iCiAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMgIkHxYWRlIGNsYXZlcyBhIGxhIGxpc3RhIGRlIGZhdm9yaXRvcy4uLiIKICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURSAiRWxpbWluYSBjbGF2ZXMgZGUgbGEgbGlzdGEgZGUgZmF2b3JpdG9zLi4uIgogICAgSURfVklFV19TVEFUVVNCQVIgICAgICAgIk11ZXN0cmEgdSBvY3VsdGEgbGEgYmFycmEgZGUgZXN0YWRvIgogICAgSURfVklFV19TUExJVCAgICAgICAgICAgIkNhbWJpYSBsYSBwb3NpY2nzbiBkZWwgc2VwYXJhZG9yIGVudHJlIGRvcyBwYW5lbGVzIgogICAgSURfVklFV19SRUZSRVNIICAgICAgICAgIkFjdHVhbGl6YSBsYSB2ZW50YW5hIgogICAgSURfRURJVF9ERUxFVEUgICAgICAgICAgIkVsaW1pbmEgbGEgc2VsZWNjafNuIgogICAgSURfRURJVF9SRU5BTUUgICAgICAgICAgIlJlbm9tYnJhIGxhIHNlbGVjY2nzbiIKICAgIElEX0VESVRfQ09QWUtFWU5BTUUgICAgICJDb3BpYSBlbCBub21icmUgZGUgbGEgY2xhdmUgc2VsZWNjaW9uYWRhIGFsIHBvcnRhcGFwZWxlcyIKICAgIElEX0VESVRfRklORCAgICAgICAgICAgICJCdXNjYSB1bmEgY2FkZW5hIGRlIHRleHRvIGVuIHVuYSBjbGF2ZSwgdmFsb3IgbyBkYXRvcyIKICAgIElEX0VESVRfRklORE5FWFQgICAgICAgICJCdXNjYSBsYSBzaWd1aWVudGUgb2N1cnJlbmNpYSBkZWwgdGV4dG8gZXNwZWNpZmljYWRvIGVuIGxhIGL6c3F1ZWRhIGFudGVyaW9yIgogICAgSURfRURJVF9FWFBPUlQgICAgICAgICAgIkV4cG9ydGEgbGEgcmFtYSBzZWxlY2Npb25hZGEgZGVsIHJlZ2lzdHJvIGEgdW4gYXJjaGl2byBkZSB0ZXh0byIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0VSUk9SICAgICAgICAgICAgICAgIkVycm9yIgogICAgSURTX0JBRF9LRVkgICAgICAgICAgICAgIk5vIHNlIHB1ZWRlIGNvbnN1bHRhciBsYSBjbGF2ZSAnJXMnIgogICAgSURTX0JBRF9WQUxVRSAgICAgICAgICAgIk5vIHNlIHB1ZWRlIGNvbnN1bHRhciBlbCB2YWxvciAnJXMnIgogICAgSURTX1VOU1VQUE9SVEVEX1RZUEUgICAgIk5vIHNlIHB1ZWRlbiBlZGl0YXIgY2xhdmVzIGRlIGVzdGUgdGlwbyAoJXUpIgogICAgSURTX1RPT19CSUdfVkFMVUUgICAgICAgIkVsIHZhbG9yIGVzIGRlbWFzaWFkbyBncmFuZGUgKCV1KSIKICAgIElEU19ERUxFVEVfQk9YX1RJVExFICAgICJDb25maXJtYXIgZWxpbWluYWNp824gZGUgdmFsb3IiCiAgICBJRFNfREVMRVRFX0JPWF9URVhUICAgICAiv1NlZ3VybyBxdWUgZGVzZWEgZWxpbWluYXIgZWwgdmFsb3IgJyVzJz8iCiAgICBJRFNfREVMRVRFX0JPWF9URVhUX01VTFRJUExFICJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoZXNlIHZhbHVlcz8iCiAgICBJRFNfTkVXS0VZICAgICAgICAgICAgICAiTnVldmEgY2xhdmUgIyVkIgogICAgSURTX05FV1ZBTFVFICAgICAgICAgICAgIk51ZXZvIHZhbG9yICMlZCIKICAgIElEU19OT1RGT1VORCAgICAgICAgICAgICJDYWRlbmEgZGUgYvpzcXVlZGEgJyVzJyBubyBlbmNvbnRyYWRhIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfRklMRURJQUxPR19JTVBPUlRfVElUTEUgICAiSW1wb3J0YXIgYXJjaGl2byBkZSByZWdpc3RybyIKICAgIElEU19GSUxFRElBTE9HX0VYUE9SVF9USVRMRSAgICJFeHBvcnRhciBhcnZoaXZvIGRlIHJlZ2lzdHJvIgogICAgSURTX0ZJTEVESUFMT0dfRklMVEVSICAgICAgICAgIkFyY2hpdm9zIGRlIHJlZ2lzdHJvXDAqLnJlZ1wwQXJjaGl2b3MgZGUgcmVnaXN0cm8gZGUgV2luOXgvTlQ0IChSRUdFRElUNClcMCoucmVnXDBUb2RvcyBsb3MgYXJjaGl2b3MgKCouKilcMCouKlwwXDAiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKIEJFR0lOCiAgICBJRFNfUkVHSVNUUllfUk9PVF9OQU1FICAgICAgICAgICAiTWkgUEMiCiAgICBJRFNfUkVHSVNUUllfREVGQVVMVF9WQUxVRSAgICAgICAiKFBvciBkZWZlY3RvKSIKICAgIElEU19SRUdJU1RSWV9WQUxVRV9OT1RfU0VUICAgICAgICIodmFsb3Igbm8gcHVlc3RvKSIKICAgIElEU19SRUdJU1RSWV9WQUxVRV9DQU5UX0RJU1BMQVkgICIobm8gc2UgcHVlZGUgbW9zdHJhciB2YWxvcikiCiAgICBJRFNfUkVHSVNUUllfVU5LTk9XTl9UWVBFICAgICAgICAiKGRlc2Nvbm9jaWRvICVkKSIKRU5ECgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKgogKiBURVhUSU5DTFVERQogKi8KCjEgVEVYVElOQ0xVREUgRElTQ0FSREFCTEUKQkVHSU4KICAgICJyZXNvdXJjZS5oXDAiCkVORAoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwo=