LyoKICogQ29weXJpZ2h0IDIwMDYgU2FtdWVsIExpZOluIEJvcmVsbAogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgoKTEFOR1VBR0UgTEFOR19TV0VESVNILCBTVUJMQU5HX0RFRkFVTFQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCnsKICAgIElEU19IVE1MRElTQUJMRUQgICAgIkhUTUwtdmlzbmluZyDkciBpbnRlIGFrdGl2ZXJhZC4iCiAgICBJRFNfSFRNTERPQ1VNRU5UICAgICJIVE1MLWRva3VtZW50IgogICAgSURTX0RPV05MT0FESU5HICAgICAiSORtdGFyLi4uIgogICAgSURTX0lOU1RBTExJTkcgICAgICAiSW5zdGFsbGVyYXIuLi4iCn0KCklEX0RXTF9ESUFMT0cgRElBTE9HIExPQURPTkNBTEwgTU9WRUFCTEUgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgODUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTX0NFTlRFUiB8IFdTX1BPUFVQIHwgV1NfVklTSUJMRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIldpbmUgR2Vja28gSW5zdGFsbGF0aW9uc3Byb2dyYW0iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogICAgTFRFWFQgIkRldHRhIHByb2dyYW0gZvZyc/ZrZXIgdmlzYSBlbiBIVE1MLXNpZGEuIFdpbmUgYmVo9nZlciBoYSBHZWNrbyAoTW96aWxsYXMgSFRNTC0iIFwKICAgICAgICAgICJwcm9ncmFtdmFyYSkgaW5zdGFsbGVyYWQgZvZyIGF0dCB2aXNhIHNpZGFuLiBW5GxqIEluc3RhbGxlcmEgb20gZHUgdmlsbCBhdHQgV2luZSAiIFwKICAgICAgICAgICJhdXRvbWF0aXNrdCBza2EgaORtdGEgb2NoIGluc3RhbGxlcmEgR2Vja28uIiwgSURfRFdMX1NUQVRVUywgMTAsIDEwLCAyNDAsIDMwLCBTU19DRU5URVIKICAgIENPTlRST0wgIlByb2dyZXNzIiwgSURfRFdMX1BST0dSRVNTLCBQUk9HUkVTU19DTEFTU0EsIFdTX0JPUkRFUnxQQlNfU01PT1RILCAxMCwgNDAsIDI0MCwgMTIKICAgIFBVU0hCVVRUT04gIkF2YnJ5dCIsIElEQ0FOQ0VMLCAxNDAsIDYwLCA1MCwgMTUsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTiAiSW5zdGFsbGVyYSIsIElEX0RXTF9JTlNUQUxMLCAyMDAsIDYwLCA1MCwgMTUsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAp9CgovKiBGSVhNRTogVGhpcyBzaG91bGQgYmUgaW4gc2hkb2NsYy5kbGwgKi8KCklEUl9CUk9XU0VfQ09OVEVYVF9NRU5VIE1FTlUKewogICAgUE9QVVAgIlN0YW5kYXJkIgogICAgewogICAgICAgIE1FTlVJVEVNICImQmFr5XQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgSURNX0JBQ0sKICAgICAgICBNRU5VSVRFTSAiJkZyYW3ldCIsICAgICAgICAgICAgICAgICAgICAgICAgIElETV9GT1JXQVJECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlNwYXJhIGJha2cmcnVuZCBzb20uLi4iLCAgICAgICAgICBJRE1fU0FWRUJBQ0tHUk9VTkRBUwogICAgICAgIE1FTlVJVEVNICJBJm525G5kIHNvbSBza3JpdmJvcmRzYmFrZ3J1bmQiLCAgSURNX1NFVEFTQkFDS0dST1VORAogICAgICAgIE1FTlVJVEVNICJLJm9waWVyYSBiYWtncnVuZCIsICAgICAgICAgICAgICAgSURNX0NPUFlCQUNLR1JPVU5ECiAgICAgICAgTUVOVUlURU0gIkFuduRuZCBzb20gJnNrcml2Ym9yZHNvYmpla3QiLCAgICBJRE1fU0VUQVNERVNLVE9QSVRFTQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImTWFya2VyYSBhbGx0IiwgICAgICAgICAgICAgICAgICAgSURNX1NFTEVDVEFMTAogICAgICAgIE1FTlVJVEVNICJLJmxpc3RyYSBpbiIsICAgICAgICAgICAgICAgICAgICAgSURNX1BBU1RFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlNrYXBhIGdlbnYm5GciLCAgICAgICAgICAgICAgICAgICBJRE1fQ1JFQVRFU0hPUlRDVVQKICAgICAgICBNRU5VSVRFTSAiTORnZyB0aWxsICZpIEZhdm9yaXRlciIsICAgICAgICAgIElETV9BRERUT0ZBVk9VUklURVMKICAgICAgICBNRU5VSVRFTSAiJlZpc2Ega+RsbGtvZCIsICAgICAgICAgICAgICAgICAgIElETV9WSUVXU09VUkNFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlRlY2tlbiZrb2RuaW5nIiwgICAgICAgICAgICAgICAgICBJRE1fRU5DT0RJTkcgCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlNrcml2ICZ1dCIsICAgICAgICAgICAgICAgICAgICAgICBJRE1fUFJJTlQKICAgICAgICBNRU5VSVRFTSAiVXBwJmRhdGVyYSIsICAgICAgICAgICAgICAgICAgICAgIElETV9SRUZSRVNIIAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRWdlbnNrYXBhciIsICAgICAgICAgICAgICAgICAgICAgSURNX1BST1BFUlRJRVMKICAgIH0KCiAgICBQT1BVUCAiQmlsZCIKICAgIHsKICAgICAgICBNRU5VSVRFTSAiJtZwcG5hIGzkbmsiLCAgICAgICAgICAgICAgICAgICAgICAgIElETV9PUEVOTElOSwogICAgICAgIE1FTlVJVEVNICLWcHBuYSBs5G5rIGkgbnl0dCAmZvZuc3RlciIsICAgICAgICAgSURNX09QRU5JTk5FV1dJTkRPVwogICAgICAgIE1FTlVJVEVNICJTcGFyYSAmbeVsIHNvbS4uLiIsICAgICAgICAgICAgICAgICAgSURNX1NBVkVUQVJHRVRBUwogICAgICAgIE1FTlVJVEVNICJTa3JpdiB1dCBtJuVsIiwgICAgICAgICAgICAgICAgICAgICAgSURNX1BSSU5UVEFSR0VUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlZpc2EgJmJpbGQiLCAgICAgICAgICAgICAgICAgICAgICAgICBJRE1fU0hPV1BJQ1RVUkUKICAgICAgICBNRU5VSVRFTSAiU3BhcmEgYmlsJmQgc29tLi4uIiwgICAgICAgICAgICAgICAgIElETV9TQVZFUElDVFVSRUFTCiAgICAgICAgTUVOVUlURU0gIlNraSZja2EgYmlsZCBpIGUtcG9zdG1lZGRlbGFuZGUuLi4iLCBJRE1fRU1BSUxQSUNUVVJFCiAgICAgICAgTUVOVUlURU0gIlNrcml2ICZ1dCBiaWxkLi4uIiwgICAgICAgICAgICAgICAgICBJRE1fUFJJTlRQSUNUVVJFCiAgICAgICAgTUVOVUlURU0gIiZH5SB0aWxsIE1pbmEgYmlsZGVyIiwgICAgICAgICAgICAgICBJRE1fR09UT01ZUElDVFVSRVMKICAgICAgICBNRU5VSVRFTSAiQSZuduRuZCBzb20gc2tyaXZib3Jkc2Jha2dydW5kIiwgICAgIElETV9TRVRBU0JBQ0tHUk9VTkQKICAgICAgICBNRU5VSVRFTSAiQW525G5kIHNvbSAmc2tyaXZib3Jkc29iamVrdC4uLiIsICAgIElETV9TRVRBU0RFU0tUT1BJVEVNCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZLbGlwcCB1dCIsICAgICAgICAgICAgICAgICAgICAgICAgICBJRE1fQ1VUCiAgICAgICAgTUVOVUlURU0gIksmb3BpZXJhIiwgICAgICAgICAgICAgICAgICAgICAgICAgICBJRE1fQ09QWQogICAgICAgIE1FTlVJVEVNICJLb3BpZXImYSBnZW525GciLCAgICAgICAgICAgICAgICAgICAgSURNX0NPUFlTSE9SVENVVAogICAgICAgIE1FTlVJVEVNICJLJmxpc3RyYSBpbiIsICAgICAgICAgICAgICAgICAgICAgICAgSURNX1BBU1RFIAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJM5GdnIHRpbGwgJmkgRmF2b3JpdGVyLi4uIiwgICAgICAgICAgSURNX0FERFRPRkFWT1VSSVRFUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRWdlbnNrYXBlciIsICAgICAgICAgICAgICAgICAgICAgICAgSURNX1BST1BFUlRJRVMKICAgIH0KCiAgICBQT1BVUCAiS29udHJvbGwiCiAgICB7CiAgICAgICAgTUVOVUlURU0gIibFbmdyYSIsICAgICAgICBJRE1fVU5ETyAKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJktsaXBwIHV0IiwgICAgIElETV9DVVQKICAgICAgICBNRU5VSVRFTSAiSyZvcGllcmEiLCAgICAgIElETV9DT1BZCiAgICAgICAgTUVOVUlURU0gIksmbGlzdHJhIGluIiwgICBJRE1fUEFTVEUKICAgICAgICBNRU5VSVRFTSAiJlRhIGJvcnQiLCAgICAgIElETV9ERUxFVEUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJk1hcmtlcmEgYWxsdCIsIElETV9TRUxFQ1RBTEwKICAgIH0KCiAgICBQT1BVUCAiVGFiZWxsIgogICAgewogICAgICAgIFBPUFVQICImTWFya2VyYSIKICAgICAgICB7CiAgICAgICAgICAgIE1FTlVJVEVNICImQ2VsbCIsICAgICAgICAgSURNX0NFTEwgCiAgICAgICAgICAgIE1FTlVJVEVNICImUmFkIiwgICAgICAgICAgSURNX1JPVwogICAgICAgICAgICBNRU5VSVRFTSAiJktvbHVtbiIsICAgICAgIElETV9DT0xVTU4KICAgICAgICAgICAgTUVOVUlURU0gIiZUYWJlbGwiLCAgICAgICBJRE1fVEFCTEUKICAgICAgICB9CiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZDZWxsZWdlbnNrYXBlciIsICAgSURNX0NFTExQUk9QRVJUSUVTCiAgICAgICAgTUVOVUlURU0gIiZUYWJlbGxlZ2Vuc2thcGVyIiwgSURNX1RBQkxFUFJPUEVSVElFUwogICAgfQoKICAgIFBPUFVQICIxRFNpdGUgU2VsZWN0IgogICAgewogICAgICAgIE1FTlVJVEVNICImS2xpcHAgdXQiLCAgICAgSURNX0NVVAogICAgICAgIE1FTlVJVEVNICJLJm9waWVyYSIsICAgICAgSURNX0NPUFkKICAgICAgICBNRU5VSVRFTSAiSyZsaXN0cmEgaW4iICAsIElETV9QQVNURQogICAgICAgIE1FTlVJVEVNICImTWFya2VyYSBhbGx0IiwgSURNX1NFTEVDVEFMTCAKICAgICAgICBNRU5VSVRFTSAiU2tyaXYgJnV0IiwgICAgIElETV9QUklOVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgfQoKICAgIFBPUFVQICJBbmthcmUiCiAgICB7CiAgICAgICAgTUVOVUlURU0gIibWcHBuYSIsICAgICAgICAgICAgICAgICAgICBJRE1fT1BFTkxJTksKICAgICAgICBNRU5VSVRFTSAi1nBwbmEgaSBueXR0ICZm9m5zdGVyIiwgICAgIElETV9PUEVOSU5ORVdXSU5ET1cKICAgICAgICBNRU5VSVRFTSAiU3BhcmEgJm3lbCBzb20uLi4iLCAgICAgICAgIElETV9TQVZFVEFSR0VUQVMKICAgICAgICBNRU5VSVRFTSAiU2tyaXYgdXQgbSblbCIsICAgICAgICAgICAgIElETV9QUklOVFRBUkdFVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImS2xpcHAgdXQiLCAgICAgICAgICAgICAgICAgSURNX0NVVAogICAgICAgIE1FTlVJVEVNICJLJm9waWVyYSIsICAgICAgICAgICAgICAgICAgSURNX0NPUFkKICAgICAgICBNRU5VSVRFTSAiS29waWVyJmEgZ2VuduRnIiwgICAgICAgICAgIElETV9DT1BZU0hPUlRDVVQKICAgICAgICBNRU5VSVRFTSAiSyZsaXN0cmEgaW4iLCAgICAgICAgICAgICAgIElETV9QQVNURQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJM5GdnIHRpbGwgJmkgRmF2b3JpdGVyLi4uIiwgSURNX0FERFRPRkFWT1VSSVRFUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRWdlbnNrYXBlciIsICAgICAgICAgICAgICAgSURNX1BST1BFUlRJRVMKICAgIH0KCiAgICBQT1BVUCAiQ29udGV4dCBVbmtub3duIgogICAgewogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgfQoKICAgIFBPUFVQICJEWU5TUkMtYmlsZCIKICAgIHsKICAgICAgICBNRU5VSVRFTSAiJtZwcG5hIiwgICAgICAgICAgICAgICAgICAgICAgICAgIElETV9PUEVOTElOSwogICAgICAgIE1FTlVJVEVNICLWcHBuYSBpIG55dHQgJmb2bnN0ZXIiLCAgICAgICAgICAgSURNX09QRU5JTk5FV1dJTkRPVwogICAgICAgIE1FTlVJVEVNICJTcGFyYSAmbeVsIHNvbS4uLiIsICAgICAgICAgICAgICAgSURNX1NBVkVUQVJHRVRBUwogICAgICAgIE1FTlVJVEVNICJTa3JpdiB1dCBtJuVsIiwgICAgICAgICAgICAgICAgICAgSURNX1BSSU5UVEFSR0VUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlZpc2EgJmJpbGQiLCAgICAgICAgICAgICAgICAgICAgICBJRE1fU0hPV1BJQ1RVUkUKICAgICAgICBNRU5VSVRFTSAiU3BhcmEgYmlsJmQgc29tLi4uIiwgICAgICAgICAgICAgIElETV9TQVZFUElDVFVSRUFTCiAgICAgICAgTUVOVUlURU0gIkEmbnbkbmQgc29tIHNrcml2Ym9yZHNiYWtncnVuZCIsICBJRE1fU0VUQVNCQUNLR1JPVU5ECiAgICAgICAgTUVOVUlURU0gIkFuduRuZCBzb20gJnNrcml2Ym9yZHNvYmpla3QuLi4iLCBJRE1fU0VUQVNERVNLVE9QSVRFTQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImS2xpcHAgdXQiLCAgICAgICAgICAgICAgICAgICAgICAgSURNX0NVVAogICAgICAgIE1FTlVJVEVNICJLJm9waWVyYSIsICAgICAgICAgICAgICAgICAgICAgICAgSURNX0NPUFkKICAgICAgICBNRU5VSVRFTSAiS29waWVyJmEgZ2VuduRnIiwgICAgICAgICAgICAgICAgIElETV9DT1BZU0hPUlRDVVQKICAgICAgICBNRU5VSVRFTSAiSyZsaXN0cmEgaW4iLCAgICAgICAgICAgICAgICAgICAgIElETV9QQVNURQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJM5GdnIHRpbGwgJmkgRmF2b3JpdGVyLi4uIiwgICAgICAgSURNX0FERFRPRkFWT1VSSVRFUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJTcGVsYSB1cHAiLCAgICAgICAgICAgICAgICAgICAgICAgSURNX1BMQVkKICAgICAgICBNRU5VSVRFTSAiU3RvcHBhIiwgICAgICAgICAgICAgICAgICAgICAgICAgIElETV9TVE9QCiAgICAgICAgTUVOVUlURU0gIiZFZ2Vuc2thcGVyIiwgICAgICAgICAgICAgICAgICAgICBJRE1fUFJPUEVSVElFUwogICAgfQoKICAgIFBPUFVQICJBUlQtYmlsZCIKICAgIHsKICAgICAgICBNRU5VSVRFTSAiJtZwcG5hIiwgICAgICAgICAgICAgICAgICAgICAgICAgIElETV9PUEVOTElOSwogICAgICAgIE1FTlVJVEVNICLWcHBuYSBpIG55dHQgJmb2bnN0ZXIiLCAgICAgICAgICAgSURNX09QRU5JTk5FV1dJTkRPVwogICAgICAgIE1FTlVJVEVNICJTcGFyYSAmbeVsIHNvbS4uLiIsICAgICAgICAgICAgICAgSURNX1NBVkVUQVJHRVRBUwogICAgICAgIE1FTlVJVEVNICJTa3JpdiB1dCBtJuVsIiwgICAgICAgICAgICAgICAgICAgSURNX1BSSU5UVEFSR0VUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlZpc2EgJmJpbGQiLCAgICAgICAgICAgICAgICAgICAgICBJRE1fU0hPV1BJQ1RVUkUKICAgICAgICBNRU5VSVRFTSAiU3BhcmEgYmlsJmQgc29tLi4uIiwgICAgICAgICAgICAgIElETV9TQVZFUElDVFVSRUFTCiAgICAgICAgTUVOVUlURU0gIkEmbnbkbmQgc29tIHNrcml2Ym9yZHNiYWtncnVuZCIsICBJRE1fU0VUQVNCQUNLR1JPVU5ECiAgICAgICAgTUVOVUlURU0gIkFuduRuZCBzb20gJnNrcml2Ym9yZHNvYmpla3QuLi4iLCBJRE1fU0VUQVNERVNLVE9QSVRFTQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImS2xpcHAgdXQiLCAgICAgICAgICAgICAgICAgICAgICAgSURNX0NVVAogICAgICAgIE1FTlVJVEVNICJLJm9waWVyYSIsICAgICAgICAgICAgICAgICAgICAgICAgSURNX0NPUFkKICAgICAgICBNRU5VSVRFTSAiS29waWVyJmEgZ2VuduRnIiwgICAgICAgICAgICAgICAgIElETV9DT1BZU0hPUlRDVVQKICAgICAgICBNRU5VSVRFTSAiSyZsaXN0cmEgaW4iLCAgICAgICAgICAgICAgICAgICAgIElETV9QQVNURQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJM5GdnIHRpbGwgJmkgRmF2b3JpdGVyLi4uIiwgICAgICAgSURNX0FERFRPRkFWT1VSSVRFUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJTcGVsYSB1cHAiLCAgICAgICAgICAgICAgICAgICAgICAgSURNX1BMQVkKICAgICAgICBNRU5VSVRFTSAiU3RvcHBhIiwgICAgICAgICAgICAgICAgICAgICAgICAgIElETV9TVE9QCiAgICAgICAgTUVOVUlURU0gIlNwb2xhIHRpbGxiYWthIiwgICAgICAgICAgICAgICAgICBJRE1fUkVXSU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZFZ2Vuc2thcGVyIiwgICAgICAgICAgICAgICAgICAgICBJRE1fUFJPUEVSVElFUwogICAgfQoKICAgIFBPUFVQICJEZWJ1ZyIKICAgIHsKICAgICAgICBNRU5VSVRFTSAiVHJhY2UgVGFncyIsICAgICAgICAgSURNX1RSQUNFVEFHUyAKICAgICAgICBNRU5VSVRFTSAiUmVzb3VyY2UgRmFpbHVyZXMiLCAgSURNX1JFU09VUkNFRkFJTFVSRVMKICAgICAgICBNRU5VSVRFTSAiRHVtcCBUcmFja2luZyBJbmZvIiwgSURNX0RVTVBUUkFDS0lOR0lORk8KICAgICAgICBNRU5VSVRFTSAiRGVidWcgQnJlYWsiLCAgICAgICAgSURNX0RFQlVHQlJFQUsKICAgICAgICBNRU5VSVRFTSAiRGVidWcgVmlldyIsICAgICAgICAgSURNX0RFQlVHVklFVwogICAgICAgIE1FTlVJVEVNICJEdW1wIFRyZWUiLCAgICAgICAgICBJRE1fRFVNUFRSRUUKICAgICAgICBNRU5VSVRFTSAiRHVtcCBMaW5lcyIsICAgICAgICAgSURNX0RVTVBMSU5FUwogICAgICAgIE1FTlVJVEVNICJEdW1wIERpc3BsYXlUcmVlIiwgICBJRE1fRFVNUERJU1BMQVlUUkVFCiAgICAgICAgTUVOVUlURU0gIkR1bXAgRm9ybWF0Q2FjaGVzIiwgIElETV9EVU1QRk9STUFUQ0FDSEVTCiAgICAgICAgTUVOVUlURU0gIkR1bXAgTGF5b3V0UmVjdHMiLCAgIElETV9EVU1QTEFZT1VUUkVDVFMKICAgICAgICBNRU5VSVRFTSAiTWVtb3J5IE1vbml0b3IiLCAgICAgSURNX01FTU9SWU1PTklUT1IKICAgICAgICBNRU5VSVRFTSAiUGVyZm9ybWFuY2UgTWV0ZXJzIiwgSURNX1BFUkZPUk1BTkNFTUVURVJTCiAgICAgICAgTUVOVUlURU0gIlNhdmUgSFRNTCIsICAgICAgICAgIElETV9TQVZFSFRNTAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQnJvd3NlIFZpZXciLCAgICAgICBJRE1fQlJPV1NFVklFVwogICAgICAgIE1FTlVJVEVNICImRWRpdCBWaWV3IiwgICAgICAgICBJRE1fRURJVFZJRVcKICAgIH0KCiAgICBQT1BVUCAiVmVydGlrYWwgcnVsbG5pbmdzbGlzdCIKICAgIHsKICAgICAgICBNRU5VSVRFTSAiUnVsbGEgaGl0IiwgICAgSURNX1NDUk9MTEhFUkUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiTORuZ3N0IHVwcCIsICAgSURNX1RPUAogICAgICAgIE1FTlVJVEVNICJM5G5nc3QgbmVkIiwgICBJRE1fQk9UVE9NCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkVuIHNpZGEgdXBwIiwgIElETV9QQUdFVVAKICAgICAgICBNRU5VSVRFTSAiRW4gc2lkYSBuZWQiLCAgSURNX1BBR0VET1dOCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlJ1bGxhIHVwcOV0IiwgIElETV9TQ1JPTExVUAogICAgICAgIE1FTlVJVEVNICJSdWxsYSBuZWTldCIsICBJRE1fU0NST0xMRE9XTgogICAgfQoKICAgIFBPUFVQICJIb3Jpc29udGVsbCBydWxsbmluZ3NsaXN0IgogICAgewogICAgICAgIE1FTlVJVEVNICJSdWxsYSBoaXQiLCAgICAgICAgICBJRE1fU0NST0xMSEVSRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJM5G5nc3Qg5XQgduRuc3RlciIsICBJRE1fTEVGVEVER0UKICAgICAgICBNRU5VSVRFTSAiTORuZ3N0IOV0IGj2Z2VyIiwgICAgSURNX1JJR0hURURHRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJFbiBzaWRhIOV0IHbkbnN0ZXIiLCBJRE1fUEFHRUxFRlQKICAgICAgICBNRU5VSVRFTSAiRW4gc2lkYSDldCBo9mdlciIsICAgSURNX1BBR0VSSUdIVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJSdWxsYSDldCB25G5zdGVyIiwgICBJRE1fU0NST0xMTEVGVAogICAgICAgIE1FTlVJVEVNICJSdWxsYSDldCBo9mdlciIsICAgICBJRE1fU0NST0xMUklHSFQKICAgIH0KfQo=