LyoKICogQ29weXJpZ2h0IDE5OTggSnVlcmdlbiBTY2htaWVkCiAqIENvcHlyaWdodCAyMDA2LCAyMDA3IFl1blNvbmcgSHdhbmcKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKTEFOR1VBR0UgTEFOR19LT1JFQU4sIFNVQkxBTkdfREVGQVVMVAoKTUVOVV8wMDEgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgpNRU5VSVRFTSAixasgvsbAzMTcKCZHKSIsCUZDSURNX1NIVklFV19CSUdJQ09OCk1FTlVJVEVNICLA28C6IL7GwMzE3CgmTSkiLAlGQ0lETV9TSFZJRVdfU01BTExJQ09OCk1FTlVJVEVNICK48bfPKCZMKSIsCQlGQ0lETV9TSFZJRVdfTElTVFZJRVcKTUVOVUlURU0gIsDavLzI9ygmRCkiLAkJRkNJRE1fU0hWSUVXX1JFUE9SVFZJRVcKRU5ECgovKgpzaGVsbHZpZXcgYmFja2dyb3VuZCBtZW51CiovCk1FTlVfMDAyIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KUE9QVVAgIiIKQkVHSU4KUE9QVVAgIrq4seIoJlYpIgpCRUdJTgpNRU5VSVRFTSAixasgvsbAzMTcKCZHKSIsCUZDSURNX1NIVklFV19CSUdJQ09OCk1FTlVJVEVNICLA28C6IL7GwMzE3CgmTSkiLAlGQ0lETV9TSFZJRVdfU01BTExJQ09OCk1FTlVJVEVNICK48bfPKCZMKSIsCQlGQ0lETV9TSFZJRVdfTElTVFZJRVcKTUVOVUlURU0gIsDavLzI9ygmRCkiLAlGQ0lETV9TSFZJRVdfUkVQT1JUVklFVwpFTkQKTUVOVUlURU0gU0VQQVJBVE9SClBPUFVQICK+xsDMxNwgwaS3xCgmSSkiCkJFR0lOCk1FTlVJVEVNICLAzLinwLi3zigmTikiLAkweDMwCS8qIGNvbHVtbiAwICovCk1FTlVJVEVNICLH/L3EwLi3zigmVCkiLAkweDMyCS8qIGNvbHVtbiAyICovCk1FTlVJVEVNICLFqbHit84oJlMpIiwJMHgzMQkvKiAuLi4gKi8KTUVOVUlURU0gIrOvwqW3zigmRCkiLAkweDMzCk1FTlVJVEVNIFNFUEFSQVRPUgpNRU5VSVRFTSAiwNq1vyDBpLfEKCZBKSIsCUZDSURNX1NIVklFV19BVVRPQVJSQU5HRQpFTkQKTUVOVUlURU0gIr7GwMzE3CDBpLfEIiwJRkNJRE1fU0hWSUVXX1NOQVBUT0dSSUQKTUVOVUlURU0gU0VQQVJBVE9SCk1FTlVJVEVNICK79bfOILDtxKciLAkJRkNJRE1fU0hWSUVXX1JFRlJFU0gKTUVOVUlURU0gU0VQQVJBVE9SCk1FTlVJVEVNICK62b+ps9ax4iIsCQlGQ0lETV9TSFZJRVdfSU5TRVJUCk1FTlVJVEVNICK4tcWpt84gutm/qbPWseIiLAlGQ0lETV9TSFZJRVdfSU5TRVJUTElOSwpNRU5VSVRFTSBTRVBBUkFUT1IKUE9QVVAgIrv1IMDbvvciCkJFR0lOCk1FTlVJVEVNICK79SDG+rT1KCZGKSIsCUZDSURNX1NIVklFV19ORVdGT0xERVIKTUVOVUlURU0gIrv1ILi1xakoJkwpIiwJRkNJRE1fU0hWSUVXX05FV0xJTksKTUVOVUlURU0gU0VQQVJBVE9SCkVORApNRU5VSVRFTSBTRVBBUkFUT1IKTUVOVUlURU0gIrzTvLoiLAlGQ0lETV9TSFZJRVdfUFJPUEVSVElFUwpFTkQKRU5ECgovKgpzaGVsbHZpZXcgaXRlbSBtZW51CiovCk1FTlVfU0hWX0ZJTEUgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgpQT1BVUCAiIgpCRUdJTgpNRU5VSVRFTSAiJlNlbGVjdCIJCUZDSURNX1NIVklFV19PUEVOCk1FTlVJVEVNICLFvbv2KCZYKSIsCQlGQ0lETV9TSFZJRVdfRVhQTE9SRQpNRU5VSVRFTSAiv62x4igmTykiLAkJRkNJRE1fU0hWSUVXX09QRU4KTUVOVUlURU0gU0VQQVJBVE9SCk1FTlVJVEVNICLA37bzs7ux4igmVSkiLAkJRkNJRE1fU0hWSUVXX0NVVApNRU5VSVRFTSAiurm75ygmQykiLAkJRkNJRE1fU0hWSUVXX0NPUFkKTUVOVUlURU0gU0VQQVJBVE9SCk1FTlVJVEVNICK4tcWpILi4temx4igmTCkiLAlGQ0lETV9TSFZJRVdfQ1JFQVRFTElOSwpNRU5VSVRFTSAiwfa/7LHiKCZEKSIsCQlGQ0lETV9TSFZJRVdfREVMRVRFCk1FTlVJVEVNICLAzLinILnZstmx4igmUikiLAkJRkNJRE1fU0hWSUVXX1JFTkFNRQpNRU5VSVRFTSBTRVBBUkFUT1IKTUVOVUlURU0gIrzTvLooJlApIiwJRkNJRE1fU0hWSUVXX1BST1BFUlRJRVMKRU5ECkVORAoKTUVOVV9DUEFORUwgTUVOVQpCRUdJTgogICAgUE9QVVAgIsbEwM8oJkYpIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAis6qx4rHiKCZYKSIsIElETV9DUEFORUxfRVhJVAogICAgRU5ECgogICAgUE9QVVAgIrq4seIoJlYpIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAixasgvsbAzMTcKCZHKSIsIEZDSURNX1NIVklFV19CSUdJQ09OCiAgICAgICAgTUVOVUlURU0gIsDbwLogvsbAzMTcKCZNKSIsIEZDSURNX1NIVklFV19TTUFMTElDT04KICAgICAgICBNRU5VSVRFTSAiuPG3zygmTCkiLCBGQ0lETV9TSFZJRVdfTElTVFZJRVcKICAgICAgICBNRU5VSVRFTSAiwNq8vMj3KCZEKSIsIEZDSURNX1NIVklFV19SRVBPUlRWSUVXCiAgICBFTkQKCiAgICBQT1BVUCAitbW/8ri7KCZIKSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIsGmvu7GxyDBpLq4KCZBKS4uLiIsIElETV9DUEFORUxfQUJPVVQKICAgIEVORApFTkQKCgpTSEJSU0ZPUkZPTERFUl9NU0dCT1ggRElBTE9HIExPQURPTkNBTEwgTU9WRUFCTEUgRElTQ0FSREFCTEUgMTUsIDQwLCAxODgsIDE5MgpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUgfCBEU19NT0RBTEZSQU1FIHwgRFNfU0VURk9OVCB8IERTXzNETE9PSwpDQVBUSU9OICLG+rT1IMW9u/YiCkZPTlQgOSwgIk1TIFNoZWxsIERsZyIKewpERUZQVVNIQlVUVE9OICLIrsDOIiwgMSwgODAsIDE3NiwgNTAsIDEyLCBCU19ERUZQVVNIQlVUVE9OIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QClBVU0hCVVRUT04gIsPrvNIiLCAyLCAxMzQsIDE3NiwgNTAsIDEyLCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKTFRFWFQgIiIsIElERF9USVRMRSwgNCwgNCwgMTgwLCAxMgpMVEVYVCAiIiwgSUREX1NUQVRVUywgNCwgMjUsIDE4MCwgMTIKQ09OVFJPTCAiIiwgSUREX1RSRUVWSUVXLCAiU3lzVHJlZVZpZXczMiIsClRWU19IQVNCVVRUT05TIHwgVFZTX0hBU0xJTkVTIHwgVFZTX0xJTkVTQVRST09UIHwKV1NfQk9SREVSIHwgV1NfVEFCU1RPUCwKNCwgNDAsIDE4MCwgMTIwCn0KCgpTSE5FV0JSU0ZPUkZPTERFUl9NU0dCT1ggRElBTE9HIExPQURPTkNBTEwgTU9WRUFCTEUgRElTQ0FSREFCTEUgMTUsIDQwLCAyMTgsIDE5NgpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUgfCBXU19TSVpFQk9YIHwgRFNfTU9EQUxGUkFNRSB8IERTX1NFVEZPTlQgfCBEU18zRExPT0sKQ0FQVElPTiAixvq09SDFvbv2IgpGT05UIDksICJNUyBTaGVsbCBEbGciCnsKTFRFWFQgIiIsIElERF9USVRMRSwgMTAsIDgsIDE5OCwgMjQKTFRFWFQgIiIsIElERF9TVEFUVVMsIDEwLCAyNSwgMTk4LCAxMgpMVEVYVCAixvq09ToiLCBJRERfRk9MREVSLCAxMCwgMTU2LCA0MCwgMTIKQ09OVFJPTCAiIiwgSUREX1RSRUVWSUVXLCAiU3lzVHJlZVZpZXczMiIsClRWU19IQVNCVVRUT05TIHwgVFZTX0hBU0xJTkVTIHwgVFZTX0xJTkVTQVRST09UIHwKV1NfQk9SREVSIHwgV1NfVEFCU1RPUCwKMTIsIDM4LCAxOTQsIDEwNQpFRElUVEVYVCBJRERfRk9MREVSVEVYVCwgNDYsIDE1MCwgMTYwLCAxNCwgV1NfQk9SREVSIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QClBVU0hCVVRUT04gIrv1IMb6tPUguLi16bHiKCZNKSIsIElERF9NQUtFTkVXRk9MREVSLCAxMiwgMTc0LCA3MCwgMTQsIFdTX0dST1VQIHwgV1NfVEFCU1RPUApERUZQVVNIQlVUVE9OICLIrsDOIiwgSURPSywgMTAyLCAxNzQsIDUwLCAxNCwgQlNfREVGUFVTSEJVVFRPTiB8IFdTX0dST1VQIHwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICLD67zSIiwgSURDQU5DRUwsIDE1NiwgMTc0LCA1MCwgMTQsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAp9CgpTSEVMTF9ZRVNUT0FMTF9NU0dCT1ggRElBTE9HIDIwMCwgMTAwLCAyODAsIDkwClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX1ZJU0lCTEUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICK43r3DwfYiCkZPTlQgOSwgIk1TIFNoZWxsIERsZyIKewpERUZQVVNIQlVUVE9OICK/uSgmWSkiLCBJRFlFUywgMzQsIDY5LCA1MywgMTQsIFdTX0dST1VQIHwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICK48LXOIL+5KCZBKSIsIElERF9ZRVNUT0FMTCwgOTIsIDY5LCA2NSwgMTQsIFdTX0dST1VQIHwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICIgvsa0z7/AKCZOKSIsIElETk8sIDE2MiwgNjksIDUzLCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QClBVU0hCVVRUT04gIsPrvNIoJkMpIiwgSURDQU5DRUwsIDIyMCwgNjksIDUzLCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCklDT04gIiIsIElERF9JQ09OLCAxMCwgMTAsIDE2LCAxNgpMVEVYVCAiIiwgSUREX01FU1NBR0UsIDQwLCAxMCwgMjM4LCA1MiwgMAp9CgpTSEVMTF9BQk9VVF9NU0dCT1ggRElBTE9HIExPQURPTkNBTEwgTU9WRUFCTEUgRElTQ0FSREFCTEUgMTUsIDQwLCAyMjAsIDE1MgpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19WSVNJQkxFIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiICVzIMGkurgiCkZPTlQgMTAsICJNUyBTaGVsbCBEbGciCnsKIERFRlBVU0hCVVRUT04gIsiuwM4iLCBJRE9LLCAxNTMsIDEzMywgNjAsIDEyLCBXU19UQUJTVE9QCiBQVVNIQlVUVE9OICJXaW5lILbzwMy8vr26KCZsKS4uLiIsIElEQ19BQk9VVF9MSUNFTlNFLCAxNTMsIDExMywgNjAsIDEyLCBXU19UQUJTVE9QCiBMSVNUQk9YIElEQ19BQk9VVF9MSVNUQk9YLCA4LCA2NSwgMTM3LCA4MiwgTEJTX05PVElGWSB8IFdTX1ZTQ1JPTEwgfCBXU19CT1JERVIKIElDT04gIiIsIHN0YzEsIDEwLCAxMCwgMzAsIDMwCiBMVEVYVCAiIiwgSURDX0FCT1VUX1NUQVRJQ19URVhUMSwgNDIsIDEwLCAxNzAsIDEwCiBMVEVYVCAiIiwgSURDX0FCT1VUX1NUQVRJQ19URVhUMiwgNDIsIDIyLCAxNzAsIDEwCiBMVEVYVCAiJXMgvcfH4MHfIiwgSURDX0FCT1VUX1NUQVRJQ19URVhUMywgNDIsIDM0LCAxNzAsIDEwCiBMVEVYVCAiV2luZSB3YXMgYnJvdWdodCB0byB5b3UgYnk6IiwgSURDX0FCT1VUX1dJTkVfVEVYVCwgOCwgNTQsIDIwNCwgMTAKfQoKClNIRUxMX1JVTl9ETEcgRElBTE9HIExPQURPTkNBTEwgTU9WRUFCTEUgRElTQ0FSREFCTEUgMCwgMCwgMjI3LCA5NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19WSVNJQkxFIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiIgpGT05UIDksICJNUyBTaGVsbCBEbGciCnsKIElDT04gIiIsIElEQ19SVU5ETEdfSUNPTiwgNywgMTEsIDE4LCAyMCwgV1NfVklTSUJMRQogTFRFWFQgIseusde4sizG+rT1LLmuvK2zqiDAzsXNs90gwNq/+Cwgsde4rrDtIFdpbmXAzCC/rSAgsM3AxyDAzLinwLsgwPu+7sHWvLy/5C4iLCBJRENfUlVORExHX0RFU0NSSVBUSU9OLCAzNiwgMTEsIDE4MiwgMTgKIExURVhUICK/rbHiKCZPKToiLCBJRENfUlVORExHX0xBQkVMLCA3LCAzOSwgMjQsIDEwCiBDT05UUk9MICIiLCBJRENfUlVORExHX0VESVRQQVRILCAiQ09NQk9CT1giLCBXU19UQUJTVE9QIHwgV1NfR1JPVVAgfCBXU19WU0NST0xMIHwgV1NfVklTSUJMRSB8IENCU19ESVNBQkxFTk9TQ1JPTEwgfCBDQlNfQVVUT0hTQ1JPTEwgfCBDQlNfRFJPUERPV04sIDM2LCAzNywgMTgzLCAxMDAKIERFRlBVU0hCVVRUT04gIsiuwM4iLCBJRE9LLCA2MiwgNjMsIDUwLCAxNCwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAiw+u80iIsIElEQ0FOQ0VMLCAxMTYsIDYzLCA1MCwgMTQsIFdTX1RBQlNUT1AKIFBVU0hCVVRUT04gIsOjseIoJkIpLi4uIiwgSURDX1JVTkRMR19CUk9XU0UsIDE3MCwgNjMsIDUwLCAxNCwgV1NfVEFCU1RPUAp9CgoKU1RSSU5HVEFCTEUKewovKiBjb2x1bW5zIGluIHRoZSBzaGVsbHZpZXcgKi8KSURTX1NIVl9DT0xVTU4xCQkixsTAzyIKSURTX1NIVl9DT0xVTU4yCQkixamx4iIKSURTX1NIVl9DT0xVTU4zCQkix/y9xCIKSURTX1NIVl9DT0xVTU40CQkivPbBpLOvwqUiCklEU19TSFZfQ09MVU1ONQkJIrzTvLoiCklEU19TSFZfQ09MVU1ONgkJIsWpseIiCklEU19TSFZfQ09MVU1ONwkJIrChtMnH0SDFqbHiIgpJRFNfU0hWX0NPTFVNTjgJCSLAzLinIgpJRFNfU0hWX0NPTFVNTjkJCSLB1ryuIgpJRFNfU0hWX0NPTFVNTjEwCSK80sCvwNoiCklEU19TSFZfQ09MVU1OMTEJIrHXt+wiCklEU19TSFZfQ09MVU1OX0RFTEZST00JIr/4t6EgwKfEoSIKSURTX1NIVl9DT0xVTU5fREVMREFURQkiwfa/9sH4ILOvwqUiCgovKiBzcGVjaWFsIGZvbGRlcnMgKi8KSURTX0RFU0tUT1AJCSK1pb26xanFviIKSURTX01ZQ09NUFVURVIJCSKzuyDExMe7xc0iCklEU19SRUNZQ0xFQklOX0ZPTERFUl9OQU1FICAgICAgIsjewfbF6yIKSURTX0NPTlRST0xQQU5FTAkiwaa+7sbHIgoKLyogY29udGV4dCBtZW51cyAqLwpJRFNfVklFV19MQVJHRQkJIsWrIL7GwMzE3CgmRykiCklEU19WSUVXX1NNQUxMCQkiwNvAuiC+xsDMxNwoJk0pIgpJRFNfVklFV19MSVNUCQkiuPG3zygmTCkiCklEU19WSUVXX0RFVEFJTFMJIsDavLzI9ygmRCkiCklEU19TRUxFQ1QJCSK8scXDIgpJRFNfT1BFTgkJIr+tseIiCgpJRFNfQ1JFQVRFRk9MREVSX0RFTklFRCAiu/Ugxvq09bimILi4tekgvPYgvvi9wLTPtNk6ILi4tekgscfH0cDMIL74vcC0z7TZLiIKSURTX0NSRUFURUZPTERFUl9DQVBUSU9OICK79SDG+rT1uKYguLi15bTCILD6waS/obytIL+ht6+537v9IgpJRFNfREVMRVRFSVRFTV9DQVBUSU9OICLGxMDPIMH2v+yx4iDIrsDOIgpJRFNfREVMRVRFRk9MREVSX0NBUFRJT04gIsb6tPUgwfa/7LHiIMiuwM4iCklEU19ERUxFVEVJVEVNX1RFWFQgIrTnvcXAuiAgJyUxJ8C7IMH2v+yx4rimILnZtvi0z7HuPyIKSURTX0RFTEVURU1VTFRJUExFX1RFWFQgIrTnvcXAuiAlMSC+xsDMxdsotekpwLsgwfa/7LHiuKYgudm2+LTPse4/IgpJRFNfREVMRVRFU0VMRUNURURfVEVYVCAitOe9xcC6ILyxxcO1yCC+xsDMxdsotekpwLsgwfa/7LHiuKYgudm2+LTPse4/IgpJRFNfVFJBU0hJVEVNX1RFWFQgIrTnvcXAuiAnJTEnIMC7KLimKSDI3sH2xevAuLfOILq4s7ux4rimILnZtvi0z7HuPyIKSURTX1RSQVNIRk9MREVSX1RFWFQgIrTnvcXAuiAnJTEnILD6ILHXIL7IwMcgs7u/68C7IMjewfbF68C4t84gurizu7HiuKYgudm2+LTPse4/IgpJRFNfVFJBU0hNVUxUSVBMRV9URVhUICK0573FwLogJyUxJyC16cC7KLimKSDI3sH2xevAuLfOILq4s7ux4rimILnZtvi0z7HuPyIKSURTX0NBTlRUUkFTSF9URVhUICJUaGUgaXRlbSAnJTEnIGNhbid0IGJlIHNlbnQgdG8gVHJhc2guIERvIHlvdSB3YW50IHRvIGRlbGV0ZSBpdCBpbnN0ZWFkPyIKSURTX09WRVJXUklURUZJTEVfVEVYVCAiVGhpcyBmb2xkZXIgYWxyZWFkeSBjb250YWlucyBhIGZpbGUgY2FsbGVkICclMScuXG5cbkRvIHlvdSB3YW50IHRvIHJlcGxhY2UgaXQ/IgpJRFNfT1ZFUldSSVRFRklMRV9DQVBUSU9OICLGxMDPILWkvu6+srHiIMiuwM4iCklEU19PVkVSV1JJVEVGT0xERVJfVEVYVCAiICDAzCDG+rT1tMIgwMy5zCAnJTEnwMy29SDAzLinwLsgsKHB+CDG+rT1uKYgxvfH1MfPsO0gwNa9wLTPtNkuXG5cbiJcCiAgICAgIri4vuAgtOe9xcDMILCwwLogwMy4p8C4t84gtOu78yDG+rT1uKYgwfbBpMfRtNm46SC8scXDtcggxvq09bTCILTrw7y1ySCwzcDUtM+02VxuIlwKICAgICAiILTrw7y1ySCwzcDUtM+02S4gtOe9xcC6IMDMIMb6tPW4piDAzLW/vcPFsLDFs6ogurm758fPsNq9wLTPse4/IgoKCi8qIG1lc3NhZ2UgYm94IHN0cmluZ3MgKi8KSURTX1JFU1RBUlRfVElUTEUgICAgICAgIrTZvcMgvcPA2yIgCklEU19SRVNUQVJUX1BST01QVCAgICAgICK0573FwLogwKm1tb/swe4gwOe6zsbDwLsgIMDnx/bHz7DavcC0z7HuPyIKSURTX1NIVVRET1dOX1RJVExFICAgICAgIrL0seIiCklEU19TSFVURE9XTl9QUk9NUFQgICAgICK0573FwLogIFdpbmUgvLy8x8C7ILL0sNq9wLTPse4/IgoKLyogUnVuIEZpbGUgZGlhbG9nICovCklEU19SVU5ETEdfRVJST1IgICAgICAgICAgICLGxMDPIL3Hx+AgtOvIrSC788DauKYguri/qcHZvPYgvvi9wLTPtNkos7u6ziC/obevKSIKSURTX1JVTkRMR19CUk9XU0VfRVJST1IgICAgIsOjseIgtOvIrSC788DauKYguri/qSDB2SC89iC++L3AtM+02Sizu7rOIL+ht68pIgpJRFNfUlVORExHX0JST1dTRV9DQVBUSU9OICAiw6Ox4iIKSURTX1JVTkRMR19CUk9XU0VfRklMVEVSICAgIr3Hx+AgxsTAz1wwKi5leGVcMEG48LXnIMbEwM9cMCouKlwwXDAiCgovKiBzaGVsbCBmb2xkZXIgcGF0aCBkZWZhdWx0IHZhbHVlcyAqLwpJRFNfUFJPR1JBTVMgICAgICAgICAgICAgICAgIr3DwNsguN60ulxcx8G3zrHXt6UiCklEU19QRVJTT05BTCAgICAgICAgICAgICAgICAis7sgua68rSIKSURTX0ZBVk9SSVRFUyAgICAgICAgICAgICAgICLB8bDcw6Ox4iIKSURTX1NUQVJUVVAgICAgICAgICAgICAgICAgICK9w8DbILjetLpcXMfBt86x17elXFy9w8DbIMfBt86x17elIgpJRFNfUkVDRU5UICAgICAgICAgICAgICAgICAgIsPWsdkgxsTAzyIKSURTX1NFTkRUTyAgICAgICAgICAgICAgICAgICK6uLO7seIiCklEU19TVEFSVE1FTlUgICAgICAgICAgICAgICAivcPA2yC43rS6IgpJRFNfTVlNVVNJQyAgICAgICAgICAgICAgICAgIrO7IMC9vsciCklEU19NWVZJREVPICAgICAgICAgICAgICAgICAis7sguvG18L/AIgpJRFNfREVTS1RPUERJUkVDVE9SWSAgICAgICAgIrWlvbrFqcW+IgpJRFNfTkVUSE9PRCAgICAgICAgICAgICAgICAgIrPXxq6/9sWpIMivsOYiCklEU19URU1QTEFURVMgICAgICAgICAgICAgICAiVGVtcGxhdGVzIgpJRFNfQVBQREFUQSAgICAgICAgICAgICAgICAgIkFwcGxpY2F0aW9uIERhdGEiCklEU19QUklOVEhPT0QgICAgICAgICAgICAgICAis9fGrr/2xakgyK+w5iIKSURTX0xPQ0FMX0FQUERBVEEgICAgICAgICAgICJMb2NhbCBTZXR0aW5nc1xcQXBwbGljYXRpb24gRGF0YSIKSURTX0lOVEVSTkVUX0NBQ0hFICAgICAgICAgICJMb2NhbCBTZXR0aW5nc1xcVGVtcG9yYXJ5IEludGVybmV0IEZpbGVzIgpJRFNfQ09PS0lFUyAgICAgICAgICAgICAgICAgIkNvb2tpZXMiCklEU19ISVNUT1JZICAgICAgICAgICAgICAgICAiTG9jYWwgU2V0dGluZ3NcXEhpc3RvcnkiCklEU19QUk9HUkFNX0ZJTEVTICAgICAgICAgICAiUHJvZ3JhbSBGaWxlcyIKSURTX01ZUElDVFVSRVMgICAgICAgICAgICAgICKzuyCx17iyIgpJRFNfUFJPR1JBTV9GSUxFU19DT01NT04gICAgIlByb2dyYW0gRmlsZXNcXENvbW1vbiBGaWxlcyIKSURTX0NPTU1PTl9ET0NVTUVOVFMgICAgICAgICK5rrytIgpJRFNfQURNSU5UT09MUyAgICAgICAgICAgICAgIr3DwNu43rS6XFzHwbfOsde3pVxcsPy4riC1tbG4IgpJRFNfQ09NTU9OX01VU0lDICAgICAgICAgICAgIrmuvK1cXLO7IMC9vsciCklEU19DT01NT05fUElDVFVSRVMgICAgICAgICAiua68rVxcs7sgsde4siIKSURTX0NPTU1PTl9WSURFTyAgICAgICAgICAgICK5rrytXFyzuyC68bXwv8AiCklEU19DREJVUk5fQVJFQSAgICAgICAgICAgICAiTG9jYWwgU2V0dGluZ3NcXEFwcGxpY2F0aW9uIERhdGFcXE1pY3Jvc29mdFxcQ0QgQnVybmluZyIKCklEU19ORVdGT0xERVIJCSK79SDG+rT1IgoKSURTX0NQQU5FTF9USVRMRSAgICAgICAgICAgICJXaW5lIMGmvu7GxyIKSURTX0NQQU5FTF9OQU1FICAgICAgICAgICAgICLAzLinIgpJRFNfQ1BBTkVMX0RFU0NSSVBUSU9OICAgICAgIryzuO0iCn0KClNUUklOR1RBQkxFCnsKSURTX0xJQ0VOU0VfQ0FQVElPTiwgICAgICAgICAgICAiV2luZSC288DMvL69uiIKSURTX0xJQ0VOU0UsCiJXaW5lIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBcCm1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgXApMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgXAp2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuXApXaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIFwKYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgXApNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBcCkxlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cblwKWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBcCkxpY2Vuc2UgYWxvbmcgd2l0aCBXaW5lOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIFwKRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4iCn0K