LyoKICogUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDMgTWFyY2VsbyBEdWFydGUKICogQ29weXJpZ2h0IDIwMDQgQW3pcmljbyBKb3PpIE1lbG8KICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKLyoKICogTWVudQogKi8KCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKSURDX1JFR0VESVQgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIiZBcnF1aXZvIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiU2FpJnIiLCAgICAgICAgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfRVhJVAogICAgRU5ECiAgICBQT1BVUCAiQWomdWRhIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJlNvYnJlLi4uIiwgICAgICAgICAgICAgICAgICBJRF9IRUxQX0FCT1VUCiAgICBFTkQKRU5ECgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRQoKSURDX1JFR0VESVQgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIiZGaWNoZWlybyIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIlNhaSZyIiwgICAgICAgICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX0VYSVQKICAgIEVORAogICAgUE9QVVAgIkFqJnVkYSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZTb2JyZS4uLiIsICAgICAgICAgICAgICAgICAgSURfSEVMUF9BQk9VVAogICAgRU5ECkVORAoKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKSURSX1JFR0VESVRfTUVOVSBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiJlJlZ2lzdHJvIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkltcG9ydGFyIGFycXVpdm8gZG8gUmVnaXN0cm8uLi4iLCBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSAiJkV4cG9ydGFyIGFycXVpdm8gZG8gUmVnaXN0cm8uLi4iLCBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkNvbmVjdGFyIFJlZ2lzdHJvIGRhIHJlZGUuLi4iLCAgICBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiJkRlc2NvbmVjdGFyIFJlZ2lzdHJvIGRhIHJlZGUuLi4iLCBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiSW0mcHJpbWlyXHRDdHJsK1AiLCAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9QUklOVCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlNhaSZyIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfRVhJVAogICAgRU5ECiAgICBQT1BVUCAiJkVkaXRhciIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZNb2RpZmljYXIiLCAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBQT1BVUCAiJk5vdm8iCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIiZDaGF2ZSIsICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxvciAmVGV4dG8iLCAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIlZhbG9yICZCaW7hcmlvIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiVmFsb3IgJkRXT1JEIiwgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkV4Y2x1aXJcdERlbCIsICAgICAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICImUmVub21lYXJcdEYyIiwgICAgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZDb3BpYXIgbm9tZSBkYSBjaGF2ZSIsICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImTG9jYWxpemFyXHRDdHJsK0YiLCAgICAgICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIkwmb2NhbGl6YXIgcHLzeGltYVx0RjMiLCAgICAgICAgICAgSURfRURJVF9GSU5ETkVYVCwgR1JBWUVECiAgICBFTkQKICAgIFBPUFVQICJFJnhpYmlyIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkJhcnJhIGRlIHN0YXR1cyIsICAgICAgICAgICAgICAgICBJRF9WSUVXX1NUQVRVU0JBUgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRGl2aWRpciIsICAgICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1BMSVQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkF0dWFsaXphclx0RjUiLCAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1JFRlJFU0gKICAgIEVORAogICAgUE9QVVAgIiZGYXZvcml0b3MiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImQWRpY2lvbmFyIGFvcyBGYXZvcml0b3MiLCAgICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTCiAgICAgICAgLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiJlJlbW92ZXIgRmF2b3JpdG8iLCAgICAgICAgICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURQogICAgICAgICwgR1JBWUVECiAgICBFTkQKICAgIFBPUFVQICJBaiZ1ZGEiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImVG9waWNzIGRhIEFqdWRhIiwgICAgICAgICAgICBJRF9IRUxQX0hFTFBUT1BJQ1MKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlNvYnJlIG8gRWRpdG9yIGRvIFJlZ2lzdHJvIiwgSURfSEVMUF9BQk9VVAogICAgRU5ECkVORAoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0UKCklEUl9SRUdFRElUX01FTlUgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIiZSZWdpc3RvIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkltcG9ydGFyIGZpY2hlaXJvIGRvIFJlZ2lzdG8uLi4iLCBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSAiJkV4cG9ydGFyIGZpY2hlaXJvIGRvIFJlZ2lzdG8uLi4iLCBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkNvbmVjdGFyIFJlZ2lzdG8gZGEgcmVkZS4uLiIsICAgIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICImRGVzY29uZWN0YXIgUmVnaXN0byBkYSByZWRlLi4uIiwgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWSwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkltJnByaW1pclx0Q3RybCtQIiwgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfUFJJTlQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJTYWkmciIsICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX0VYSVQKICAgIEVORAogICAgUE9QVVAgIiZFZGl0YXIiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImTW9kaWZpY2FyIiwgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgUE9QVVAgIiZOb3ZvIgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICImQ2hhdmUiLCAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiVmFsb3IgJlRleHRvIiwgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxvciAmQmlu4XJpbyIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIlZhbG9yICZEV09SRCIsICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZFeGNsdWlyXHREZWwiLCAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJlJlbm9tZWFyXHRGMiIsICAgICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQ29waWFyIG5vbWUgZGEgY2hhdmUiLCAgICAgICAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkxvY2FsaXphclx0Q3RybCtGIiwgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICJMJm9jYWxpemFyIHBy83hpbWFcdEYzIiwgICAgICAgICAgIElEX0VESVRfRklORE5FWFQsIEdSQVlFRAogICAgRU5ECiAgICBQT1BVUCAiRSZ4aWJpciIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZCYXJyYSBkZSBzdGF0dXMiLCAgICAgICAgICAgICAgICAgSURfVklFV19TVEFUVVNCQVIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkRpdmlkaXIiLCAgICAgICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NQTElUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZBY3R1YWxpemFyXHRGNSIsICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfUkVGUkVTSAogICAgRU5ECiAgICBQT1BVUCAiJkZhdm9yaXRvcyIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZBZGljaW9uYXIgYW9zIEZhdm9yaXRvcyIsICAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMKICAgICAgICAsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICImUmVtb3ZlciBGYXZvcml0byIsICAgICAgICAgICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFCiAgICAgICAgLCBHUkFZRUQKICAgIEVORAogICAgUE9QVVAgIkFqJnVkYSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZUb3BpY29zIGRhIEFqdWRhIiwgICAgICAgICAgICBJRF9IRUxQX0hFTFBUT1BJQ1MKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkFjZXJjYSBkbyBFZGl0b3IgZGUgUmVnaXN0byIsIElEX0hFTFBfQUJPVVQKICAgIEVORApFTkQKCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfTkVVVFJBTAoKSURSX1BPUFVQX01FTlVTIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICBQT1BVUCAiIgogIEJFR0lOCglNRU5VSVRFTSAiJk1vZGlmaWNhciIsICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKCU1FTlVJVEVNICJNb2RpZmljYXIgZGFkb3MgYmlu4XJpb3MiLCAgICBJRF9FRElUX01PRElGWV9CSU4KCU1FTlVJVEVNIFNFUEFSQVRPUgoJTUVOVUlURU0gIiZFeGNsdWlyXHREZWwiLCAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCglNRU5VSVRFTSAiJlJlbm9tZWFyIiwgICAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICBFTkQKICBQT1BVUCAiIgogIEJFR0lOCiAgICAgICAgUE9QVVAgIiZOb3ZvIgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICImQ2hhdmUiLCAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiVmFsb3IgJlRleHRvIiwgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxvciAmQmlu4XJpbyIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIlZhbG9yICZEV09SRCIsICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZFeGNsdWlyXHREZWwiLCAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJlJlbm9tZWFyXHRGMiIsICAgICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQ29waWFyIG5vbWUgZGEgY2hhdmUiLCAgICAgICAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkxvY2FsaXphclx0Q3RybCtGIiwgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogIEVORApFTkQKCgovKgogKiBEaWFsb2cKICovCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfTkVVVFJBTAoKSUREX0FCT1VUQk9YIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMzAsIDc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJTb2JyZSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgSUNPTiAgICAgICAgICAgIElESV9SRUdFRElULElESV9SRUdFRElULDE0LDksMTYsMTYKICAgIExURVhUICAgICAgICAgICAiUmVhY3RPUyByZWdlZGl0IFZlcnNpb24gMS4wIixJRENfU1RBVElDLDQ5LDEwLDExOSw4LAogICAgICAgICAgICAgICAgICAgIFNTX05PUFJFRklYCiAgICBMVEVYVCAgICAgICAgICAgIkNvcHlyaWdodCAoQykgMjAwMiBSZWFjdE9TIFRlYW0iLElEQ19TVEFUSUMsNDksMjAsMTE5LDgKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTk1LDYsMzAsMTEsV1NfR1JPVVAKRU5ECgoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX05FVVRSQUwKCklERF9FRElUX1NUUklORyBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA3NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRWRpdGFyIHRleHRvIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIk5vbWUgZG8gdmFsb3I6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiRGFkb3MgZG8gdmFsb3I6IixJRENfU1RBVElDLDUsMzAsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsNjAsMzAsMTEsV1NfR1JPVVAKICAgIERFRlBVU0hCVVRUT04gICAiQ2FuY2VsYXIiLElEQ0FOQ0VMLDE3NSw2MCwzMCwxMSxXU19HUk9VUApFTkQKCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfTkVVVFJBTAoKSUREX0VESVRfRFdPUkQgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgMTAwClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJFZGl0YXIgRFdPUkQiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTm9tZSBkbyB2YWxvcjoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJEYWRvcyBkbyB2YWxvcjoiLElEQ19TVEFUSUMsNSwzMCw5MCw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCw5MCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgR1JPVVBCT1ggICAgICAgICJCYXNlIiwgSURDX0RXT1JEX0JBU0UsIDEyMCwgMzAsIDg1LCAzNywgQlNfR1JPVVBCT1gKICAgIEFVVE9SQURJT0JVVFRPTiAiSGV4YWRlY2ltYWwiLCBJRENfRFdPUkRfSEVYLCAxMzAsIDQwLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIEFVVE9SQURJT0JVVFRPTiAiRGVjaW1hbCIsIElEQ19EV09SRF9ERUMsIDEzMCwgNTIsIDYwLCAxMCwgV1NfVEFCU1RPUAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsODAsMzAsMTEsV1NfR1JPVVAKICAgIERFRlBVU0hCVVRUT04gICAiQ2FuY2VsYXIiLElEQ0FOQ0VMLDE3NSw4MCwzMCwxMSxXU19HUk9VUApFTkQKCgovKgogKiBTdHJpbmcgVGFibGUKICovCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfTkVVVFJBTAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19MSVNUX0NPTFVNTl9OQU1FICAgICJOb21lIgogICAgSURTX0xJU1RfQ09MVU1OX1RZUEUgICAgIlRpcG8iCiAgICBJRFNfTElTVF9DT0xVTU5fREFUQSAgICAiRGFkb3MiCkVORAoKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19BUFBfVElUTEUgICAgICAgICAgICJFZGl0b3IgZG8gUmVnaXN0cm8iCiAgICBJRENfUkVHRURJVCAgICAgICAgICAgICAiUkVHRURJVCIKICAgIElEQ19SRUdFRElUX0ZSQU1FICAgICAgICJSRUdFRElUX0ZSQU1FIgpFTkQKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0FQUF9USVRMRSAgICAgICAgICAgIkVkaXRvciBkZSBSZWdpc3RvIgogICAgSURDX1JFR0VESVQgICAgICAgICAgICAgIlJFR0VESVQiCiAgICBJRENfUkVHRURJVF9GUkFNRSAgICAgICAiUkVHRURJVF9GUkFNRSIKRU5ECgoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfTUVOVSAgICAgICAgIkNvbnTpbSBjb21hbmRvcyBwYXJhIHRyYWJhbGhhciBjb20gbyBSZWdpc3RybyBpbnRlaXJvLiIKICAgIElEX0VESVRfTUVOVSAgICAgICAgICAgICJDb2506W0gY29tYW5kb3MgcGFyYSBlZGnn428gZGUgdmFsb3JlcyBvdSBjaGF2ZXMuIgogICAgSURfVklFV19NRU5VICAgICAgICAgICAgIkNvbnTpbSBjb21hbmRvcyBwYXJhIHBlcnNvbmFsaXph5+NvIGRhIGphbmVsYSBkbyBSZWdpc3Ryby4iCiAgICBJRF9GQVZPUklURVNfTUVOVSAgICAgICAiQ29udOltIGNvbWFuZG9zIHBhcmEgYWNlc3NhciBjaGF2ZXMgZnJlcXVlbnRlbWVudGUgdXNhZGFzLiIKICAgIElEX0hFTFBfTUVOVSAgICAgICAgICAgICJDb2506W0gY29tYW5kb3MgcGFyYSBleGliaefjbyBkYSBhanVkYSBlIGluZm9ybWHn9WVzIHNvYnJlIG8gRWRpdG9yIGRvIFJlZ2lzdHJvLiIKICAgIElEX0VESVRfTkVXX01FTlUgICAgICAgICJDb2506W0gY29tYW5kb3MgcGFyYSBjcmlh5+NvIGRlIG5vdmFzIGNoYXZlcyBvdSB2YWxvcmVzIgpFTkQKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfTUVOVSAgICAgICAgIkNvbnTpbSBjb21hbmRvcyBwYXJhIHRyYWJhbGhhciBjb20gbyBSZWdpc3RvIGludGVpcm8uIgogICAgSURfRURJVF9NRU5VICAgICAgICAgICAgIkNvbnTpbSBjb21hbmRvcyBwYXJhIGVkaefjbyBkZSB2YWxvcmVzIG91IGNoYXZlcy4iCiAgICBJRF9WSUVXX01FTlUgICAgICAgICAgICAiQ29udOltIGNvbWFuZG9zIHBhcmEgcGVyc29uYWxpemHn428gZGEgamFuZWxhIGRvIFJlZ2lzdG8uIgogICAgSURfRkFWT1JJVEVTX01FTlUgICAgICAgIkNvbnTpbSBjb21hbmRvcyBwYXJhIGFjZWRlciBjaGF2ZXMgZnJlcXVlbnRlbWVudGUgdXNhZGFzLiIKICAgIElEX0hFTFBfTUVOVSAgICAgICAgICAgICJDb2506W0gY29tYW5kb3MgcGFyYSBleGliaefjbyBkYSBhanVkYSBlIGluZm9ybWHn9WVzIHNvYnJlIG8gRWRpdG9yIGRvIFJlZ2lzdG8uIgogICAgSURfRURJVF9ORVdfTUVOVSAgICAgICAgIkNvbnTpbSBjb21hbmRvcyBwYXJhIGNyaWHn428gZGUgbm92YXMgY2hhdmVzIG91IHZhbG9yZXMiCkVORAoKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX0VESVRfTU9ESUZZICAgICAgICAgICJNb2RpZmljYSBvcyBkYWRvcyBkbyB2YWxvci4iCiAgICBJRF9FRElUX05FV19LRVkgICAgICAgICAiQWRpY2lvbmEgdW1hIG5vdmEgY2hhdmUiCiAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRSAiQWRpY2lvbmEgdW0gbm92byB2YWxvciB0ZXh0by4iCiAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRSAiQWRpY2lvbmEgdW0gbm92byB2YWxvciBiaW7hcmlvLiIKICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUgICJBZGljaW9uYSB1bSBub3ZvIHZhbG9yIERXT1JELiIKICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRSAiSW1wb3J0YSB1bSBhcnF1aXZvIHRleHRvIHBhcmEgbyByZWdpc3Ryby4iCiAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBvcnRhIHRvZG8gb3UgcGFydGUgZG8gcmVnaXN0cm8gcGFyYSB1bSBhcnF1aXZvIHRleHRvLiIKICAgIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25lY3RhIGEgdW0gcmVnaXN0cm8gZW0gdW0gY29tcHV0YWRvciByZW1vdG8uIgogICAgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlc2NvbmVjdGEgZGUgdW0gcmVnaXN0cm8gdW0gY29tcHV0YWRvciByZW1vdG8uIgogICAgSURfUkVHSVNUUllfUFJJTlQgICAgICAgIkltcHJpbWUgdG9kbyBvdSBwYXJ0ZSBkbyByZWdpc3Ryby4iCi8qICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICJBYnJlIGEgYWp1ZGEgZG8gRWRpdG9yIGRvIFJlZ2lzdHJvLiIgKi8KICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICJFeGliZSBpbmZvcm1h5/VlcyBkbyBwcm9ncmFtYSwgbvptZXJvIGRhIHZlcnPjbyBlIGNvcHlyaWdodC4iCkVORAoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0UKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9FRElUX01PRElGWSAgICAgICAgICAiTW9kaWZpY2Egb3MgZGFkb3MgZG8gdmFsb3IuIgogICAgSURfRURJVF9ORVdfS0VZICAgICAgICAgIkFkaWNpb25hIHVtYSBub3ZhIGNoYXZlIgogICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUgIkFkaWNpb25hIHVtIG5vdm8gdmFsb3IgdGV4dG8uIgogICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUgIkFkaWNpb25hIHVtIG5vdm8gdmFsb3IgYmlu4XJpby4iCiAgICBJRF9FRElUX05FV19EV09SRFZBTFVFICAiQWRpY2lvbmEgdW0gbm92byB2YWxvciBEV09SRC4iCiAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUgIkltcG9ydGEgdW0gZmljaGVpcm8gZGUgdGV4dG8gcGFyYSBvIHJlZ2lzdG8uIgogICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwb3J0YSB0b2RvIG91IHBhcnRlIGRvIHJlZ2lzdG8gcGFyYSB1bSBmaWNoZWlybyBkZSB0ZXh0by4iCiAgICBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZWN0YSBhIHVtIHJlZ2lzdG8gdW0gY29tcHV0YWRvciByZW1vdG8uIgogICAgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlc2NvbmVjdGEgZGUgdW0gcmVnaXN0byB1bSBjb21wdXRhZG9yIHJlbW90by4iCiAgICBJRF9SRUdJU1RSWV9QUklOVCAgICAgICAiSW1wcmltZSB0b2RvIG91IHBhcnRlIGRvIHJlZ2lzdG8uIgovKiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAiQWJyZSBhIGFqdWRhIGRvIEVkaXRvciBkZSBSZWdpc3RvLiIgKi8KICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICJFeGliZSBpbmZvcm1h5/VlcyBkbyBwcm9ncmFtYSwgbvptZXJvIGRhIHZlcnPjbyBlIGNvcHlyaWdodC4iCkVORAoKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX0VYSVQgICAgICAgICJFbmNlcnJhIG8gRWRpdG9yIGRvIFJlZ2lzdHJvLiIKICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUyAiQWRpY2lvbmEgY2hhdmVzIGEgbGlzdGEgZGUgZmF2b3JpdG9zLiIKICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURSAiUmVtb3ZlIGNoYXZlcyBkYSBsaXN0YSBkZSBmYXZvcml0b3MuIgogICAgSURfVklFV19TVEFUVVNCQVIgICAgICAgIk1vc3RyYSBvdSBvY3VsdGEgYSBiYXJyYSBkZSBzdGF0dXMuIgogICAgSURfVklFV19TUExJVCAgICAgICAgICAgIkFsdGVyYSBhIHBvc2nn428gZGEgZGl2aXPjbyBlbnRyZSBvcyBwYWlu6WlzLiIKICAgIElEX1ZJRVdfUkVGUkVTSCAgICAgICAgICJBdHVhbGl6YSBhIGphbmVsYS4iCiAgICBJRF9FRElUX0RFTEVURSAgICAgICAgICAiRXhjbHVpIGEgc2VsZWPjby4iCiAgICBJRF9FRElUX1JFTkFNRSAgICAgICAgICAiUmVub21laWEgYSBzZWxlY+NvLiIKICAgIElEX0VESVRfQ09QWUtFWU5BTUUgICAgICJDb3BpYSBvIG5vbWUgZGEgY2hhdmUgc2VsZWNpb25hZGEgcGFyYSBhIMFyZWEgZGUgdHJhbnNmZXLqbmNpYS4iCiAgICBJRF9FRElUX0ZJTkQgICAgICAgICAgICAiTG9jYWxpemEgdW0gdGV4dG8gZW0gdW1hIGNoYXZlLCB2YWxvciBvdSBkYWRvLiIKICAgIElEX0VESVRfRklORE5FWFQgICAgICAgICJMb2NhbGl6YSBhIHBy83hpbWEgb2NvcnLqbmNpYSBkbyB0ZXh0byBlc3BlY2lmaWNhZG8gbmEgcGVzcXVpc2EgYW50ZXJpb3IuIgpFTkQKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfRVhJVCAgICAgICAgIkVuY2VycmEgbyBFZGl0b3IgZGUgUmVnaXN0by4iCiAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMgIkFkaWNpb25hIGNoYXZlcyBhIGxpc3RhIGRlIGZhdm9yaXRvcy4iCiAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUgIlJlbW92ZSBjaGF2ZXMgZGEgbGlzdGEgZGUgZmF2b3JpdG9zLiIKICAgIElEX1ZJRVdfU1RBVFVTQkFSICAgICAgICJNb3N0cmEgb3Ugb2N1bHRhIGEgYmFycmEgZGUgc3RhdHVzLiIKICAgIElEX1ZJRVdfU1BMSVQgICAgICAgICAgICJBbHRlcmEgYSBwb3Np5+NvIGRhIGRpdmlz428gZW50cmUgb3MgcGFpbulpcy4iCiAgICBJRF9WSUVXX1JFRlJFU0ggICAgICAgICAiQWN0dWFsaXphIGEgamFuZWxhLiIKICAgIElEX0VESVRfREVMRVRFICAgICAgICAgICJFeGNsdWkgYSBzZWxlY+fjby4iCiAgICBJRF9FRElUX1JFTkFNRSAgICAgICAgICAiUmVub21laWEgYSBzZWxlY+fjby4iCiAgICBJRF9FRElUX0NPUFlLRVlOQU1FICAgICAiQ29waWEgbyBub21lIGRhIGNoYXZlIHNlbGVjaW9uYWRhIHBhcmEgYSDBcmVhIGRlIHRyYW5zZmVy6m5jaWEuIgogICAgSURfRURJVF9GSU5EICAgICAgICAgICAgIkxvY2FsaXphIHVtIHRleHRvIG51bWEgY2hhdmUsIHZhbG9yIG91IGRhZG8uIgogICAgSURfRURJVF9GSU5ETkVYVCAgICAgICAgIkxvY2FsaXphIGEgcHLzeGltYSBvY29ycupuY2lhIGRvIHRleHRvIGVzcGVjaWZpY2FkbyBuYSBwZXNxdWlzYSBhbnRlcmlvci4iCkVORAoKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19FUlJPUgkJICAgICJFcnJvIgogICAgSURTX0JBRF9LRVkJCSAgICAiTuNvIHBvZGUgY29uc3VsdGFyIGEgY2hhdmUgJyVzJyIKICAgIElEU19CQURfVkFMVUUgICAgICAgICAgICJO428gcG9kZSBjb25zdWx0YXIgbyB2YWxvciAnJXMnIgogICAgSURTX1VOU1VQUE9SVEVEX1RZUEUgICAgIk7jbyBwb2RlIGVkaXRhciBjaGF2ZXMgZGVzdGUgdGlwbyAoJWxkKSIKICAgIElEU19UT09fQklHX1ZBTFVFICAgICAgICJWYWxvciDpIG11aXRvIGdyYW5kZSAoJWxkKSIKICAgIElEU19ERUxFVEVfQk9YX1RJVExFICAgICJDb25maXJtYXIgZXhjbHVz428gZGUgdmFsb3IiCiAgICBJRFNfREVMRVRFX0JPWF9URVhUICAgICAiVGVtIGNlcnRlemEgcXVlIGRlc2VqYSBleGNsdWlyIG8gdmFsb3IgJyVzJz8iCiAgICBJRFNfTkVXS0VZICAgICAgICAgICAgICAiTm92YSBjaGF2ZSAjJWQiCiAgICBJRFNfTkVXVkFMVUUgICAgICAgICAgICAiTm92byB2YWxvciAjJWQiCkVORAoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0UKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfRVJST1IJCSAgICAiRXJybyIKICAgIElEU19CQURfS0VZCQkgICAgIk7jbyBwb2RlIHBlcmd1bnRhciBhIGNoYXZlICclcyciCiAgICBJRFNfQkFEX1ZBTFVFICAgICAgICAgICAiTuNvIHBvZGUgcGVyZ3VudGFyIG8gdmFsb3IgJyVzJyIKICAgIElEU19VTlNVUFBPUlRFRF9UWVBFICAgICJO428gcG9kZSBlZGl0YXIgY2hhdmVzIGRlc3RlIHRpcG8gKCVsZCkiCiAgICBJRFNfVE9PX0JJR19WQUxVRSAgICAgICAiVmFsb3IgbXVpdG8gZ3JhbmRlICglbGQpIgogICAgSURTX0RFTEVURV9CT1hfVElUTEUgICAgIkNvbmZpcm1hciBleGNsdXPjbyBkZSB2YWxvciIKICAgIElEU19ERUxFVEVfQk9YX1RFWFQgICAgICJUZW0gY2VydGV6YSBxdWUgZGVzZWphIGV4Y2x1aXIgbyB2YWxvciAnJXMnPyIKICAgIElEU19ORVdLRVkgICAgICAgICAgICAgICJOb3ZhIGNoYXZlICMlZCIKICAgIElEU19ORVdWQUxVRSAgICAgICAgICAgICJOb3ZvIHZhbG9yICMlZCIKRU5ECgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoKLyoKICogRGlhbG9nCiAqLwoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX05FVVRSQUwKCklERF9ESUFMT0cxIERJQUxPRyBESVNDQVJEQUJMRSAgNTAsIDUwLCAyNjgsIDk4ClNUWUxFIERTXzNETE9PSyB8IERTX0NPTlRST0wgfCBXU19DSElMRCB8IFdTX1ZJU0lCTEUgfCBXU19DTElQU0lCTElOR1MgfAogICAgV1NfQk9SREVSCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KRU5ECgoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX05FVVRSQUwKCklERF9ESUFMT0cyIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMTg3LCA5NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJEaWFsb2ciCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTMwLDcsNTAsMTQKICAgIFBVU0hCVVRUT04gICAgICAiQ2FuY2VsYXIiLElEQ0FOQ0VMLDEzMCwyNCw1MCwxNApFTkQKCgovKgogKiBURVhUSU5DTFVERQogKi8KCjEgVEVYVElOQ0xVREUgRElTQ0FSREFCTEUKQkVHSU4KICAgICJyZXNvdXJjZS5oXDAiCkVORAoKCi8qCiAqIFN0cmluZyBUYWJsZQogKi8KCgoKLyoKICpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU4KICoKICpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQogKkJFR0lOCiAqICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICJPcGVucyBSZWdpc3RyeSBFZGl0b3IgSGVscC4iCiAqICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICJEaXNwbGF5cyBwcm9ncmFtIGluZm9ybWF0aW9uLCB2ZXJzaW9uIG51bWJlciwgYW5kIGNvcHlyaWdodC4iCiAqRU5ECiAqLwoKCi8qCiAqTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0UKICoKICpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQogKkJFR0lOCiAqICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICJBYnJlIGEgYWp1ZGEgZG8gRWRpdG9yIGRlIFJlZ2lzdG9zLiIKICogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIk1vc3RyYSBpbmZvcm1h5+NvIGRvIHByb2dyYW1hLCBu+m1lcm8gZGEgdmVyc+NvLCBlIGNvcHlyaWdodC4iCiAqRU5ECiAqLwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwo=