LyoKICogUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDMgTWFyY2VsbyBEdWFydGUKICogQ29weXJpZ2h0IDIwMDQgQW3pcmljbyBKb3PpIE1lbG8KICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKLyoKICogTWVudQogKi8KCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKSURSX1JFR0VESVRfTUVOVSBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiJlJlZ2lzdHJvIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkltcG9ydGFyIGFycXVpdm8gZG8gUmVnaXN0cm8uLi4iLCBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSAiJkV4cG9ydGFyIGFycXVpdm8gZG8gUmVnaXN0cm8uLi4iLCBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkNvbmVjdGFyIFJlZ2lzdHJvIGRhIHJlZGUuLi4iLCAgICBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiJkRlc2NvbmVjdGFyIFJlZ2lzdHJvIGRhIHJlZGUuLi4iLCBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiSW0mcHJpbWlyXHRDdHJsK1AiLCAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9QUklOVCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlNhaSZyIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfRVhJVAogICAgRU5ECiAgICBQT1BVUCAiJkVkaXRhciIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZNb2RpZmljYXIiLCAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBQT1BVUCAiJk5vdm8iCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIiZDaGF2ZSIsICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxvciAmVGV4dG8iLCAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIlZhbG9yICZCaW7hcmlvIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiVmFsb3IgJkRXT1JEIiwgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkV4Y2x1aXJcdERlbCIsICAgICAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICImUmVub21lYXJcdEYyIiwgICAgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZDb3BpYXIgbm9tZSBkYSBjaGF2ZSIsICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImTG9jYWxpemFyXHRDdHJsK0YiLCAgICAgICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIkwmb2NhbGl6YXIgcHLzeGltYVx0RjMiLCAgICAgICAgICAgSURfRURJVF9GSU5ETkVYVCwgR1JBWUVECiAgICBFTkQKICAgIFBPUFVQICJFJnhpYmlyIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkJhcnJhIGRlIHN0YXR1cyIsICAgICAgICAgICAgICAgICBJRF9WSUVXX1NUQVRVU0JBUgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRGl2aWRpciIsICAgICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1BMSVQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkF0dWFsaXphclx0RjUiLCAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1JFRlJFU0gKICAgIEVORAogICAgUE9QVVAgIiZGYXZvcml0b3MiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImQWRpY2lvbmFyIGFvcyBGYXZvcml0b3MiLCAgICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTCiAgICAgICAgTUVOVUlURU0gIiZSZW1vdmVyIEZhdm9yaXRvIiwgICAgICAgICAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUKICAgIEVORAogICAgUE9QVVAgIkFqJnVkYSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZUb3BpY3MgZGEgQWp1ZGEiLCAgICAgICAgICAgIElEX0hFTFBfSEVMUFRPUElDUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU29icmUgbyBFZGl0b3IgZG8gUmVnaXN0cm8iLCBJRF9IRUxQX0FCT1VUCiAgICBFTkQKRU5ECgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRQoKSURSX1JFR0VESVRfTUVOVSBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiJlJlZ2lzdG8iCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImSW1wb3J0YXIgZmljaGVpcm8gZG8gUmVnaXN0by4uLiIsIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNICImRXhwb3J0YXIgZmljaGVpcm8gZG8gUmVnaXN0by4uLiIsIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQ29uZWN0YXIgUmVnaXN0byBkYSByZWRlLi4uIiwgICAgSURfUkVHSVNUUllfQ09OTkVDVE5FVFdPUktSRUdJU1RSWSwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIiZEZXNjb25lY3RhciBSZWdpc3RvIGRhIHJlZGUuLi4iLCBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiSW0mcHJpbWlyXHRDdHJsK1AiLCAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9QUklOVCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlNhaSZyIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfRVhJVAogICAgRU5ECiAgICBQT1BVUCAiJkVkaXRhciIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZNb2RpZmljYXIiLCAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBQT1BVUCAiJk5vdm8iCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIiZDaGF2ZSIsICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxvciAmVGV4dG8iLCAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIlZhbG9yICZCaW7hcmlvIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiVmFsb3IgJkRXT1JEIiwgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkV4Y2x1aXJcdERlbCIsICAgICAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICImUmVub21lYXJcdEYyIiwgICAgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZDb3BpYXIgbm9tZSBkYSBjaGF2ZSIsICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImTG9jYWxpemFyXHRDdHJsK0YiLCAgICAgICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIkwmb2NhbGl6YXIgcHLzeGltYVx0RjMiLCAgICAgICAgICAgSURfRURJVF9GSU5ETkVYVCwgR1JBWUVECiAgICBFTkQKICAgIFBPUFVQICJFJnhpYmlyIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkJhcnJhIGRlIGVzdGFkbyIsICAgICAgICAgICAgICAgICBJRF9WSUVXX1NUQVRVU0JBUgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRGl2aWRpciIsICAgICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1BMSVQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkFjdHVhbGl6YXJcdEY1IiwgICAgICAgICAgICAgICAgICAgSURfVklFV19SRUZSRVNICiAgICBFTkQKICAgIFBPUFVQICImRmF2b3JpdG9zIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkFkaWNpb25hciBhb3MgRmF2b3JpdG9zIiwgICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUwogICAgICAgIE1FTlVJVEVNICImUmVtb3ZlciBGYXZvcml0byIsICAgICAgICAgICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFCiAgICBFTkQKICAgIFBPUFVQICJBaiZ1ZGEiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImVG9waWNvcyBkYSBBanVkYSIsICAgICAgICAgICAgSURfSEVMUF9IRUxQVE9QSUNTCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZBY2VyY2EgZG8gRWRpdG9yIGRlIFJlZ2lzdG8iLCBJRF9IRUxQX0FCT1VUCiAgICBFTkQKRU5ECgoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX05FVVRSQUwKCklEUl9QT1BVUF9NRU5VUyBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgUE9QVVAgIiIKICBCRUdJTgoJTUVOVUlURU0gIiZNb2RpZmljYXIiLCAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCglNRU5VSVRFTSAiTW9kaWZpY2FyIGRhZG9zIGJpbuFyaW9zIiwgICAgSURfRURJVF9NT0RJRllfQklOCglNRU5VSVRFTSBTRVBBUkFUT1IKCU1FTlVJVEVNICImRXhjbHVpclx0RGVsIiwgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQoJTUVOVUlURU0gIiZSZW5vbWVhciIsICAgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgRU5ECiAgUE9QVVAgIiIKICBCRUdJTgogICAgICAgIFBPUFVQICImTm92byIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiJkNoYXZlIiwgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgICAgTUVOVUlURU0gIlZhbG9yICZUZXh0byIsICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiVmFsb3IgJkJpbuFyaW8iLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxvciAmRFdPUkQiLCAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRQogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRXhjbHVpclx0RGVsIiwgICAgICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIiZSZW5vbWVhclx0RjIiLCAgICAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkNvcGlhciBub21lIGRhIGNoYXZlIiwgICAgICAgICAgICBJRF9FRElUX0NPUFlLRVlOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZMb2NhbGl6YXJcdEN0cmwrRiIsICAgICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICBFTkQKRU5ECgoKLyoKICogRGlhbG9nCiAqLwoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX05FVVRSQUwKCklERF9FRElUX1NUUklORyBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA3NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRWRpdGFyIHRleHRvIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIk5vbWUgZG8gdmFsb3I6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiRGFkb3MgZG8gdmFsb3I6IixJRENfU1RBVElDLDUsMzAsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw2MCwzMCwxMSxXU19HUk9VUAogICAgREVGUFVTSEJVVFRPTiAgICJDYW5jZWxhciIsSURDQU5DRUwsMTc1LDYwLDMwLDExLFdTX0dST1VQCkVORAoKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19ORVVUUkFMCgpJRERfRURJVF9EV09SRCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxMDAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IERTX05PSURMRU1TRyB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkVkaXRhciBEV09SRCIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJOb21lIGRvIHZhbG9yOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIkRhZG9zIGRvIHZhbG9yOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDkwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBHUk9VUEJPWCAgICAgICAgIkJhc2UiLCBJRENfRFdPUkRfQkFTRSwgMTIwLCAzMCwgODUsIDM3LCBCU19HUk9VUEJPWAogICAgQVVUT1JBRElPQlVUVE9OICJIZXhhZGVjaW1hbCIsIElEQ19EV09SRF9IRVgsIDEzMCwgNDAsIDYwLCAxMCwgV1NfVEFCU1RPUAogICAgQVVUT1JBRElPQlVUVE9OICJEZWNpbWFsIiwgSURDX0RXT1JEX0RFQywgMTMwLCA1MiwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw4MCwzMCwxMSxXU19HUk9VUAogICAgREVGUFVTSEJVVFRPTiAgICJDYW5jZWxhciIsSURDQU5DRUwsMTc1LDgwLDMwLDExLFdTX0dST1VQCkVORAoKCi8qCiAqIFN0cmluZyBUYWJsZQogKi8KCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19ORVVUUkFMCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0xJU1RfQ09MVU1OX05BTUUgICAgIk5vbWUiCiAgICBJRFNfTElTVF9DT0xVTU5fVFlQRSAgICAiVGlwbyIKICAgIElEU19MSVNUX0NPTFVNTl9EQVRBICAgICJEYWRvcyIKRU5ECgoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0FQUF9USVRMRSAgICAgICAgICAgIkVkaXRvciBkbyBSZWdpc3RybyIKRU5ECgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRQoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19BUFBfVElUTEUgICAgICAgICAgICJFZGl0b3IgZGUgUmVnaXN0byIKICAgIElEQ19SRUdFRElUICAgICAgICAgICAgICJSRUdFRElUIgogICAgSURDX1JFR0VESVRfRlJBTUUgICAgICAgIlJFR0VESVRfRlJBTUUiCkVORAoKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX01FTlUgICAgICAgICJDb2506W0gY29tYW5kb3MgcGFyYSB0cmFiYWxoYXIgY29tIG8gUmVnaXN0cm8gaW50ZWlyby4iCiAgICBJRF9FRElUX01FTlUgICAgICAgICAgICAiQ29udOltIGNvbWFuZG9zIHBhcmEgZWRp5+NvIGRlIHZhbG9yZXMgb3UgY2hhdmVzLiIKICAgIElEX1ZJRVdfTUVOVSAgICAgICAgICAgICJDb2506W0gY29tYW5kb3MgcGFyYSBwZXJzb25hbGl6YefjbyBkYSBqYW5lbGEgZG8gUmVnaXN0cm8uIgogICAgSURfRkFWT1JJVEVTX01FTlUgICAgICAgIkNvbnTpbSBjb21hbmRvcyBwYXJhIGFjZXNzYXIgY2hhdmVzIGZyZXF1ZW50ZW1lbnRlIHVzYWRhcy4iCiAgICBJRF9IRUxQX01FTlUgICAgICAgICAgICAiQ29udOltIGNvbWFuZG9zIHBhcmEgZXhpYmnn428gZGEgYWp1ZGEgZSBpbmZvcm1h5/VlcyBzb2JyZSBvIEVkaXRvciBkbyBSZWdpc3Ryby4iCiAgICBJRF9FRElUX05FV19NRU5VICAgICAgICAiQ29udOltIGNvbWFuZG9zIHBhcmEgY3JpYefjbyBkZSBub3ZhcyBjaGF2ZXMgb3UgdmFsb3JlcyIKRU5ECgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRQoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX01FTlUgICAgICAgICJDb2506W0gY29tYW5kb3MgcGFyYSB0cmFiYWxoYXIgY29tIG8gUmVnaXN0byBpbnRlaXJvLiIKICAgIElEX0VESVRfTUVOVSAgICAgICAgICAgICJDb2506W0gY29tYW5kb3MgcGFyYSBlZGnn428gZGUgdmFsb3JlcyBvdSBjaGF2ZXMuIgogICAgSURfVklFV19NRU5VICAgICAgICAgICAgIkNvbnTpbSBjb21hbmRvcyBwYXJhIHBlcnNvbmFsaXph5+NvIGRhIGphbmVsYSBkbyBSZWdpc3RvLiIKICAgIElEX0ZBVk9SSVRFU19NRU5VICAgICAgICJDb2506W0gY29tYW5kb3MgcGFyYSBhY2VkZXIgYSBjaGF2ZXMgZnJlcXVlbnRlbWVudGUgdXNhZGFzLiIKICAgIElEX0hFTFBfTUVOVSAgICAgICAgICAgICJDb2506W0gY29tYW5kb3MgcGFyYSBleGliaefjbyBkYSBhanVkYSBlIGluZm9ybWHn9WVzIHNvYnJlIG8gRWRpdG9yIGRvIFJlZ2lzdG8uIgogICAgSURfRURJVF9ORVdfTUVOVSAgICAgICAgIkNvbnTpbSBjb21hbmRvcyBwYXJhIGNyaWHn428gZGUgbm92YXMgY2hhdmVzIG91IHZhbG9yZXMiCkVORAoKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX0VESVRfTU9ESUZZICAgICAgICAgICJNb2RpZmljYSBvcyBkYWRvcyBkbyB2YWxvci4iCiAgICBJRF9FRElUX05FV19LRVkgICAgICAgICAiQWRpY2lvbmEgdW1hIG5vdmEgY2hhdmUiCiAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRSAiQWRpY2lvbmEgdW0gbm92byB2YWxvciB0ZXh0by4iCiAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRSAiQWRpY2lvbmEgdW0gbm92byB2YWxvciBiaW7hcmlvLiIKICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUgICJBZGljaW9uYSB1bSBub3ZvIHZhbG9yIERXT1JELiIKICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRSAiSW1wb3J0YSB1bSBhcnF1aXZvIHRleHRvIHBhcmEgbyByZWdpc3Ryby4iCiAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBvcnRhIHRvZG8gb3UgcGFydGUgZG8gcmVnaXN0cm8gcGFyYSB1bSBhcnF1aXZvIHRleHRvLiIKICAgIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25lY3RhIGEgdW0gcmVnaXN0cm8gZW0gdW0gY29tcHV0YWRvciByZW1vdG8uIgogICAgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlc2NvbmVjdGEgZGUgdW0gcmVnaXN0cm8gdW0gY29tcHV0YWRvciByZW1vdG8uIgogICAgSURfUkVHSVNUUllfUFJJTlQgICAgICAgIkltcHJpbWUgdG9kbyBvdSBwYXJ0ZSBkbyByZWdpc3Ryby4iCi8qICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICJBYnJlIGEgYWp1ZGEgZG8gRWRpdG9yIGRvIFJlZ2lzdHJvLiIgKi8KICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICJFeGliZSBpbmZvcm1h5/VlcyBkbyBwcm9ncmFtYSwgbvptZXJvIGRhIHZlcnPjbyBlIGNvcHlyaWdodC4iCkVORAoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0UKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9FRElUX01PRElGWSAgICAgICAgICAiTW9kaWZpY2Egb3MgZGFkb3MgZG8gdmFsb3IuIgogICAgSURfRURJVF9ORVdfS0VZICAgICAgICAgIkFkaWNpb25hIHVtYSBub3ZhIGNoYXZlIgogICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUgIkFkaWNpb25hIHVtIG5vdm8gdmFsb3IgdGV4dG8uIgogICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUgIkFkaWNpb25hIHVtIG5vdm8gdmFsb3IgYmlu4XJpby4iCiAgICBJRF9FRElUX05FV19EV09SRFZBTFVFICAiQWRpY2lvbmEgdW0gbm92byB2YWxvciBEV09SRC4iCiAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUgIkltcG9ydGEgdW0gZmljaGVpcm8gZGUgdGV4dG8gcGFyYSBvIHJlZ2lzdG8uIgogICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwb3J0YSB0b2RvIG91IHBhcnRlIGRvIHJlZ2lzdG8gcGFyYSB1bSBmaWNoZWlybyBkZSB0ZXh0by4iCiAgICBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZWN0YSBhIHVtIHJlZ2lzdG8gdW0gY29tcHV0YWRvciByZW1vdG8uIgogICAgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlc2NvbmVjdGEgZGUgdW0gcmVnaXN0byB1bSBjb21wdXRhZG9yIHJlbW90by4iCiAgICBJRF9SRUdJU1RSWV9QUklOVCAgICAgICAiSW1wcmltZSB0b2RvIG91IHBhcnRlIGRvIHJlZ2lzdG8uIgovKiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAiQWJyZSBhIGFqdWRhIGRvIEVkaXRvciBkZSBSZWdpc3RvLiIgKi8KICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICJFeGliZSBpbmZvcm1h5/VlcyBkbyBwcm9ncmFtYSwgbvptZXJvIGRhIHZlcnPjbyBlIGRpcmVpdG9zIGRlIGF1dG9yLiIKRU5ECgoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfRVhJVCAgICAgICAgIkVuY2VycmEgbyBFZGl0b3IgZG8gUmVnaXN0cm8uIgogICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTICJBZGljaW9uYSBjaGF2ZXMgYSBsaXN0YSBkZSBmYXZvcml0b3MuIgogICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFICJSZW1vdmUgY2hhdmVzIGRhIGxpc3RhIGRlIGZhdm9yaXRvcy4iCiAgICBJRF9WSUVXX1NUQVRVU0JBUiAgICAgICAiTW9zdHJhIG91IG9jdWx0YSBhIGJhcnJhIGRlIHN0YXR1cy4iCiAgICBJRF9WSUVXX1NQTElUICAgICAgICAgICAiQWx0ZXJhIGEgcG9zaefjbyBkYSBkaXZpc+NvIGVudHJlIG9zIHBhaW7paXMuIgogICAgSURfVklFV19SRUZSRVNIICAgICAgICAgIkF0dWFsaXphIGEgamFuZWxhLiIKICAgIElEX0VESVRfREVMRVRFICAgICAgICAgICJFeGNsdWkgYSBzZWxlY+NvLiIKICAgIElEX0VESVRfUkVOQU1FICAgICAgICAgICJSZW5vbWVpYSBhIHNlbGVj428uIgogICAgSURfRURJVF9DT1BZS0VZTkFNRSAgICAgIkNvcGlhIG8gbm9tZSBkYSBjaGF2ZSBzZWxlY2lvbmFkYSBwYXJhIGEgwXJlYSBkZSB0cmFuc2ZlcupuY2lhLiIKICAgIElEX0VESVRfRklORCAgICAgICAgICAgICJMb2NhbGl6YSB1bSB0ZXh0byBlbSB1bWEgY2hhdmUsIHZhbG9yIG91IGRhZG8uIgogICAgSURfRURJVF9GSU5ETkVYVCAgICAgICAgIkxvY2FsaXphIGEgcHLzeGltYSBvY29ycupuY2lhIGRvIHRleHRvIGVzcGVjaWZpY2FkbyBuYSBwZXNxdWlzYSBhbnRlcmlvci4iCkVORAoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0UKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9FWElUICAgICAgICAiRW5jZXJyYSBvIEVkaXRvciBkZSBSZWdpc3RvLiIKICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUyAiQWRpY2lvbmEgY2hhdmVzIOAgbGlzdGEgZGUgZmF2b3JpdG9zLiIKICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURSAiUmVtb3ZlIGNoYXZlcyBkYSBsaXN0YSBkZSBmYXZvcml0b3MuIgogICAgSURfVklFV19TVEFUVVNCQVIgICAgICAgIk1vc3RyYSBvdSBvY3VsdGEgYSBiYXJyYSBkZSBzdGF0dXMuIgogICAgSURfVklFV19TUExJVCAgICAgICAgICAgIkFsdGVyYSBhIHBvc2nn428gZGEgZGl2aXPjbyBlbnRyZSBvcyBwYWlu6WlzLiIKICAgIElEX1ZJRVdfUkVGUkVTSCAgICAgICAgICJBY3R1YWxpemEgYSBqYW5lbGEuIgogICAgSURfRURJVF9ERUxFVEUgICAgICAgICAgIkV4Y2x1aSBhIHNlbGVj5+NvLiIKICAgIElEX0VESVRfUkVOQU1FICAgICAgICAgICJSZW5vbWVpYSBhIHNlbGVj5+NvLiIKICAgIElEX0VESVRfQ09QWUtFWU5BTUUgICAgICJDb3BpYSBvIG5vbWUgZGEgY2hhdmUgc2VsZWNjaW9uYWRhIHBhcmEgYSDBcmVhIGRlIHRyYW5zZmVy6m5jaWEuIgogICAgSURfRURJVF9GSU5EICAgICAgICAgICAgIkxvY2FsaXphIHVtIHRleHRvIG51bWEgY2hhdmUsIHZhbG9yIG91IGRhZG8uIgogICAgSURfRURJVF9GSU5ETkVYVCAgICAgICAgIkxvY2FsaXphIGEgcHLzeGltYSBvY29ycupuY2lhIGRvIHRleHRvIGluZGljYWRvIG5hIHBlc3F1aXNhIGFudGVyaW9yLiIKRU5ECgoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0VSUk9SCQkgICAgIkVycm8iCiAgICBJRFNfQkFEX0tFWQkJICAgICJO428gcG9kZSBjb25zdWx0YXIgYSBjaGF2ZSAnJXMnIgogICAgSURTX0JBRF9WQUxVRSAgICAgICAgICAgIk7jbyBwb2RlIGNvbnN1bHRhciBvIHZhbG9yICclcyciCiAgICBJRFNfVU5TVVBQT1JURURfVFlQRSAgICAiTuNvIHBvZGUgZWRpdGFyIGNoYXZlcyBkZXN0ZSB0aXBvICglbGQpIgogICAgSURTX1RPT19CSUdfVkFMVUUgICAgICAgIlZhbG9yIOkgbXVpdG8gZ3JhbmRlICglbGQpIgogICAgSURTX0RFTEVURV9CT1hfVElUTEUgICAgIkNvbmZpcm1hciBleGNsdXPjbyBkZSB2YWxvciIKICAgIElEU19ERUxFVEVfQk9YX1RFWFQgICAgICJUZW0gY2VydGV6YSBxdWUgZGVzZWphIGV4Y2x1aXIgbyB2YWxvciAnJXMnPyIKICAgIElEU19ORVdLRVkgICAgICAgICAgICAgICJOb3ZhIGNoYXZlICMlZCIKICAgIElEU19ORVdWQUxVRSAgICAgICAgICAgICJOb3ZvIHZhbG9yICMlZCIKRU5ECgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRQoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19FUlJPUgkJICAgICJFcnJvIgogICAgSURTX0JBRF9LRVkJCSAgICAiTuNvIHBvZGUgcGVyZ3VudGFyIGEgY2hhdmUgJyVzJyIKICAgIElEU19CQURfVkFMVUUgICAgICAgICAgICJO428gcG9kZSBwZXJndW50YXIgbyB2YWxvciAnJXMnIgogICAgSURTX1VOU1VQUE9SVEVEX1RZUEUgICAgIk7jbyBwb2RlIGVkaXRhciBjaGF2ZXMgZGVzdGUgdGlwbyAoJWxkKSIKICAgIElEU19UT09fQklHX1ZBTFVFICAgICAgICJWYWxvciBtdWl0byBncmFuZGUgKCVsZCkiCiAgICBJRFNfREVMRVRFX0JPWF9USVRMRSAgICAiQ29uZmlybWFyIGV4Y2x1c+NvIGRlIHZhbG9yIgogICAgSURTX0RFTEVURV9CT1hfVEVYVCAgICAgIlRlbSBjZXJ0ZXphIHF1ZSBkZXNlamEgZXhjbHVpciBvIHZhbG9yICclcyc/IgogICAgSURTX05FV0tFWSAgICAgICAgICAgICAgIk5vdmEgY2hhdmUgIyVkIgogICAgSURTX05FV1ZBTFVFICAgICAgICAgICAgIk5vdm8gdmFsb3IgIyVkIgpFTkQKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qCiAqIFRFWFRJTkNMVURFCiAqLwoKMSBURVhUSU5DTFVERSBESVNDQVJEQUJMRQpCRUdJTgogICAgInJlc291cmNlLmhcMCIKRU5ECgoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKCgovKgogKkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgogKgogKlNUUklOR1RBQkxFIERJU0NBUkRBQkxFCiAqQkVHSU4KICogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgIk9wZW5zIFJlZ2lzdHJ5IEVkaXRvciBIZWxwLiIKICogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIkRpc3BsYXlzIHByb2dyYW0gaW5mb3JtYXRpb24sIHZlcnNpb24gbnVtYmVyLCBhbmQgY29weXJpZ2h0LiIKICpFTkQKICovCgoKLyoKICpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRQogKgogKlNUUklOR1RBQkxFIERJU0NBUkRBQkxFCiAqQkVHSU4KICogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgIkFicmUgYSBhanVkYSBkbyBFZGl0b3IgZGUgUmVnaXN0b3MuIgogKiAgICBJRF9IRUxQX0FCT1VUICAgICAgICAgICAiTW9zdHJhIGluZm9ybWHn428gZG8gcHJvZ3JhbWEsIG76bWVybyBkYSB2ZXJz428sIGUgZGlyZWl0b3MgZGUgYXV0b3IuIgogKkVORAogKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K