LyoKICogUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDQgSGFqaW1lIFNlZ2F3YQogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgpMQU5HVUFHRSBMQU5HX0pBUEFORVNFLCBTVUJMQU5HX0RFRkFVTFQKCi8qCiAqIE1lbnUKICovCgpJRFJfUkVHRURJVF9NRU5VIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFBPUFVQICKDjINXg1iDZ4OKKCZSKSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIoOMg1eDWINng4qCzINDg5ODfIFbg2coJkkpLi4uIiwgICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gIoOMg1eDWINng4qCzINHg06DWIN8gVuDZygmRSkuLi4iLCAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAig2yDYoNng4+BW4NOg4yDV4NYg2eDioLJkNqRsSgmQykuLi4iLCBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAig2yDYoNng4+BW4NOg4yDV4NYg2eDioKpgueQ2JJmKCZEKS4uLiIsIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICKI8438KCZQKVx0Q3RybCtQIiwgICAgICAgICAgICAgIElEX1JFR0lTVFJZX1BSSU5ULCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAij0mXuSgmeCkiLCAgICAgICAgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfRVhJVAogICAgRU5ECiAgICBQT1BVUCAildKPVygmRSkiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICKVz41YKCZNKSIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBQT1BVUCAikFaLSygmTikiCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIoNMgVsoJkspIiwgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICKVto6al/EoJlMpIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAig2+DQ4Npg4ooJkIpIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiRFdPUkSSbCgmRCkiLCAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIo3tj5woJkQpXHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICKWvJFPgsyVz41YKCZSKVx0RjIiLCAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAig0yBW5a8gvCDUoNzgVsoJkMpIiwgICAgICAgICAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAijJ+N9SgmRilcdEN0cmwrRiIsICAgICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAijp+CzIyfjfWM85XiKCZ4KVx0RjMiLCAgICAgICAgICAgICAgSURfRURJVF9GSU5ETkVYVCwgR1JBWUVECiAgICBFTkQKICAgIFBPUFVQICKVXI6mKCZWKSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIoNYg2WBW4Neg1iDb4FbKCZCKSIsICAgICAgICAgICAgICAgICBJRF9WSUVXX1NUQVRVU0JBUgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICKVqoqEKCZsKSIsICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1BMSVQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAig4qDdIOMg2KDVoOFKCZSKVx0RjUiLCAgICAgICAgICAgICAgICBJRF9WSUVXX1JFRlJFU0gKICAgIEVORAogICAgUE9QVVAgIoKoi0OCyZP8gugoJkYpIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAigqiLQ4LJk/yC6ILJkseJwSgmQSkiLCAgICAgICAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMKICAgICAgICBNRU5VSVRFTSAigqiLQ4LJk/yC6IKpgueN7Y+cKCZSKSIsICAgICAgICAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUKICAgIEVORAogICAgUE9QVVAgIoN3g4uDdigmSCkiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICKDd4OLg3YoJkgpXHRGMSIsICAgICAgICAgICAgSURfSEVMUF9IRUxQVE9QSUNTCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIoNvgVuDV4OHg5OP7pXxKCZBKSIsICAgICAgSURfSEVMUF9BQk9VVAogICAgRU5ECkVORAoKSURSX1BPUFVQX01FTlVTIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICBQT1BVUCAiIgogIEJFR0lOCglNRU5VSVRFTSAilc+NWCgmTSkiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCglNRU5VSVRFTSAig2+DQ4Npg4qDZoFbg16C8JXPjVgiLCAgICAgICAgICBJRF9FRElUX01PRElGWV9CSU4KCU1FTlVJVEVNIFNFUEFSQVRPUgoJTUVOVUlURU0gIo3tj5woJkQpXHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQoJTUVOVUlURU0gIpa8kU+CzJXPjVgoJlIpIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogIEVORAogIFBPUFVQICIiCiAgQkVHSU4KICAgICAgICBQT1BVUCAikFaLSygmTikiCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIoNMgVsoJkspIiwgICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICKVto6al/EoJlMpIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAig2+DQ4Npg4ooJkIpIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiRFdPUkSSbCgmRCkiLCAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIo3tj5woJkQpXHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICKWvJFPgsyVz41YKCZSKVx0RjIiLCAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAig0yBW5a8gvCDUoNzgVsoJkMpIiwgICAgICAgICAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAijJ+N9SgmRilcdEN0cmwrRiIsICAgICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICBFTkQKRU5ECgoKLyoKICogRGlhbG9nCiAqLwoKSUREX0VESVRfU1RSSU5HIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICKVto6al/GCzJXSj1ciCkZPTlQgOSwgIk1TIFVJIEdvdGhpYyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAikmyCzJa8kU86IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAig2aBW4NeOiIsSURDX1NUQVRJQyw1LDMwLDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsNjAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAig0yDg4OTg1qDiyIsSURDQU5DRUwsMTc1LDYwLDMwLDExLFdTX0dST1VQCkVORAoKSUREX0VESVRfRFdPUkQgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgMTAwClNUWUxFIERTX01PREFMRlJBTUUgfCBEU19OT0lETEVNU0cgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJEV09SRJJsgsyV0o9XIgpGT05UIDksICJNUyBVSSBHb3RoaWMiCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIpJsgsyWvJFPOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIoNmgVuDXjoiLElEQ19TVEFUSUMsNSwzMCw5MCw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCw5MCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgR1JPVVBCT1ggICAgICAgICKDeIFbg1giLCBJRENfRFdPUkRfQkFTRSwgMTIwLCAzMCwgODUsIDM3LCBCU19HUk9VUEJPWAogICAgQVVUT1JBRElPQlVUVE9OICIxNpBpkJQiLCBJRENfRFdPUkRfSEVYLCAxMzAsIDQwLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIEFVVE9SQURJT0JVVFRPTiAiMTCQaZCUIiwgSURDX0RXT1JEX0RFQywgMTMwLCA1MiwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw4MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICKDTIODg5ODWoOLIixJRENBTkNFTCwxNzUsODAsMzAsMTEsV1NfR1JPVVAKRU5ECgovKgogKiBTdHJpbmcgVGFibGUKICovCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0xJU1RfQ09MVU1OX05BTUUgICAgIpa8kU8iCiAgICBJRFNfTElTVF9DT0xVTU5fVFlQRSAgICAig16DQ4N2IgogICAgSURTX0xJU1RfQ09MVU1OX0RBVEEgICAgIoNmgVuDXiIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0FQUF9USVRMRSAgICAgICAgICAgIoOMg1eDWINng4qDR4Nmg0KDXiIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfTUVOVSAgICAgICAgIoOMg1eDWINng4qRU5HMgvCRgI3sgreC6YNSg32Dk4NoIgogICAgSURfRURJVF9NRU5VICAgICAgICAgICAgIpJsgsaDTIFbgvCV0o9XgreC6YNSg32Dk4NoIgogICAgSURfVklFV19NRU5VICAgICAgICAgICAgIoOMg1eDWINng4qDRYNCg5ODaINFgvCDSoNYg16DfYNDg1mCt4Lpg1KDfYOTg2giCiAgICBJRF9GQVZPUklURVNfTUVOVSAgICAgICAiguaCrY5ngqSDTIFbgsmDQYNOg1qDWIK3gumDUoN9g5ODaCIKICAgIElEX0hFTFBfTUVOVSAgICAgICAgICAgICKDjINXg1iDZ4OKg0eDZoNCg16CyYLCgqKCxILMg3eDi4N2guKP7pXxgvCVXI6mgreC6YNSg32Dk4NoIgogICAgSURfRURJVF9ORVdfTUVOVSAgICAgICAgIpBWgrWCooNMgVuC4pJsgvCN7JCsgreC6YNSg32Dk4NoIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9FRElUX01PRElGWSAgICAgICAgICAikmyCzINmgVuDXoLwlc+NWCIKICAgIElEX0VESVRfTkVXX0tFWSAgICAgICAgICKQVoK1gqKDTIFbgvCSx4nBIgogICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUgIpBWgrWCopW2jpqX8YLwkseJwSIKICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFICKQVoK1gqKDb4NDg2mDioLwkseJwSIKICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUgICKQVoK1gqJEV09SRJJsgvCSx4nBIgogICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFICKDZYNMg1iDZ4N0g0CDQ4OLgvCDjINXg1iDZ4OKgsmDQ4OTg3yBW4NnIgogICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAig4yDV4NYg2eDioLMiOqVlILcgr2CzZFTlZSC8INlg0yDWINng3SDQINDg4uCyYNHg06DWIN8gVuDZyIKICAgIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICKDioOCgVuDZ4NSg5ODc4OFgVuDXoLMg4yDV4NYg2eDioLJkNqRsSIKICAgIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICKDioOCgVuDZ4NSg5ODc4OFgVuDXoLMg4yDV4NYg2eDioKpgueQ2JJmIgogICAgSURfUkVHSVNUUllfUFJJTlQgICAgICAgIoOMg1eDWINng4qCzIjqlZSC3IK9gs2RU5WUgvCI8438IgovKiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAig4yDV4NYg2eDioNHg2aDQoNegsyDd4OLg3aC8IpKgq0iICovCiAgICBJRF9IRUxQX0FCT1VUICAgICAgICAgICAig3aDjYNPg4mDgILMj+6V8YFBg2+BW4NXg4eDk4FBkpiN7I7SgvCVXI6mIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9FWElUICAgICAgICAig4yDV4NYg2eDioNHg2aDQoNegvCPSZe5IgogICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTICKDTIFbgvCCqItDgsmT/ILogsmSx4nBIgogICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFICKDTIFbgvCCqItDgsmT/ILogqmC543tj5wiCiAgICBJRF9WSUVXX1NUQVRVU0JBUiAgICAgICAig1iDZYFbg16DWINvgVuC8JVcjqaBRYlCgrciCiAgICBJRF9WSUVXX1NQTElUICAgICAgICAgICAig3mDQ4OTitSCzIK1gquC6ILMiMqSdYLwlc+NWCIKICAgIElEX1ZJRVdfUkVGUkVTSCAgICAgICAgICKDRYNCg5ODaINFgvCDioN0g4yDYoNWg4UiCiAgICBJRF9FRElUX0RFTEVURSAgICAgICAgICAikUmR8IK1gr2NgJbagvCN7Y+cIgogICAgSURfRURJVF9SRU5BTUUgICAgICAgICAgIpFJkfCCtYK9jYCW2oLMlryRT4Lwlc+NWCIKICAgIElEX0VESVRfQ09QWUtFWU5BTUUgICAgICKRSZHwgrWCvYNMgVuCzJa8kU+C8INOg4qDYoN2g3uBW4NogsmDUoNzgVsiCiAgICBJRF9FRElUX0ZJTkQgICAgICAgICAgICAig0yBW4FBkmyBQYNmgVuDXoKpgueVto6al/GC8IyfjfUiCiAgICBJRF9FRElUX0ZJTkRORVhUICAgICAgICAiiMiRT4LMjJ+N9Y/wjI+CyYKogqKCxI6fgsyM85XigvCMn431IgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfRVJST1IJCSAgICAig0eDiYFbIgogICAgSURTX0JBRF9LRVkJCSAgICAig0yBWyAnJXMngqqPipO+gsWCq4LcgrmC8SIKICAgIElEU19CQURfVkFMVUUgICAgICAgICAgICKSbCAnJXMngqqPipO+gsWCq4LcgrmC8SIKICAgIElEU19VTlNVUFBPUlRFRF9UWVBFICAgICKCsYLMg16DQ4N2gsyDTIFbgs2V0o9XgsWCq4LcgrmC8SAoJWxkKSIKICAgIElEU19UT09fQklHX1ZBTFVFICAgICAgICKSbIKqkeWCq4K3gqyC3IK3ICglbGQpIgogICAgSURTX0RFTEVURV9CT1hfVElUTEUgICAgIpJsgsyN7Y+cim2URiIKICAgIElEU19ERUxFVEVfQk9YX1RFWFQgICAgICKWe5OWgskgJyVzJ4Lwje2PnIK1gtyCt4KpPyIKICAgIElEU19ORVdLRVkgICAgICAgICAgICAgICKQVoK1gqKDTIFbICMlZCIKICAgIElEU19ORVdWQUxVRSAgICAgICAgICAgICKQVoK1gqKSbCAjJWQiCkVORAoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyoKICogVEVYVElOQ0xVREUKICovCgoxIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFCkJFR0lOCiAgICAicmVzb3VyY2UuaFwwIgpFTkQKCgoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKLyoKICpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQogKkJFR0lOCiAqICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICKDjINXg1iDZ4OKg0eDZoNCg16CzIN3g4uDdoLwikqCrSIKICogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIoN2g42DT4OJg4CCzI/ulfGBQYNvgVuDV4OHg5OBQZKYjeyO0oLwlVyOpiIKICpFTkQKICovCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCg==