LyoKICogUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDIgUm9iZXJ0IERpY2tlbnNvbgogKiBDb3B5cmlnaHQgMjAwNSBNaWtlIE1jQ29ybWFjawogKiBDb3B5cmlnaHQgMjAwNyBZdW5Tb25nIEh3YW5nKGh5czU0NUBkcmVhbXdpei5jb20pCgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojaW5jbHVkZSAicmVzb3VyY2UuaCIKCi8qIEtvcmVhbiByZXNvdXJjZXMgKi8KCkxBTkdVQUdFIExBTkdfS09SRUFOLCBTVUJMQU5HX0RFRkFVTFQKCi8qCiAqIE1lbnUKICovCgpJRFJfUkVHRURJVF9NRU5VIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFBPUFVQICK3ucH2vbrGrriuKCZSKSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIre5wfa9usauuK4gxsTAzyCwocGuv8Cx4igmSSkuLi4iLCAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSAit7nB9r26xq64riDGxMDPILO7urizu7HiKCZFKS4uLiIsICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICK/+LDdILe5wfa9usauuK4gv6yw4SgmQykuLi4iLCBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiv/iw3SC3ucH2vbrGrriuIL+ssOEgsvex4igmRCkuLi4iLCBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiwM684igmUClcdEN0cmwrUCIsICAgICAgICAgICAgIElEX1JFR0lTVFJZX1BSSU5ULCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAis6Gzu7HiKCZYKSIsICAgICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX0VYSVQKICAgIEVORAogICAgUE9QVVAgIsbtwf0oJkUpIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAivPbBpCgmTSkiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgUE9QVVAgIrv1t84guLi16bHiKCZOKSIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiJsWwKCZLKSIsICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICK5rsDav60gsKooJlMpIiwgICAgICAgICAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiwMzB+LCqKCZCKSIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIkRXT1JEILCqKCZEKSIsICAgICAgICAgICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIrTZwd8gua7A2r+tILCqKCZNKSIsICAgICAgIElEX0VESVRfTkVXX01VTFRJX1NUUklOR1ZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIrvowaYoJkQpXHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICLAzLinILnZstmx4igmUilcdEYyIiwgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAixbAgwMy4pyC6ubvnKCZDKSIsICAgICAgICAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiw6Ox4igmRilcdEN0cmwrRiIsICAgICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIrTZwL0gw6Ox4igmeClcdEYzIiwgICAgICAgICAgICBJRF9FRElUX0ZJTkRORVhULCBHUkFZRUQKICAgIEVORAogICAgUE9QVVAgIrq4seIoJlYpIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiu/PFwiDHpbHiwdkoJkIpIiwgICAgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIrOqtKmx4igmTCkiLCAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NQTElUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIrv1t84gsO3EpygmUilcdEY1IiwgICAgICAgICAgICBJRF9WSUVXX1JFRlJFU0gKICAgIEVORAogICAgUE9QVVAgIsHxsNwgw6Ox4igmRikiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICLB8bDcIMOjseIgw9+woSgmQSkuLi4iLCAgICAgICAgICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTCiAgICAgICAgTUVOVUlURU0gIsHxsNwgw6Ox4iDBprDFKCZSKS4uLiIsICAgICAgICAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUKICAgIEVORAogICAgUE9QVVAgIrW1v/K4uygmSCkiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICK1tb/yuLsgx9e48SgmSClcdEYxIiwgICAgICAgICAgSURfSEVMUF9IRUxQVE9QSUNTCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIre5wfa9usauuK4gxu3B/bHiIMGkurgoJkEpIiwgICBJRF9IRUxQX0FCT1VUCiAgICBFTkQKRU5ECgpJRFJfUE9QVVBfTUVOVVMgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogIFBPUFVQICIiCiAgQkVHSU4KCU1FTlVJVEVNICK89sGkKCZNKSIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKCU1FTlVJVEVNICLAzMH4sKogsO3EobHiIiwgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRllfQklOCglNRU5VSVRFTSBTRVBBUkFUT1IKCU1FTlVJVEVNICK76MGmKCZEKVx0RGVsIiwgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKCU1FTlVJVEVNICLAzLinILnZstmx4igmUikiLCAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICBFTkQKICBQT1BVUCAiIgogIEJFR0lOCiAgICAgICAgUE9QVVAgIrv1t84guLi16bHiKCZOKSIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiJsWwKCZLKSIsICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiua7A2r+tILCqKCZTKSIsICAgICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIsDMwfiwqigmQikiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJEV09SRCCwqigmRCkiLCAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICK02cHfILmuwNq/rSCwqigmTSkiLCAgICAgICBJRF9FRElUX05FV19NVUxUSV9TVFJJTkdWQUxVRQogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICK76MGmKCZEKVx0RGVsIiwgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiwMy4pyC52bLZseIoJlIpXHRGMiIsICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIrO7urizu7HiKCZFKS4uLiIsICAgICAgICAgICBJRF9FRElUX0VYUE9SVAogICAgICAgIE1FTlVJVEVNICLFsCDAzLinILq5u+coJkMpIiwgICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICLDo7HiKCZGKVx0Q3RybCtGIiwgICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICBFTkQKRU5ECgoKLyoKICogRGlhbG9nCiAqLwoKSUREX0FEREZBVk9SSVRFIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDU1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICLB8bDcIMOjseIgw9+woSIKRk9OVCA5LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICLAzLinOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIsiuwM4iLElET0ssMTQwLDM4LDMwLDEzLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIsPrvNIiLElEQ0FOQ0VMLDE3NSwzOCwzMCwxMywgV1NfR1JPVVAKRU5ECgpJRERfREVMRkFWT1JJVEUgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgOTAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIsHxsNwgw6Ox4iDBprDFIgpGT05UIDksICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIsDMuKc6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgTElTVEJPWCAgICAgICAgIElEQ19OQU1FX0xJU1QsNSwxNSwyMDAsNTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBMQlNfU09SVCB8IExCU19OT0lOVEVHUkFMSEVJR0hUIHwgV1NfVlNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICLIrsDOIixJRE9LLDE0MCw3MSwzMCwxNCxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICLD67zSIixJRENBTkNFTCwxNzUsNzEsMzAsMTQsIFdTX0dST1VQCkVORAoKSUREX0VESVRfU1RSSU5HIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICK5rsDav60gxu3B/SIKRk9OVCA5LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICKwqiDAzLinOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICKwqiC1pcDMxc06IixJRENfU1RBVElDLDUsMzAsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIsiuwM4iLElET0ssMTQwLDU4LDMwLDE0LFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIsPrvNIiLElEQ0FOQ0VMLDE3NSw1OCwzMCwxNCxXU19HUk9VUApFTkQKCklERF9FRElUX0RXT1JEIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRFdPUkQgxu3B/SIKRk9OVCA5LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICKwqiDAzLinOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICKwqiC1pcDMxc06IixJRENfU1RBVElDLDUsMzAsOTAsOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsOTAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIEdST1VQQk9YICAgICAgICAitNzApyIsIElEQ19EV09SRF9CQVNFLCAxMjAsIDMwLCA4NSwgMzcsIEJTX0dST1VQQk9YCiAgICBBVVRPUkFESU9CVVRUT04gIjE2IMH4vPYiLCBJRENfRFdPUkRfSEVYLCAxMzAsIDQwLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIEFVVE9SQURJT0JVVFRPTiAiMTAgwfi89iIsIElEQ19EV09SRF9ERUMsIDEzMCwgNTIsIDYwLCAxMCwgV1NfVEFCU1RPUAogICAgREVGUFVTSEJVVFRPTiAgICLIrsDOIixJRE9LLDE0MCw3NywzMCwxNCxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICLD67zSIixJRENBTkNFTCwxNzUsNzcsMzAsMTQsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9CSU5BUlkgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgMTAwClNUWUxFIERTX01PREFMRlJBTUUgfCBEU19OT0lETEVNU0cgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICLAzMH4ILCqIMbtwf0iCkZPTlQgOSwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAisKogwMy4pzoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAisKogtaXAzMXNOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIENPTlRST0wgICAgICAgICAiIixJRENfVkFMVUVfREFUQSwiSGV4RWRpdCIsV1NfVEFCU1RPUCw0LDQwLDE2MCw0MAogICAgREVGUFVTSEJVVFRPTiAgICLIrsDOIixJRE9LLDE0MCw4MSwzMCwxNSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICLD67zSIixJRENBTkNFTCwxNzUsODAsMzAsMTUsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9NVUxUSV9TVFJJTkcgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgMTc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICK02cHfILmuwNq/rSDG7cH9IgpGT05UIDksICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIrCqIMDMuKc6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEx8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIrCqILWlwMzFzToiLElEQ19TVEFUSUMsNSwzMCwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsMjAwLDExMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFdTX0hTQ1JPTEwgfCBXU19WU0NST0xMIHwgRVNfTVVMVElMSU5FIHwgRVNfV0FOVFJFVFVSTgogICAgREVGUFVTSEJVVFRPTiAgICLIrsDOIixJRE9LLDE0MCwxNTgsMzAsMTMsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiw+u80iIsSURDQU5DRUwsMTc1LDE1OCwzMCwxMyxXU19HUk9VUApFTkQKCklERF9GSU5EIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDg1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICLDo7HiIgpGT05UIDksICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIsOjseI6IixJRENfU1RBVElDLDUsNywxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDQwLDUsMTI1LDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKICAgIExURVhUICAgICAgICAgICAiw6Ox4iC/ybzHOiIsSURDX1NUQVRJQyw1LCAyMiwgMTE5LCA4CiAgICBDSEVDS0JPWCAgICAgICAgIsWwIiwgSURDX0ZJTkRfS0VZUywgNSwgMzQsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IFdTX0dST1VQIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBDSEVDS0JPWCAgICAgICAgIrCqIMDMuKciLCBJRENfRklORF9WQUxVRVMsIDUsIDQ2LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAisKogs7u/6yIsIElEQ19GSU5EX0NPTlRFTlQsIDUsIDU4LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAiv8/A/MfRILTcvu64uCDDo7HiIiwgSURDX0ZJTkRfV0hPTEUsIDUsIDcwLCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIERFRlBVU0hCVVRUT04gICAiw6Ox4iIsSURPSywxNzUsMywzMCwxNCxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICK03bHiIixJRENBTkNFTCwxNzUsMjIsMzAsMTEsIFdTX0dST1VQCkVORAoKSUREX0VYUE9SVF9URU1QTEFURSBESUFMT0cgRElTQ0FSREFCTEUgIDUwLCA1MCwgMjc4LCA1NApTVFlMRSBEU18zRExPT0sgfCBEU19DT05UUk9MIHwgV1NfQ0hJTEQgfCBXU19WSVNJQkxFIHwgV1NfQ0xJUFNJQkxJTkdTIHwKV1NfQk9SREVSCkZPTlQgOSwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAit7nB9r26xq64riC60revv8Cx4iIsIElEQ19FWFBPUlRfQkFTRSwgNiwgNiwgMjY2LCA0MiwgV1NfR1JPVVAKICAgIEFVVE9SQURJT0JVVFRPTiAiuPC1zigmQSkiLCBJRENfRVhQT1JUX0FMTCwgMTIsIDE1LCAyNDQsIDEyCiAgICBBVVRPUkFESU9CVVRUT04gIryxxcO1yCC6zrrQuLgoJkUpOiIsIElEQ19FWFBPUlRfU0VMRUNURUQsIDEyLCAzMCwgNzAsIDEyCiAgICBFRElUVEVYVCAgICAgICAgSURDX0VYUE9SVF9QQVRILCA4MiwgMzAsIDE4NCwgMTIKRU5ECgovKgogKiBTdHJpbmcgVGFibGUKICovCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0xJU1RfQ09MVU1OX05BTUUgICAgIsDMuKciCiAgICBJRFNfTElTVF9DT0xVTU5fVFlQRSAgICAiwb63+SIKICAgIElEU19MSVNUX0NPTFVNTl9EQVRBICAgICK1pcDMxc0iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19BUFBfVElUTEUgICAgICAgICAgICK3ucH2vbrGrriuIMbtwf2x4iIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfTUVOVSAgICAgICAgIrjwtecgt7nB9r26xq64riDA2773ILjtt8kgxvfH1CIKICAgIElEX0VESVRfTUVOVSAgICAgICAgICAgICLFsMDHILCqIMbtwf0guO23ySDG98fUIgogICAgSURfVklFV19NRU5VICAgICAgICAgICAgIre5wfa9usauuK4gw6Igu+e/68DaIMGkwMfHz7TCILjtt8kgxvfH1CIKICAgIElEX0ZBVk9SSVRFU19NRU5VICAgICAgICLA2sHWILvnv+vHz7TCIMWwIMGisdnHz7TCILjtt8kgxvfH1CIKICAgIElEX0hFTFBfTUVOVSAgICAgICAgICAgICK3ucH2vbrGrriuIMbtwf2x4iDBpLq4v80gtbW/8ri7ILq4v6nB1rTCILjtt8kgxvfH1CIKICAgIElEX0VESVRfTkVXX01FTlUgICAgICAgICK79SDFsLOqILCqILi4teW0wiC47bfJIMb3x9QiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX0VESVRfTU9ESUZZICAgICAgICAgICKwqiC1pcDMxbggsO3EobHiIgogICAgSURfRURJVF9ORVdfS0VZICAgICAgICAgIrv1IMWwILT1x8+x4iIKICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFICK79SC5rsDav60gsKogtPXHz7HiIgogICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUgIrv1ILnZwMyzyriuILCqILT1x8+x4iIKICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUgICK79SC09brtIL/2teUgsKogtPXHz7HiIgogICAgSURfRURJVF9ORVdfTVVMVElfU1RSSU5HVkFMVUUgIrv1ILTZwd8gua7A2r+tILCqILT1x8+x4iIKICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRSAixdi9usauIMbEwM/AuyC3ucH2vbrGrriuv6Egs6K/9rPWseIiCiAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICK3ucH2vbrGrriuwMcgwPy6zrOqIMDPus660MC7IMXYvbrGriDGxMDPt84gs7u6uLO7seIiCiAgICBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiv/iw3SDExMe7xc3AxyC3ucH2vbrGrriuIL+ssOEiCiAgICBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiv/iw3SDExMe7xc3AxyC3ucH2vbrGrriuIL+ssOEgx9jBpiIKICAgIElEX1JFR0lTVFJZX1BSSU5UICAgICAgICK3ucH2vbrGrriuIMD8us6zqiC6zrrQIMDOvOLHz7HiIgovKiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAit7nB9r26xq64riDG7cH9seIgtbW/8ri7IL+tseIiICovCiAgICBJRF9IRUxQX0FCT1VUICAgICAgICAgICAix66x17iyIMGkurgsufbBrywgwPrA27HHILq4v6nB1rHiIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9FWElUICAgICAgICAit7nB9r26xq64riDG7cH9seIgs6qwobHiIgogICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTICLB8bDcIMOjseIguPG3z7+hIMWwILT1x8+x4iIKICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURSAiwfGw3CDDo7HiILjxt8+/oSDFsCDB9r/sseIiCiAgICBJRF9WSUVXX1NUQVRVU0JBUiAgICAgICAiu/PFwrnZILq4v6nB1rDFs6ogvPux4rHiIgogICAgSURfVklFV19TUExJVCAgICAgICAgICAgIrXOIMaywLsgs6q0qbTCIMCnxKEgudmy2bHiIgogICAgSURfVklFV19SRUZSRVNIICAgICAgICAgIsOiILTZvcMgwNCx4iIKICAgIElEX0VESVRfREVMRVRFICAgICAgICAgICLAzCC8vbzHIMH2v+yx4iIKICAgIElEX0VESVRfUkVOQU1FICAgICAgICAgICLAzCC8vbzHIMDMuKe52bLZseIiCiAgICBJRF9FRElUX0NPUFlLRVlOQU1FICAgICAivLHFw7XIIMWwwMcgwMy4p8C7IMWsuLO6uLXlv6Egurm75yIKICAgIElEX0VESVRfRklORCAgICAgICAgICAgICLFsCywqsDMs6ogtaXAzMW4v6G8rSDF2L26xq4gua7A2r+tIMOjseIiCiAgICBJRF9FRElUX0ZJTkRORVhUICAgICAgICAiwMzA/CDDo7Hiv6G8rSDB9sGktcggua7A2r+tt84gtNm9wyDDo7HiIgogICAgSURfRURJVF9FWFBPUlQgICAgICAgICAgIre5wfa9usauuK7AxyC8scXDtcggus660MC7IMXYvbrGriDGxMDPt84gs7u6uLO7seIiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19FUlJPUgkJICAgICK/obevIgogICAgSURTX0JBRF9LRVkJCSAgICAixbAgJyVzJ7imIMH6wMfH0iC89iC++L3AtM+02SIKICAgIElEU19CQURfVkFMVUUgICAgICAgICAgICKwqiAnJXMnuKYgwfrAx8fSILz2IL74vcC0z7TZIgogICAgSURTX1VOU1VQUE9SVEVEX1RZUEUgICAgIsDMIMW4wNQgKCV1KcDHIMWwuKYgsO3EpSC89iC++L3AtM+02SIKICAgIElEU19UT09fQklHX1ZBTFVFICAgICAgICKwqsDMILPKuasgxa60z7TZICgldSkiCiAgICBJRFNfREVMRVRFX0JPWF9USVRMRSAgICAisKogwfa/7LHiIMiuwM4iCiAgICBJRFNfREVMRVRFX0JPWF9URVhUICAgICAitOe9xcC6IMDMILCqICclcyfAuyDBpLi7t84gwfa/7LDavcC0z7HuPyIKICAgIElEU19ERUxFVEVfQk9YX1RFWFRfTVVMVElQTEUgIsDMILCqtenAuyDBpLi7t84gwfa/7LDavcC0z7HuPyIKICAgIElEU19ORVdLRVkgICAgICAgICAgICAgICK79SDFsCAjJWQiCiAgICBJRFNfTkVXVkFMVUUgICAgICAgICAgICAiu/UgsKogIyVkIgogICAgSURTX05PVEZPVU5EICAgICAgICAgICAgIiclcyfAuyDDo8C7ILz2IL74vcC0z7TZIgpFTkQKCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICBJRFNfRklMRURJQUxPR19JTVBPUlRfVElUTEUgICAit7nAzMH2vbrGriDGxMDPILrSt6+/wLHiIgogICBJRFNfRklMRURJQUxPR19FWFBPUlRfVElUTEUgICAit7nB9r26xq64riDGxMDPILO7urizu7HiIgogICBJRFNfRklMRURJQUxPR19GSUxURVIgICAgICAgICAit7nB9r26xq64riDGxMDPXDAqLnJlZ1wwV2luOXgvTlQ0ILe5wfa9usauuK4gxsTAzyAoUkVHRURJVDQpXDAqLnJlZ1wwuPC15yDGxMDPICgqLiopXDAqLipcMFwwIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgIElEU19SRUdJU1RSWV9ST09UX05BTUUgICAgICAgICAgICKzuyDExMe7xc0iCiAgIElEU19SRUdJU1RSWV9ERUZBVUxUX1ZBTFVFICAgICAgICIoseK6uykiCiAgIElEU19SRUdJU1RSWV9WQUxVRV9OT1RfU0VUICAgICAgICIosKrAzCDBpMfYwfbB9iC+ysC9KSIKICAgSURTX1JFR0lTVFJZX1ZBTFVFX0NBTlRfRElTUExBWSAgIiiwqsC7ILq4v6kgwdm89iC++MC9KSIKICAgSURTX1JFR0lTVFJZX1VOS05PV05fVFlQRSAgICAgICAgIii+yyC89iC++LTCICVkKSIKRU5ECgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoKCi8qCiAqIFRFWFRJTkNMVURFCiAqLwoKMSBURVhUSU5DTFVERSBESVNDQVJEQUJMRQpCRUdJTgogICAgInJlc291cmNlLmhcMCIKRU5ECgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCg==