LyoKICogY3J5cHQzMiBkbGwgcmVzb3VyY2VzCiAqCiAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4YW5kZXIgTi4gU/hybmVzIDxhbGV4QHRoZWhhbmRvZmFnb255LmNvbT4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKTEFOR1VBR0UgTEFOR19OT1JXRUdJQU4sIFNVQkxBTkdfTk9SV0VHSUFOX0JPS01BTAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKewogICAgSURTX0FVVEhPUklUWV9LRVlfSUQgIklkZW50aWZpc2VyZXIgZm9yIGF1dGVudGlzZXJpbmdzbvhra2VsIgogICAgSURTX0tFWV9BVFRSSUJVVEVTICJO+GtrZWxlZ2Vuc2thcGVyIgogICAgSURTX0tFWV9VU0FHRV9SRVNUUklDVElPTiAiQmVncmVuc25pbmcgYXYgbvhra2VsYnJ1ayIKICAgIElEU19TVUJKRUNUX0FMVF9OQU1FICJBbHRlcm5hdGl2dCBuYXZuIGZvciBlbW5lIgogICAgSURTX0lTU1VFUl9BTFRfTkFNRSAiQWx0ZXJuYXRpdnQgbmF2biBmb3IgdXRzdGVkZXIiCiAgICBJRFNfQkFTSUNfQ09OU1RSQUlOVFMgIkJhc2lzYmVncmVuc25pbmdlciIKICAgIElEU19LRVlfVVNBR0UgIk74a2tlbGJydWsiCiAgICBJRFNfQ0VSVF9QT0xJQ0lFUyAiU2VydGlmaWthdGhvbGRuaW5nZXIiCiAgICBJRFNfU1VCSkVDVF9LRVlfSURFTlRJRklFUiAiSWRlbnRpZmlzZXJlciBmb3IgZW1uZW74a2tlbCIKICAgIElEU19DUkxfUkVBU09OX0NPREUgIkNSTC1ncnVubmtvZGUiCiAgICBJRFNfQ1JMX0RJU1RfUE9JTlRTICJDUkwtZGlzdHJpYnVzam9uc3B1bmt0ZXIiCiAgICBJRFNfRU5IQU5DRURfS0VZX1VTQUdFICJGb3JiZWRyZXQgbvhra2VsYnJ1ayIKICAgIElEU19BVVRIT1JJVFlfSU5GT19BQ0NFU1MgIk15bmRpZ2hldC1pbmZvcm1hc2pvbnN0aWxnYW5nIgogICAgSURTX0NFUlRfRVhURU5TSU9OUyAiU2VydGlmaWthdHV0dmlkZWxzZXIiCiAgICBJRFNfTkVYVF9VUERBVEVfTE9DQVRJT04gIk5lc3RlIG9wcGRhdGVyaW5nc3BsYXNzZXJpbmciCiAgICBJRFNfWUVTX09SX05PX1RSVVNUICJKYSBlbGxlciBuZWkgdGlsbGl0IgogICAgSURTX0VNQUlMX0FERFJFU1MgIkUtcG9zdGFkcmVzc2UiCiAgICBJRFNfVU5TVFJVQ1RVUkVEX05BTUUgIlVzdHJ1a3R1cmVydCBuYXZuIgogICAgSURTX0NPTlRFTlRfVFlQRSAiSW5uaG9sZHN0eXBlIgogICAgSURTX01FU1NBR0VfRElHRVNUICJNZWxkaW5nc3NhbW1lbmRyYWciCiAgICBJRFNfU0lHTklOR19USU1FICJTaWduZXJpbmdzdGlkc3B1bmt0IgogICAgSURTX0NPVU5URVJfU0lHTiAiVGVsbGVyc3ltYm9sIgogICAgSURTX0NIQUxMRU5HRV9QQVNTV09SRCAiVXRmb3JkcmUgcGFzc29yZCIKICAgIElEU19VTlNUUlVDVFVSRURfQUREUkVTUyAiVXN0cnVrdHVyZXJ0IGFkcmVzc2UiCiAgICBJRFNfU01JTUVfQ0FQQUJJTElUSUVTICJTTUlNRS1ldm5lciIKICAgIElEU19QUkVGRVJfU0lHTkVEX0RBVEEgIkZvcnRyZWtrIHNpZ25lcnQgZGF0YSIKICAgIElEU19DUFMgIkNQUyIKICAgIElEU19VU0VSX05PVElDRSAiQnJ1a2VydmFyc2VsIgogICAgSURTX09DU1AgIk9uLWxpbmUgQ2VydGlmaWNhdGUgU3RhdHVzIFByb3RvY29sIgogICAgSURTX0NBX0lTU1VFUiAiVXRzdGVkZXIgZm9yIHNlcnRpZmlzZXJpbmdzYXV0b3JpdGV0IgogICAgSURTX0NFUlRfVEVNUExBVEVfTkFNRSAiTmF2biBw5SBzZXJ0aWZpc2VyaW5nc21hbCIKICAgIElEU19DRVJUX1RZUEUgIlNlcnRpZmlrYXR0eXBlIgogICAgSURTX0NFUlRfTUFOSUZPTEQgIlNlcnRpZmlrYXRtYW5nZm9sZCIKICAgIElEU19ORVRTQ0FQRV9DRVJUX1RZUEUgIk5ldHNjYXBlLXNlcnRpZmlrYXR0eXBlIgogICAgSURTX05FVFNDQVBFX0JBU0VfVVJMICJOZXRzY2FwZS1iYXNpcy1VUkwiCiAgICBJRFNfTkVUU0NBUEVfUkVWT0NBVElPTl9VUkwgIk5ldHNjYXBlLXRpbGJha2VrYWxsaW5nLVVSTCIKICAgIElEU19ORVRTQ0FQRV9DQV9SRVZPQ0FUSU9OX1VSTCAiTmV0c2NhcGUtQ0EtdGlsYmFrZWthbGxpbmctVVJMVVJMIgogICAgSURTX05FVFNDQVBFX0NFUlRfUkVORVdBTF9VUkwgIk5ldHNjYXBlLXNlcnRpZmlrYXRmb3JueWluZy1VUkwiCiAgICBJRFNfTkVUU0NBUEVfQ0FfUE9MSUNZX1VSTCAiTmV0c2NhcGUtQ0EtcG9saXRpa2stVVJMIgogICAgSURTX05FVFNDQVBFX1NTTF9TRVJWRVJfTkFNRSAiTmV0c2NhcGUtU1NMLXRqZW5lcm5hdm4iCiAgICBJRFNfTkVUU0NBUEVfQ09NTUVOVCAiTmV0c2NhcGUta29tbWVudGFyIgogICAgSURTX1NQQ19TUF9BR0VOQ1lfSU5GTyAiU3BjU3BBZ2VuY3lJbmZvIgogICAgSURTX1NQQ19GSU5BTkNJQUxfQ1JJVEVSSUEgIlNwY0ZpbmFuY2lhbENyaXRlcmlhIgogICAgSURTX1NQQ19NSU5JTUFMX0NSSVRFUklBICJTcGNNaW5pbWFsQ3JpdGVyaWEiCiAgICBJRFNfQ09VTlRSWSAiTGFuZC9SZWdpb24iCiAgICBJRFNfT1JHQU5JWkFUSU9OICJPcmdhbmlzYXNqb24iCiAgICBJRFNfT1JHQU5JWkFUSU9OQUxfVU5JVCAiT3JnYW5pc2Fzam9uc2VsbCBlbmhldCIKICAgIElEU19DT01NT05fTkFNRSAiVmFubGlnIG5hdm4iCiAgICBJRFNfTE9DQUxJVFkgIkxva2FsaXRldCIKICAgIElEU19TVEFURV9PUl9QUk9WSU5DRSAiRnlsa2UiCiAgICBJRFNfVElUTEUgIlRpdHRlbCIKICAgIElEU19HSVZFTl9OQU1FICJPcHBnaXR0IG5hdm4iCiAgICBJRFNfSU5JVElBTFMgIkluaXRpYWxlciIKICAgIElEU19TVVJfTkFNRSAiRXR0ZXJuYXZuIgogICAgSURTX0RPTUFJTl9DT01QT05FTlQgIkRvbWVuZWtvbXBvbmVudCIKICAgIElEU19TVFJFRVRfQUREUkVTUyAiR2F0ZWFkcmVzc2UiCiAgICBJRFNfU0VSSUFMX05VTUJFUiAiU2VyaWVudW1tZXIiCiAgICBJRFNfQ0FfVkVSU0lPTiAiQ0EtdmVyc2pvbiIKICAgIElEU19DUk9TU19DQV9WRVJTSU9OICJLcnlzcyBDQS12ZXJzam9uIgogICAgSURTX1NFUklBTElaRURfU0lHX1NFUklBTF9OVU1CRVIgIlNlcmllbnVtbWVyIGZvciBzZXJpYWxpc2VydCBzaWduYXR1ciIKICAgIElEU19QUklOQ0lQQUxfTkFNRSAiSG92ZWRuYXZuIgogICAgSURTX1dJTkRPV1NfUFJPRFVDVF9VUERBVEUgIldpbmRvd3MtcHJvZHVrdG9wcGRhdGVyaW5nIgogICAgSURTX0VOUk9MTE1FTlRfTkFNRV9WQUxVRV9QQUlSICJJbm5ydWxsZXJpbmdzLW5hdm5ldmVyZGlwYXIiCiAgICBJRFNfT1NfVkVSU0lPTiAiT1MtdmVyc2pvbiIKICAgIElEU19FTlJPTExNRU5UX0NTUCAiSW5ucnVsbGVyaW5ncy1DU1AiCiAgICBJRFNfQ1JMX05VTUJFUiAiQ1JMLW51bW1lciIKICAgIElEU19ERUxUQV9DUkxfSU5ESUNBVE9SICJEZWx0YSBDUkwtaW5kaWthdG9yIgogICAgSURTX0lTU1VJTkdfRElTVF9QT0lOVCAiVXRzdGVkZXIgZGlzdHJpYnVzam9uc3B1bmt0IgogICAgSURTX0ZSRVNIRVNUX0NSTCAiTnllc3RlIENSTCIKICAgIElEU19OQU1FX0NPTlNUUkFJTlRTICJOYXZuZWJlZ3JlbnNuaW5nZXIiCiAgICBJRFNfUE9MSUNZX01BUFBJTkdTICJGcmFtZ2FuZ3Nt5XRla2FydGxlZ2dpbmdlciIKICAgIElEU19QT0xJQ1lfQ09OU1RSQUlOVFMgIkZyYW1nYW5nc23ldGViZWdyZXNuaW5nZXIiCiAgICBJRFNfQ1JPU1NfQ0VSVF9ESVNUX1BPSU5UUyAiRGlzdHJpYnVzam9uc3B1bmt0ZXIgZm9yIGtyeXNzLXNlcnRpZmlrYXQiCiAgICBJRFNfQVBQTElDQVRJT05fUE9MSUNJRVMgIkZyYW1nYW5nc23ldGVyIGZvciBwcm9ncmFtbWVycyIKICAgIElEU19BUFBMSUNBVElPTl9QT0xJQ1lfTUFQUElOR1MgIkZyYW1nYW5nc23ldGVrYXJ0bGVnZ2luZ2VyIGZvciBwcm9ncmFtbWVyIgogICAgSURTX0FQUExJQ0FUSU9OX1BPTElDWV9DT05TVFJBSU5UUyAiRnJhbWdhbmdzbeV0ZWJlZ3JlbnNuaW5nZXIgZm9yIHByb2dyYW1tZXIiCiAgICBJRFNfQ01DX0RBVEEgIkNNQy1kYXRhIgogICAgSURTX0NNQ19SRVNQT05TRSAiQ01TLXN2YXIiCiAgICBJRFNfVU5TSUdORURfQ01DX1JFUVVFU1QgIlVzaWduZXJ0IENNQy1mb3Jlc3D4cnNlbCIKICAgIElEU19DTUNfU1RBVFVTX0lORk8gIkNNQy1zdGF0dXNpbmZvcm1hc2pvbiIKICAgIElEU19DTUNfRVhURU5TSU9OUyAiQ01DLXV0dmlkZWxzZXIiCiAgICBJRFNfQ01DX0FUVFJJQlVURVMgIkNNQy1lZ2Vuc2thcGVyIgogICAgSURTX1BLQ1NfN19EQVRBICJQS0NTIDcgRGF0YSIKICAgIElEU19QS0NTXzdfU0lHTkVEICJQS0NTIDcgU2lnbmVydCIKICAgIElEU19QS0NTXzdfRU5WRUxPUEVEICJQS0NTIDcgSW5ucGFra2V0IgogICAgSURTX1BLQ1NfN19TSUdORURfRU5WRUxPUEVEICJQS0NTIDcgU2lnbmVydCBJbm5wYWtrZXQiCiAgICBJRFNfUEtDU183X0RJR0VTVEVEICJQS0NTIDcgRm9yZPh5ZXQiCiAgICBJRFNfUEtDU183X0VOQ1JZUFRFRCAiUEtDUyA3IEtyeXB0ZXJ0IgogICAgSURTX1BSRVZJT1VTX0NBX0NFUlRfSEFTSCAiRm9ycmlnZSBDQS1zZXJ0aWZpa2F0bGFwcHNrYXVzIgogICAgSURTX0NSTF9WSVJUVUFMX0JBU0UgIlZpcnR1ZWx0IGJhc2lzLUNSTC1udW1tZXIiCiAgICBJRFNfQ1JMX05FWFRfUFVCTElTSCAiTmVzdGUgQ1JMLXV0Z2l2aW5nIgogICAgSURTX0NBX0VYQ0hBTkdFICJDQS1rcnlwdGVyaW5nc3NlcnRpZmlrYXQiCiAgICBJRFNfS0VZX1JFQ09WRVJZX0FHRU5UICJBZ2VudCBmb3Igbvhra2VsZ2plbm9wcHJldHRpbmciCiAgICBJRFNfQ0VSVElGSUNBVEVfVEVNUExBVEUgIkluZm9ybWFzam9uIG9tIHNlcnRpZmlrYXRtYWwiCiAgICBJRFNfRU5URVJQUklTRV9ST09UX09JRCAiU3RvcnNlbHNrYXAtcm90LU9JRCIKICAgIElEU19SRE5fRFVNTVlfU0lHTkVSICJUdWxsZXNpZ25lcmVyIgogICAgSURTX0FSQ0hJVkVEX0tFWV9BVFRSICJLcnlwdGVydCBwcml2YXQgbvhra2VsIgogICAgSURTX0NSTF9TRUxGX0NEUCAiUHVibGlzZXJ0IENSTC1wbGFzc2VyaW5nZXIiCiAgICBJRFNfUkVRVUlSRV9DRVJUX0NIQUlOX1BPTElDWSAiSOVuZGhldiBzZXJ0aWZpa2F0bGVua2Vwb2xpdGlrayIKICAgIElEU19UUkFOU0FDVElPTl9JRCAiVHJhbnNha3Nqb25zLWlkIgogICAgSURTX1NFTkRFUl9OT05DRSAiR2plbGRlbmRlIHNlbmRlciIKICAgIElEU19SRUNJUElFTlRfTk9OQ0UgIkdqZWxkZW5kZSBtb3R0YWtlciIKICAgIElEU19SRUdfSU5GTyAiUmVnIGluZm8iCiAgICBJRFNfR0VUX0NFUlRJRklDQVRFICJIZW50IHNlcnRpZmlrYXQiCiAgICBJRFNfR0VUX0NSTCAiSGVudCBDUkwiCiAgICBJRFNfUkVWT0tFX1JFUVVFU1QgIkdqZW5vcHBsaXYgZm9yZXNw+HJzZWwiCiAgICBJRFNfUVVFUllfUEVORElORyAiU3D4cnJpbmcgdmVudGVyIgogICAgSURTX1NPUlRFRF9DVEwgIlRpbGxpdHNsaXN0ZSBmb3Igc2VydGlmaWthdGVyIgogICAgSURTX0FSQ0hJVkVEX0tFWV9DRVJUX0hBU0ggIkFya2l2ZXJ0IG74a2tlbHNlcnRpZmlrYXRsYXBwc2thdXMiCiAgICBJRFNfUFJJVkFURV9LRVlfVVNBR0VfUEVSSU9EICJQcml2YXQgbvhra2VsYnJ1a3BlcmlvZGUiCiAgICBJRFNfQ0xJRU5UX0lORk9STUFUSU9OICJLbGllbnRpbmZvcm1hc2pvbiIKICAgIElEU19TRVJWRVJfQVVUSEVOVElDQVRJT04gIlRqZW5lcmF1dGVudGlzZXJpbmciCiAgICBJRFNfQ0xJRU5UX0FVVEhFTlRJQ0FUSU9OICJLbGllbnRhdXRlbnRpc2VyaW5nIgogICAgSURTX0NPREVfU0lHTklORyAiS29kZXNpZ25lcmluZyIKICAgIElEU19TRUNVUkVfRU1BSUwgIlNpa2tlciBlLXBvc3QiCiAgICBJRFNfVElNRV9TVEFNUElORyAiVGlkc3N0ZW1wbGluZyIKICAgIElEU19NSUNST1NPRlRfVFJVU1RfTElTVF9TSUdOSU5HICJNaWNyb3NvZnQgdGlsbGl0c2xpc3Rlc2lnbmVyaW5nIgogICAgSURTX01JQ1JPU09GVF9USU1FX1NUQU1QSU5HICJNaWNyb3NvZnQgdGlkc3N0ZW1wbGluZyIKICAgIElEU19JUFNFQ19FTkRfU1lTVEVNICJJUC1zaWtrZXJoZXRzZW5kZXN5c3RlbSIKICAgIElEU19JUFNFQ19UVU5ORUwgIklQLXNpa2tlcmhldHN0dW5uZWwtdGVybWluZXJpbmciCiAgICBJRFNfSVBTRUNfVVNFUiAiSVAtc2lra2VyaGV0c2JydWtlciIKICAgIElEU19FRlMgIktyeXB0ZXJlciBmaWxzeXN0ZW0iCiAgICBJRFNfV0hRTF9DUllQVE8gIldpbmRvd3MgbWFza2ludmFyZWRyaXZlci1nb2RramVubmluZyIKICAgIElEU19OVDVfQ1JZUFRPICJXaW5kb3dzIHN5dGVta29tcG9uZW50LWdvZGtqZW5uaW5nIgogICAgSURTX09FTV9XSFFMX0NSWVBUTyAiT0VNIFdpbmRvd3Mgc3lzdGVta29tcG9uZW50LWdvZGtqZW5uaW5nIgogICAgSURTX0VNQkVEREVEX05UX0NSWVBUTyAiSW5uZWJ5Z2dldCBXaW5kb3dzIHN5c3RlbWtvbXBvbmVudC1nb2RramVubmluZyIKICAgIElEU19LRVlfUEFDS19MSUNFTlNFUyAiTvhra2VscGFra2VsaXNlbnNlciIKICAgIElEU19MSUNFTlNFX1NFUlZFUiAiTGlzZW5zdGplbmVyLXZlcmlmaXNlcmluZyIKICAgIElEU19TTUFSVF9DQVJEX0xPR09OICJTbWFydCBDYXJkLXDlbG9nZ2luZyIKICAgIElEU19ESUdJVEFMX1JJR0hUUyAiRGlnaXRhbGUgcmV0dGlnaGV0ZXIiCiAgICBJRFNfUVVBTElGSUVEX1NVQk9SRElOQVRJT04gIkt2YWxpZmlzZXJ0IHVuZGVyb3JkaW5lcmluZyIKICAgIElEU19LRVlfUkVDT1ZFUlkgIk74a2tlbGdqZW5vcHByZXR0aW5nIgogICAgSURTX0RPQ1VNRU5UX1NJR05JTkcgIkRva3VtZW50c2lnbmVyaW5nIgogICAgSURTX0lQU0VDX0lLRV9JTlRFUk1FRElBVEUgIklQLXNpa2tlcmhldCBJS0UgdmlkZXJla29tbWVuIgogICAgSURTX0ZJTEVfUkVDT1ZFUlkgIkZpbGdqZW5vcHByZXR0aW5nIgogICAgSURTX1JPT1RfTElTVF9TSUdORVIgIlJvdGxpc3Rlc2lnbmVyZXIiCiAgICBJRFNfQU5ZX0FQUExJQ0FUSU9OX1BPTElDSUVTICJBbGxlIGZyYW1nYW5nc23ldGVyIGZvciBwcm9ncmFtbWVyIgogICAgSURTX0RTX0VNQUlMX1JFUExJQ0FUSU9OICJLYXRhbG9ndGplbmVzdGUgZS1wb3N0cmVwbGlrZXJpbmciCiAgICBJRFNfRU5ST0xMTUVOVF9BR0VOVCAiQWdlbnQgZm9yIHNlcnRpZmlrYXRmb3Jlc3D4cnNsZXIiCiAgICBJRFNfTElGRVRJTUVfU0lHTklORyAiTGl2c3RpZHNpZ25lcmluZyIKICAgIElEU19BTllfQ0VSVF9QT0xJQ1kgIkFsbGUgZnJhbWdhbmdzbeV0ZXIgZm9yIHV0c3RlZGluZyIKfQo=