LyoKICogUmVnZWRpdCByZXNvdXJjZXMgKEl0YWxpYW4gTGFuZ3VhZ2UgU3VwcG9ydCkKICoKICogQ29weXJpZ2h0IDIwMDIgUm9iZXJ0IERpY2tlbnNvbgogKiBDb3B5cmlnaHQgMjAwMy0yMDA0IEl2YW4gTGVvIFB1b3RpCiAqIENvcHlyaWdodCAyMDA2IEFudG9uaW8gQ29kYXp6aQogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgpMQU5HVUFHRSBMQU5HX0lUQUxJQU4sIFNVQkxBTkdfTkVVVFJBTAoKLyoKICogTWVudQogKi8KCklEUl9SRUdFRElUX01FTlUgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIiZSZWdpc3RybyIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZJbXBvcnRhLi4uIiwgICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gIiZFc3BvcnRhLi4uIiwgICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZDb25uZXR0aSBhIFJlZ2lzdHJvIGluIHJldGUiLCBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiJkRpc2Nvbm5ldHRpIGRhIFJlZ2lzdHJvIGRpIHJldGUiLCBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlN0YW1wYVx0Q3RybCtQIiwgICAgICAgICAgICAgIElEX1JFR0lTVFJZX1BSSU5ULCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiRSZzY2kiLCAgICAgICAgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfRVhJVAogICAgRU5ECiAgICBQT1BVUCAiJk1vZGlmaWNhIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJk1vZGlmaWNhIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIFBPUFVQICImTnVvdm8iCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIkNoaWF2ZSIsICAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiVmFsb3JlICZzdHJpbmdhIiwgICAgICAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiVmFsb3JlICZiaW5hcmlvIiwgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiVmFsb3JlICZEV09SRCIsICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImTXVsdGkgU3RyaW5nIFZhbHVlIiwgICAgIElEX0VESVRfTkVXX01VTFRJX1NUUklOR1ZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZFbGltaW5hXHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICImUmlub21pbmFcdEYyIiAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkNvcGlhIG5vbWUgY2hpYXZlIiwgICAgICAgICAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlRyb3ZhXHRDdHJsK0YiLCAgICAgICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIiZUcm92YSBTdWNjZXNzaXZvXHRGMyIsICAgICAgICAgICAgICBJRF9FRElUX0ZJTkRORVhULCBHUkFZRUQKICAgIEVORAogICAgUE9QVVAgIiZWaXN1YWxpenphIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiQmFycmEgZGkgJlN0YXRvIiwgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkRpJnZpZGkiLCAgICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NQTElUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZBZ2dpb3JuYVx0RjUiLCAgICAgICAgICAgICAgICBJRF9WSUVXX1JFRlJFU0gKICAgIEVORAogICAgUE9QVVAgIiZQcmVmZXJpdGkiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImQWdnaXVuZ2kgYWkgUHJlZmVyaXRpLi4uIiwgICAgICAgICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTCiAgICAgICAgTUVOVUlURU0gIiZSaW11b3ZpIGRhaSBQcmVmZXJpdGkuLi4iLCAgICAgICAgICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFCiAgICBFTkQKICAgIFBPUFVQICImQWl1dG8iCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImU29tbWFyaW8gZGVsbGEgR3VpZGEiLCAgICAgICAgICAgICAgICBJRF9IRUxQX0hFTFBUT1BJQ1MKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkluZm9ybWF6aW9uaSBzdWxsJ2VkaXRvciBkZWwgUmVnaXN0cm8iLCAgICAgIElEX0hFTFBfQUJPVVQKICAgIEVORApFTkQKCklEUl9QT1BVUF9NRU5VUyBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgUE9QVVAgIiIKICBCRUdJTgoJTUVOVUlURU0gIiZNb2RpZmljYSIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKCU1FTlVJVEVNICJNb2RpZmljYSBkYXRpIGJpbmFyaSIsICAgICAgICAgIElEX0VESVRfTU9ESUZZX0JJTgoJTUVOVUlURU0gU0VQQVJBVE9SCglNRU5VSVRFTSAiJkVsaW1pbmFcdERlbCIsICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCglNRU5VSVRFTSAiJlJpbm9taW5hIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogIEVORAogIFBPUFVQICIiCiAgQkVHSU4KICAgICAgICBQT1BVUCAiJk51b3ZvIgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICImQ2hpYXZlIiwgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxvcmUgJnN0cmluZ2EiLCAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxvcmUgJmJpbmFyaW8iLCAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxvcmUgJkRXT1JEIiwgICAgICAgICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZNdWx0aSBTdHJpbmcgVmFsdWUiLCAgICAgSURfRURJVF9ORVdfTVVMVElfU1RSSU5HVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkVsaW1pbmFcdERlbCIsICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIiZSaW5vbWluYVx0RjIiICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRXhwb3J0Li4uIiwgICAgICAgICAgICAgICAgICBJRF9FRElUX0VYUE9SVAogICAgICAgIE1FTlVJVEVNICImQ29waWEgbm9tZSBjaGlhdmUiLCAgICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImVHJvdmFcdEN0cmwrRiIsICAgICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICBFTkQKRU5ECgovKgogKiBEaWFsb2cKICovCgpJRERfRklORCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA4NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiVHJvdmEiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KTFRFWFQgICAgICAgICAgICJUcm92YToiLElEQ19TVEFUSUMsNSw3LDExOSw4CkVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw0MCw1LDEyNSwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCkxURVhUICAgICAgICAgICAiVHJvdmEgaW46IixJRENfU1RBVElDLDUsIDIyLCAxMTksIDgKQ0hFQ0tCT1ggICAgICAgICJDaGlhdmkiLCBJRENfRklORF9LRVlTLCA1LCAzNCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgV1NfR1JPVVAgfCBCU19BVVRPQ0hFQ0tCT1gKQ0hFQ0tCT1ggICAgICAgICJOb21lIChjYW1wbykiLCBJRENfRklORF9WQUxVRVMsIDUsIDQ2LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKQ0hFQ0tCT1ggICAgICAgICJEYXRpIChjYW1wbykiLCBJRENfRklORF9DT05URU5ULCA1LCA1OCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCkNIRUNLQk9YICAgICAgICAiU29sbyBzdHJpbmdoZSBpbnRlcmUiLCBJRENfRklORF9XSE9MRSwgNSwgNzAsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWApERUZQVVNIQlVUVE9OICAgIlRyb3ZhIixJRE9LLDE3NSw1LDMwLDExLFdTX0dST1VQClBVU0hCVVRUT04gICAgICAiQ2hpdWRpIixJRENBTkNFTCwxNzUsMjIsMzAsMTEsIFdTX0dST1VQCkVORAoKSUREX0FEREZBVk9SSVRFIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDU1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJBZ2dpdW5naSBGYXZvcml0byIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgpMVEVYVCAgICAgICAgICAgIk5vbWU6IixJRENfU1RBVElDLDUsNSwxMTksOApFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTApERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw0MCwzMCwxMSxXU19HUk9VUApQVVNIQlVUVE9OICAgICAgIkNhbmNlbGxhIixJRENBTkNFTCwxNzUsNDAsMzAsMTEsIFdTX0dST1VQCkVORAoKSUREX0RFTEZBVk9SSVRFIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDkwClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJSaW11b3ZpIEZhdm9yaXRvIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCkxURVhUICAgICAgICAgICAiTm9tZToiLElEQ19TVEFUSUMsNSw1LDExOSw4CkxJU1RCT1ggICAgICAgICBJRENfTkFNRV9MSVNULDUsMTUsMjAwLDUyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgTEJTX1NPUlQgfCBMQlNfTk9JTlRFR1JBTEhFSUdIVCB8IFdTX1ZTQ1JPTEwKREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsNzMsMzAsMTEsV1NfR1JPVVAKUFVTSEJVVFRPTiAgICAgICJDYW5jZWxsYSIsSURDQU5DRUwsMTc1LDczLDMwLDExLCBXU19HUk9VUApFTkQKCklERF9FRElUX1NUUklORyBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA3NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRWRpdGEgU3RyaW5nYSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJOb21lIGRlbCB2YWxvcmU6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwgfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJEYXRpIGRlbCB2YWxvcmU6IixJRENfU1RBVElDLDUsMzAsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw2MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICJBbm51bGxhIixJRENBTkNFTCwxNzUsNjAsMzAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9EV09SRCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTX05PSURMRU1TRyB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkVkaXRhIERXT1JEIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgIExURVhUICAgICAgICAgICAiTm9tZSBkZWwgdmFsb3JlOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEx8IFdTX0RJU0FCTEVECiAgIExURVhUICAgICAgICAgICAiRGF0aSBkZWwgdmFsb3JlOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsOTAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgR1JPVVBCT1ggICAgICAgICJCYXNlIiwgSURDX0RXT1JEX0JBU0UsIDEyMCwgMzAsIDg1LCAzNywgQlNfR1JPVVBCT1gKICAgQVVUT1JBRElPQlVUVE9OICJFc2FkZWNpbWFsZSIsIElEQ19EV09SRF9IRVgsIDEzMCwgNDAsIDYwLCAxMCwgV1NfVEFCU1RPUAogICBBVVRPUkFESU9CVVRUT04gIkRlY2ltYWxlIiwgSURDX0RXT1JEX0RFQywgMTMwLCA1MiwgNjAsIDEwLCBXU19UQUJTVE9QCiAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDgwLDMwLDExLFdTX0dST1VQCiAgIFBVU0hCVVRUT04gICAiQW5udWxsYSIsSURDQU5DRUwsMTc1LDgwLDMwLDExLFdTX0dST1VQCkVORAoKSUREX0VESVRfQklOQVJZIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRWRpdGEgQmluYXJpbyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICBMVEVYVCAgICAgICAgICAgIk5vbWUgZGVsIHZhbG9yZToiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMfCBXU19ESVNBQkxFRAogICBMVEVYVCAgICAgICAgICAgIkRhdGkgZGVsIHZhbG9yZToiLElEQ19TVEFUSUMsNSwzMCw5MCw4CiAgIENPTlRST0wgICAgICAgICAiIixJRENfVkFMVUVfREFUQSwiSGV4RWRpdCIsV1NfVEFCU1RPUCw0LDQwLDE2MCw0MAogICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw4MCwzMCwxMSxXU19HUk9VUAogICBQVVNIQlVUVE9OICAgIkFubnVsbGEiLElEQ0FOQ0VMLDE3NSw4MCwzMCwxMSxXU19HUk9VUApFTkQKCi8qCiAqIFN0cmluZyBUYWJsZQogKi8KClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfTElTVF9DT0xVTU5fTkFNRSAgICAiTm9tZSIKICAgIElEU19MSVNUX0NPTFVNTl9UWVBFICAgICJUaXBvIgogICAgSURTX0xJU1RfQ09MVU1OX0RBVEEgICAgIkRhdGkiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19BUFBfVElUTEUgICAgICAgICAgICJFZGl0b3IgZGVsIFJlZ2lzdHJvIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9NRU5VICAgICAgICAiQ29udGllbmUgaSBjb21hbmRpIHBlciBsYXZvcmFyZSBzdSB0dXR0byBpbCBSZWdpc3RybyIKICAgIElEX0VESVRfTUVOVSAgICAgICAgICAgICJDb250aWVuZSBpIGNvbWFuZGkgcGVyIGVkaXRhcmUgdmFsb3JpIG8gY2hpYXZpIgogICAgSURfVklFV19NRU5VICAgICAgICAgICAgIkNvbnRpZW5lIGkgY29tYW5kaSBwZXIgcGVyc29uYWxpenphcmUgbGEgZmluZXN0cmEgZGVsIFJlZ2lzdHJvIgogICAgSURfRkFWT1JJVEVTX01FTlUgICAgICAgIkNvbnRpZW5lIGkgY29tYW5kaSBwZXIgYWNjZWRlcmUgYWxsZSBjaGlhdmkgdXNhdGUgZnJlcXVlbnRlbWVudGUiCiAgICBJRF9IRUxQX01FTlUgICAgICAgICAgICAiQ29udGllbmUgaSBjb21hbmRpIHBlciB2aXN1YWxpenphcmUgbGEgR3VpZGEgZSBpbmZvcm1hemlvbmkgc3VsbCdlZGl0b3IgZGVsIFJlZ2lzdHJvIgogICAgSURfRURJVF9ORVdfTUVOVSAgICAgICAgIkNvbnRpZW5lIGkgY29tYW5kaSBwZXIgY3JlYXJlIG51b3ZlIGNoaWF2aSBvIHZhbG9yaSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfRURJVF9NT0RJRlkgICAgICAgICAgIk1vZGlmaWNhIGkgZGF0aSBkZWwgdmFsb3JlIgogICAgSURfRURJVF9ORVdfS0VZICAgICAgICAgIkFnZ2l1bmdlIHVuYSBudW92YSBjaGlhdmUiCiAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRSAiQWdnaXVuZ2UgdW4gbnVvdm8gdmFsb3JlIHN0cmluZ2EiCiAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRSAiQWdnaXVuZ2UgdW4gbnVvdm8gdmFsb3JlIGJpbmFyaW8iCiAgICBJRF9FRElUX05FV19EV09SRFZBTFVFICAiQWdnaXVuZ2UgdW4gbnVvdm8gdmFsb3JlIGEgZG9wcGlhIHBhcm9sYSIKICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRSAiSW1wb3J0YSB1biBmaWxlIGRpIHRlc3RvIG5lbCBSZWdpc3RybyIKICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVzcG9ydGEgdHV0dG8gbyBwYXJ0ZSBkZWwgUmVnaXN0cm8gaW4gdW4gZmlsZSBkaSB0ZXN0byIKICAgIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaSBjb25uZXR0ZSBhbCBSZWdpc3RybyBkaSB1biBjb21wdXRlciByZW1vdG8iCiAgICBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2kgZGlzY29ubmV0dGUgZGFsIFJlZ2lzdHJvIGRpIHVuIGNvbXB1dGVyIHJlbW90byIKICAgIElEX1JFR0lTVFJZX1BSSU5UICAgICAgICJTdGFtcGEgdHV0dG8gbyBwYXJ0ZSBkZWwgUmVnaXN0cm8iCi8qICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICJBcHJlIGwnYWl1dG8gZGVsbCdFZGl0b3IgZGVsIFJlZ2lzdHJvIiAqLwogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIlZpc3VhbGl6emEgaW5mb3JtYXppb25pIHN1bCBwcm9ncmFtbWEsIG51bWVybyBkaSB2ZXJzaW9uZSBlIGNvcHlyaWdodCIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfRVhJVCAgICAgICAgIkVzY2UgZGFsbCdlZGl0b3IgZGVsIFJlZ2lzdHJvIgogICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTICJBZ2dpdW5nZSB1bmEgY2hpYXZlIGFsbGEgbGlzdGEgZGVpIFByZWZlcml0aSIKICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURSAiUmltdW92ZSB1bmEgbyBwafkgY2hpYXZpIGRhbGxhIGxpc3RhIGRlaSBwcmVmZXJpdGkiCiAgICBJRF9WSUVXX1NUQVRVU0JBUiAgICAgICAiTW9zdHJhIG8gbmFzY29uZGUgbGEgYmFycmEgZGkgc3RhdG8iCiAgICBJRF9WSUVXX1NQTElUICAgICAgICAgICAiQ2FtYmlhIGxhIHBvc2l6aW9uZSBkZWwgc2VwYXJhdG9yZSB0cmEgZHVlIHBhbm5lbGxpIgogICAgSURfVklFV19SRUZSRVNIICAgICAgICAgIkFnZ2lvcm5hIGxhIGZpbmVzdHJhIgogICAgSURfRURJVF9ERUxFVEUgICAgICAgICAgIkVsaW1pbmEgbGEgc2VsZXppb25lIgogICAgSURfRURJVF9SRU5BTUUgICAgICAgICAgIlJpbm9taW5hIGxhIHNlbGV6aW9uZSIKICAgIElEX0VESVRfQ09QWUtFWU5BTUUgICAgICJDb3BpYSBpbCBub21lIGRlbGxhIGNoaWF2ZSBzZWxlemlvbmF0YSBuZWdsaSBhcHB1bnRpIgogICAgSURfRURJVF9GSU5EICAgICAgICAgICAgIlRyb3ZhIHVuYSBzdHJpbmdhIGRpIHRlc3RvIGluIHVuYSBjaGlhdmUsIHVuIHZhbG9yZSBvIGluIGRlaSBkYXRpIgogICAgSURfRURJVF9GSU5ETkVYVCAgICAgICAgIlRyb3ZhIGxhIHZvbHRhIHN1Y2Nlc3NpdmEgaWwgdGVzdG8gc3BlY2lmaWNhdG8gbmVsbGEgcmljZXJjYSBwcmVjZWRlbnRlIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfRVJST1IJCSAgICAiRXJyb3JlIgogICAgSURTX0JBRF9LRVkJCSAgICAiSW1wb3NzaWJpbGUgdHJvdmFyZSBsYSBjaGlhdmUgJyVzJyIKICAgIElEU19CQURfVkFMVUUgICAgICAgICAgICJJbXBvc3NpYmlsZSB0cm92YXJlIGlsIHZhbG9yZSAnJXMnIgogICAgSURTX1VOU1VQUE9SVEVEX1RZUEUgICAgIkltcG9zc2liaWxlIGVkaXRhcmUgdmFsb3JpIGRpIHF1ZXN0byB0aXBvICglbGQpIgogICAgSURTX1RPT19CSUdfVkFMVUUgICAgICAgIlZhbG9yZSB0cm9wcG8gZ3JhbmRlICglbGQpIgogICAgSURTX0RFTEVURV9CT1hfVElUTEUgICAgIkNvbmZlcm1hcmUgQ2FuY2VsbGF6aW9uZSBkZWwgVmFsb3JlIgogICAgSURTX0RFTEVURV9CT1hfVEVYVCAgICAgIlNlaSBzaWN1cm8gZGkgdm9sZXIgY2FuY2VsbGFyZSBpbCB2YWxvcmUgJyVzJz8iCiAgICBJRFNfTkVXS0VZICAgICAgICAgICAgICAiTnVvdmEgQ2hpYXZlICMlZCIKICAgIElEU19ORVdWQUxVRSAgICAgICAgICAgICJOdW92byBWYWxvcmUgIyVkIgogICAgSURTX05PVEZPVU5EICAgICAgICAgICAgIlNlYXJjaCBzdHJpbmcgJyVzJyBub3QgZm91bmQiCkVORAoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyoKICogVEVYVElOQ0xVREUKICovCgoxIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFCkJFR0lOCiAgICAicmVzb3VyY2UuaFwwIgpFTkQKCgoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKLyoKICpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQogKkJFR0lOCiAqICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICJBcHJlIGwnYWl1dG8gZGVsbCdlZGl0b3IgZGVsIFJlZ2lzdHJvLiIKICogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIlZpc3VhbGl6emEgaW5mb3JtYXppb25pIHN1bCBwcm9ncmFtbWEsIGlsIG51bWVybyBkaSB2ZXJzaW9uZSBlIGlsIGNvcHlyaWdodC4iCiAqRU5ECiAqLwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwo=