LyoKICogQ29weXJpZ2h0IDE5OTkgRXJpYyBQb3VlY2gKICogQ29weXJpZ2h0IDIwMDMgSXZhbiBMZW8gUHVvdGkKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19JVEFMSUFOLCBTVUJMQU5HX05FVVRSQUwKQkVHSU4KCi8qIE1NU1lTIGVycm9ycyAqLwpNTVNZU0VSUl9OT0VSUk9SLCAJCSJJbCBjb21hbmRvIHNwZWNpZmljYXRvIOggc3RhdG8gZXNlZ3VpdG8uIgpNTVNZU0VSUl9FUlJPUiwgCQkiRXJyb3JlIGVzdGVybm8gc2Nvbm9zY2l1dG8uIgpNTVNZU0VSUl9CQURERVZJQ0VJRCwgCQkiRScgc3RhdG8gdXNhdG8gbCdJRCBkaSB1biBkaXNwb3NpdGl2byBjaGUg6CBmdW9yaSBkYWxsYSBwb3J0YXRhIGRlbCBzaXN0ZW1hLiIKTU1TWVNFUlJfTk9URU5BQkxFRCwgCQkiSWwgZHJpdmVyIG5vbiDoIGFiaWxpdGF0by4iCk1NU1lTRVJSX0FMTE9DQVRFRCwgCQkiSWwgZHJpdmVyIHNwZWNpZmljYXRvIOggZ2ngIGluIHVzby4gQXR0ZW5kZXJlIGNoZSBzaWEgbnVvdmFtZW50ZSBkaXNwb25pYmlsZSwgZSByaXByb3ZhcmUuIgpNTVNZU0VSUl9JTlZBTEhBTkRMRSwgCQkiSWwgaGFuZGxlIGRlbCBkaXNwb3NpdGl2byBzcGVjaWZpY2F0byDoIGludmFsaWRvLiIKTU1TWVNFUlJfTk9EUklWRVIsIAkJIk5vbiDoIGluc3RhbGxhdG8gbmVzc3VuIGRyaXZlciBuZWwgc2lzdGVtYSAhXG4iCk1NU1lTRVJSX05PTUVNLCAJCSJNZW1vcmlhIGluc3VmZmljZW50ZSBwZXIgZXNlZ3VpcmUgcXVlc3RhIG9wZXJhemlvbmUuIENoaXVkZXJlIHVuYSBvIHBp+SBhcHBsaWNhemlvbmkgcGVyIGF1bWVudGFyZSBsYSBtZW1vcmlhIGRpc3BvbmliaWxlLCBlIHJpcHJvdmFyZS4iCk1NU1lTRVJSX05PVFNVUFBPUlRFRCwgCQkiUXVlc3RhIGZ1bnppb25lIG5vbiDoIHN1cHBvcnRhdGEuIFVzYXJlIGxhIGZ1bnppb25lIENhcGFiaWxpdGllcyBwZXIgZGV0ZXJtaW5hcmUgcXVhbGkgZnVuemlvbmkgZSBtZXNzYWdnaSBzb25vIHN1cHBvcnRhdGkgZGFsIGRyaXZlci4iCk1NU1lTRVJSX0JBREVSUk5VTSwgCQkiRScgc3RhdG8gc3BlY2lmaWNhdG8gdW4gbnVtZXJvIGRpIGVycm9yZSBub24gZGVmaW5pdG8gZGFsIHNpc3RlbWEuIgpNTVNZU0VSUl9JTlZBTEZMQUcsIAkJIlVuIGZsYWcgaW52YWxpZG8g6CBzdGF0byBwYXNzYXRvIGEgdW5hIGZ1bnppb25lIGRpIHNpc3RlbWEuIgpNTVNZU0VSUl9JTlZBTFBBUkFNLCAJCSJVbiBwYXJhbWV0cm8gaW52YWxpZG8g6CBzdGF0byBwYXNhdG8gYSB1bmEgZnVuemlvbmUgZGkgc2lzdGVtYS4iCgovKiBXQVZFIGVycm9ycyAqLwpXQVZFUlJfQkFERk9STUFULCAJCSJJbCBmb3JtYXRvIHNwZWNpZmljYXRvIG5vbiDoIHN1cHBvcnRhdG8gbyBub24gcHXyIGVzc2VyZSB0cmFkb3R0by4gVXNhcmUgbGEgZnVuemlvbmUgQ2FwYWJpbGl0aWVzIHBlciBkZXRlcm1pbmFyZSBsZSBmdW56aW9uaSBzdXBwb3J0YXRlIgpXQVZFUlJfU1RJTExQTEFZSU5HLCAJCSJOb24g6CBwb3NzaWJpbGUgZWZmZXR1YXJlIHF1ZXN0YSBvcGVyYXppb25lIGR1cmFudGUgbCdlc2VjdXppb25lLiBSZWluaXppYWxpenphcmUgaWwgZGlzcG9zaXRpdm8sIG8gYXR0ZW5kZXJlIGxhIGZpbmUgZGVsbCdlc2VjdXppb25lLiIKV0FWRVJSX1VOUFJFUEFSRUQsIAkJIklsIGhlYWRlciB3YXZlIG5vbiDoIHN0YXRvIHByZXBhcmF0by4gVXNhcmUgbGEgZnVuemlvbmUgUHJlcGFyZSBwZXIgcHJlcGFyYWxlIGwnaGVhZGVyLCBlIHJpcHJvdmFyZS4iCldBVkVSUl9TWU5DLCAJCQkiTm9uIOggcG9zc2liaWxlIGFwcmlyZSBpbCBkaXNwb3NpdGl2byBzZW56YSB1c2FyZSBpbCBmbGFnIFdBVkVfQUxMT1dTWU5DLiBVc2FyZSBpbCBmbGFnLCBlIHJpcHJvdmFyZS4iCgovKiBNSURJIGVycm9ycyAqLwpNSURJRVJSX1VOUFJFUEFSRUQsIAkJIkwnaGVhZGVyIE1JREkgbm9uIOggc3RhdG8gcHJlcGFyYXRvLiBVc2FyZSBsYSBmdW56aW9uZSBQcmVwYXJlIHBlciBwcmVwYXJhcmUgbCdoZWFkZXIsIGUgcmlwcm92YXJlLiIKTUlESUVSUl9TVElMTFBMQVlJTkcsIAkJIk5vbiDoIHBvc3NpYmlsZSBlZmZldHVhcmUgcXVlc3RhIG9wZXJhemlvbmUgZHVyYW50ZSBsJ2VzZWN1emlvbmUuIFJlaW5pemlhbGl6emFyZSBpbCBkaXNwb3NpdGl2bywgbyBhdHRlbmRlcmUgbGEgZmluZSBkZWxsJ2VzZWN1emlvbmUuIgpNSURJRVJSX05PTUFQLCAJCQkiTm9uIOggc3RhdGEgdHJvdmF0YSB1bmEgbWFwcGEgTUlESS4gQ2kgcG90cmViYmUgZXNzZXJlIHVuIHByb2JsZW1hIGNvbiBpbCBkcml2ZXIsIG8gaWwgZmlsZSBNSURJTUFQLkNGRyBwb3RyZWJiZSBlc3NlcmUgZGFubmVnZ2lhdG8gbyBtYW5jYW50ZS4iCk1JRElFUlJfTk9UUkVBRFksIAkJIkxhIHBvcnRhIHN0YSB0cmFzbWV0dGVuZG8gZGVpIGRhdGkgYWwgZGlzcG9zaXRpdm8uIEF0dGVuZGVyZSBsYSB0cmFzbWlzc2lvbmUgZGkgdHV0dGkgaSBkYXRpLCBlIHJpcHJvdmFyZS4iCk1JRElFUlJfTk9ERVZJQ0UsIAkJIkxhIGNvbmZpZ3VyYXppb25lIGF0dHVhbGUgZGVsIE1hcHBlciBNSURJIHNpIHJpZmVyaXNjZSBhIHVuIGRpc3Bvc2l0aXZvIE1JREkgY2hlIG5vbiDoIHByZXNlbnRlIG5lbCBzaXN0ZW1hLiBVc2FyZSBpbCBNYXBwZXIgTUlESSBwZXIgbW9kaWZpY2FyZSBsYSBjb25maWd1cmF6aW9uZS4iCk1JRElFUlJfSU5WQUxJRFNFVFVQLCAJCSJMYSBjb25maWd1dGF6aW9uZSBNSURJIGF0dHVhbGUg6CBkYW5uZWdnaWF0YS4gQ29waWFyZSBpbCBmaWxlIE1JRElNQVAuQ0ZHIG5lbGxhIGRpcmVjdG9yeSBTWVNURU0gZGkgV2luZG93cywgZSByaXByb3ZhcmUuIgoKLyogTUNJIGVycm9ycyAqLwpNQ0lFUlJfSU5WQUxJRF9ERVZJQ0VfSUQsIAkiSUQgZGVsIGRpc3Bvc2l0aXZvIE1DSSBpbnZhbGlkby4gVXNhcmUgbCdJRCByZXN0aXR1aXRvIHF1YW5kbyBzaSDoIGFwZXJ0byBpbCBkaXNwb3NpdGl2byBNQ0kuIgpNQ0lFUlJfVU5SRUNPR05JWkVEX0tFWVdPUkQsIAkiSWwgZHJpdmVyIG5vbiByaWNvbm9zY2UgaWwgcGFyYW1ldHJvIGRlbCBjb21hbmRvIHNwZWNpZmljYXRvLiIKTUNJRVJSX1VOUkVDT0dOSVpFRF9DT01NQU5ELAkiSWwgZHJpdmVyIG5vbiByaWNvbm9zY2UgaWwgY29tYW5kbyBzcGVjaWZpY2F0by4iCk1DSUVSUl9IQVJEV0FSRSwgCQkiQyfoIHVuIHByb2JsZW1hIGNvbiBpbCBkaXNwb3NpdGl2byBtdWx0aW1lZGlhbGUuIENvbnRyb2xsYXJlIGNoZSBpbCBmdW56aW9uYW1lbnRvIGRlbCBkaXNwb3NpdGl2byBvIGNvbnRhdHRhcmUgaWwgcHJvZHV0dG9yZS4iCk1DSUVSUl9JTlZBTElEX0RFVklDRV9OQU1FLCAJIklsIGRpc3Bvc2l0aXZvIHNwZWNpZmljYXRvIG5vbiDoIGFwZXJ0byBvIG5vbiDoIHN1cHBvcnRhdG8gZGEgTUNJLiIKTUNJRVJSX09VVF9PRl9NRU1PUlksIAkJIk1lbW9yaWEgaW5zdWZmaWNlbnRlIHBlciBlc2VndWlyZSBxdWVzdGEgb3BlcmF6aW9uZS5cbkNoaXVkZXJlIHVuYSBvIHBp+SBhcHBsaWNhemlvbmkgcGVyIGF1bWVudGFyZSBsYSBtZW1vcmlhIGRpc3BvbmliaWxlLCBlIHJpcHJvdmFyZS4iCk1DSUVSUl9ERVZJQ0VfT1BFTiwgCQkiSWwgbm9tZSBkZWwgZGlzcG9zaXRpdm8g6CBnaeAgaW4gdXNvIGNvbWUgYWxpYXMgZGEgcGFydGUgZGkgcXVlc3RhIGFwcGxpY2F6aW9uZS4gVXNhcmUgdW4gYWxpYXMgdW5pdm9jby4iCk1DSUVSUl9DQU5OT1RfTE9BRF9EUklWRVIsIAkiU2kg6CB2ZXJpZmljYXRvIHVuIHByb2JsZW1hIG5vbiByaWxldmFiaWxlIG5lbCBjYXJpY2FtZW50byBkZWwgZHJpdmVyIHNwZWNpZmljYXRvLiIKTUNJRVJSX01JU1NJTkdfQ09NTUFORF9TVFJJTkcsIAkiTm9uIOggc3RhdG8gc3BlY2lmaWNhdG8gbmVzc3VuIGNvbWFuZG8uIgpNQ0lFUlJfUEFSQU1fT1ZFUkZMT1csIAkJIkxhIHN0cmluZ2EgZGkgb3V0cHV0IOggdHJvcHBvIGdyYW5kZSBwZXIgZW50cmFyZSBuZWwgYnVmZmVyIGRpIHJpdG9ybm8uIEF1bWVudGFyZSBsYSBkaW1lbnNpb25lIGRlbCBidWZmZXIuIgpNQ0lFUlJfTUlTU0lOR19TVFJJTkdfQVJHVU1FTlQsICJJbCBjb21hbmRvIHNwZWNpZmljYXRvIHJpY2hpZWRlIHVuIHBhcmFtZXRybyBjaGUgc2lhIHVuYSBzdHJpbmdhIGRpIGNhcmF0dGVyaS4gRm9ybmlybmUgdW5vLiIKTUNJRVJSX0JBRF9JTlRFR0VSLCAJCSJJbCBudW1lcm8gaW50cmVvIHNwZWNpZmljYXRvIG5vbiDoIHZhbGlkbyBwZXIgcXVlc3RvIGNvbWFuZG8uIgpNQ0lFUlJfUEFSU0VSX0lOVEVSTkFMLCAJIklsIGRyaXZlciBoYSByZXN0aXR1aXRvIHVuIHRpcG8gbm9uIHZhbGlkby4gQ29udGF0dGFyZSBpbCBwcm9kdXR0b3JlIGRlbCBkaXNwb3NpdGl2byBwZXIgb3R0ZW5lcmUgdW4gbnVvdm8gZHJpdmVyLiIKTUNJRVJSX0RSSVZFUl9JTlRFUk5BTCwgCSJDJ+ggdW4gcHJvYmxlbWEgY29uIGlsIGRyaXZlci4gQ29udGF0dGFyZSBpbCBwcm9kdXR0b3JlIGRlbCBkaXNwb3NpdGl2byBwZXIgb3R0ZW5lcmUgdW4gbnVvdm8gZHJpdmVyLiIKTUNJRVJSX01JU1NJTkdfUEFSQU1FVEVSLCAJIklsIGNvbWFuZG8gc3BlY2lmaWNhdG8gcmljaGllZGUgdW4gcGFyYW1ldHJvLiBGb3JuaXJuZSB1bm8uIgpNQ0lFUlJfVU5TVVBQT1JURURfRlVOQ1RJT04sIAkiSWwgZGlzcG9zaXRpdm8gTUNJIGluIHVzbyBub24gc3VwcG9ydGEgaWwgY29tYW5kbyBzcGVjaWZpY2F0by4iCk1DSUVSUl9GSUxFX05PVF9GT1VORCwgCQkiSWwgZmlsZSBzcGVjaWZpY2F0byBub24g6CBzdGF0byB0cm92YXRvLiBDb250cm9sbGFyZSBjaGUgbCdpbmRpcml6em8gZSBpbCBub21lIGRlbCBmaWxlIHNpYW5vIGNvcnJldHRpLiIKTUNJRVJSX0RFVklDRV9OT1RfUkVBRFksIAkiSWwgZHJpdmVyIG5vbiDoIHByb250by4iCk1DSUVSUl9JTlRFUk5BTCwgCQkiU2kg6CB2ZXJpZmljYXRvIHVuIHByb2JsZW1hIG5lbGwnaW5pemlhbGl6YXppb25lIGRpIE1DSS4gUHJvdmFyZSBhIHJpYXZ2aWFyZSBXaW5kb3dzLiIKTUNJRVJSX0RSSVZFUiwgCQkJIlNpIOggdmVyaWZpY2F0byB1biBlcnJvcmUgbmVsIGRyaXZlci4gSWwgZHJpdmVyIOggc3RhdG8gY2hpdXNvLiBFcnJvcmUgbm9uIGFjY2Vzc2liaWxlLiIKTUNJRVJSX0NBTk5PVF9VU0VfQUxMLCAJCSJOb24g6CBwb3NzaWJpbGUgdXNhcmUgJ2FsbCcgY29tZSBub21lIGRlbCBkaXNwb3NpdGl2byBjb24gaWwgY29tYW5kbyBzcGVjaWZpY2F0by4iCk1DSUVSUl9NVUxUSVBMRSwgCQkiU2kgc29ubyB2ZXJpZmljYXRpIGRlZ2xpIGVycm9yaSBpbiBwafkgZGkgdW4gZGlzcG9zaXRpdm8uIFNwZWNpZmljYXJlIG9nbmkgY29tYW5kbyBlIGRpc3Bvc2l0aXZvIHNlcGFyYXRhbWVudGUgcGVyIGRldGVybWluYXJlIHF1YWxlIGRpc3Bvc2l0aXZvIGhhIGNhdXNhdG8gbCdlcnJvcmUiCk1DSUVSUl9FWFRFTlNJT05fTk9UX0ZPVU5ELCAJIkltcG9zc2liaWxlIGRldGVybWluYXJlIGlsIHRpcG8gZGkgZGlzcG9zaXRpdm8gZGFsbCdlc3RlbnNpb25lIGRhdGEuIgpNQ0lFUlJfT1VUT0ZSQU5HRSwgCQkiSWwgcGFyYW1ldHJvIHNwZWNpZmljYXRvIOggZnVvcmkgZGFsbGEgcG9ydGF0YSBkZWwgY29tYW5kbyBzcGVjaWZpY2F0by4iCk1DSUVSUl9GTEFHU19OT1RfQ09NUEFUSUJMRSwgCSJJIHBhcmFtZXRyaSBzcGVjaWZpY2F0aSBub24gcG9zc29ubyBlc3NlcmUgdXNhdGkgaW5zaWVtZS4iCk1DSUVSUl9GSUxFX05PVF9TQVZFRCwgCQkiSW1wb3NzaWJpbGUgc2FsdmFyZSBpbCBmaWxlIHNwZWNpZmljYXRvLiBDb250cm9sbGFyZSBkaSBhdmVyZSBhYmJhc3RhbnphIHNwYXppbyBsaWJlcm8gZSBkaSBlc3NlcmUgYW5jb3JhIGNvbm5lc3NpIGFsbGEgcmV0ZS4iCk1DSUVSUl9ERVZJQ0VfVFlQRV9SRVFVSVJFRCwgCSJJbXBvc3NpYmlsZSB0cm92YXJlIGlsIGRpc3Bvc2l0aXZvIHNwZWNpZmljYXRvLiBDb250cm9sbGFyZSBjaGUgc2lhIGluc3RhbGxhdG8gZSBjaGUgaWwgbm9tZSBzaWEgZGlnaXRhdG8gY29ycmV0dGFtZW50ZS4iCk1DSUVSUl9ERVZJQ0VfTE9DS0VELCAJCSJJbCBkaXNwb3NpdGl2byBzcGVjaWZpY2F0byB2ZXJy4CBjaGl1c28uIEF0dGVuZGVyZSBhbGN1bmkgc2Vjb25kaSBlIHJpcHJvdmFyZS4iCk1DSUVSUl9EVVBMSUNBVEVfQUxJQVMsIAkiTCdhbGlhcyBzcGVjaWZpY2F0byDoIGdp4CBpbiB1c28gZGEgcGFydGUgZGkgcXVlc3RhIGFwcGxpY2F6aW9uZS4gVXNhcmUgdW4gYWxpYXMgdW5pdm9jby4iCk1DSUVSUl9CQURfQ09OU1RBTlQsIAkJIklsIHBhcmFtZXRybyBzcGVjaWZpY2F0byDoIGludmFsaWRvIHBlciBxdWVzdG8gY29tYW5kby4iCk1DSUVSUl9NVVNUX1VTRV9TSEFSRUFCTEUsIAkiSWwgZHJpdmVyIOggZ2ngIGluIHVzby4gUGVyIGNvbmRpdmlkZXJsbywgdXNhcmUgaWwgcGFyYW1ldHJvICAnc2hhcmVhYmxlJyBjb24gb2duaSBjb21hbmRvICdvcGVuJy4iCk1DSUVSUl9NSVNTSU5HX0RFVklDRV9OQU1FLCAJIklsIGNvbWFuZG8gc3BlY2lmaWNhdG8gcmljaGllZGUgdW4gYWxpYXMsIHVuIGZpbGUsIHVuIGRyaXZlciBvIGlsIG5vbWUgZGkgdW4gZGlzcG9zaXRpdm8uIEZvcm5pcm5lIHVuby4iCk1DSUVSUl9CQURfVElNRV9GT1JNQVQsIAkiSWwgdmFsb3JlIHNwZWNpZmljYXRvIOggaW52YWxpZG8gcGVyIGlsIGZvcm1hdG8gZGVsbCdvcmFyaW8uIENvbnN1bHRhcmUgbGEgZG9jdW1lbnRhemlvbmUgZGVsbCdNQ0kgcGVyIGkgZm9ybWF0aSB2YWxpZGkuIgpNQ0lFUlJfTk9fQ0xPU0lOR19RVU9URSwgCSJNYW5jYSB1bmEgZG9wcGlhIHZvcmdvbGV0dGEgZGkgY2hpdXN1cmEgZGFsIHZhbG9yZSBkZWwgcGFyYW1ldHJvLiBGb3JuaXJuZSB1bmEuIgpNQ0lFUlJfRFVQTElDQVRFX0ZMQUdTLCAJIlVuIHZhbG9yZSBvIHBhcmFtZXRybyDoIHN0YXRvIHNwZWNpZmljYXRvIGR1ZSB2b2x0ZS4gU3BlY2lmaWNhcmxvIHNvbG8gdW5hIHZvbHRhLiIKTUNJRVJSX0lOVkFMSURfRklMRSwgCQkiSWwgZmlsZSBzcGVjaWZpY2F0byBub24gcHXyIGVzc2VyZSBhcGVydG8gY29uIGlsIGRpc3Bvc2l0aXZvIE1DSSBzcGVjaWZpY2F0by4gSWwgZmlsZSBwb3RyZWJiZSBlc3NlcmUgZGFuZWdnaWF0bywgbyBpbiB1biBmb3JtYXRvIGVycmF0by4iCk1DSUVSUl9OVUxMX1BBUkFNRVRFUl9CTE9DSywgCSJVbiBudWxsIHBhcmFtZXRlciBibG9jayDoIHN0YXRvIHBhc3NhdG8gYSBNQ0kuIgpNQ0lFUlJfVU5OQU1FRF9SRVNPVVJDRSwgCSJOb24g6CBwb3NzaWJpbGUgc2FsdmFyZSB1biBmaWxlIHNlbnphIG5vbWUuIEZvcm5pcmUgdW4gbm9tZSBhbCBmaWxlLiIKTUNJRVJSX05FV19SRVFVSVJFU19BTElBUywgCSJFJyBuZWNlc3NhcmlvIHNwZWNpZmljYXJlIHVuIGFsaWFzIHF1YW5kbyBzaSB1c2EgaWwgcGFyYW1ldHJvICduZXcnLiIKTUNJRVJSX05PVElGWV9PTl9BVVRPX09QRU4sIAkiTm9uIOggcG9zc2liaWxlIHVzYXJlIGlsIGZsYWcgJ25vdGlmeScgY29uIGRpc3Bvc2l0aXZpIGF1dG8tYXBlcnRpLiIKTUNJRVJSX05PX0VMRU1FTlRfQUxMT1dFRCwgCSJOb24g6CBwb3NzaWJpbGUgdXNhcmUgdW4gbm9tZSBmaWxlIGNvbiBpbCBkaXNwb3NpdGl2byBzcGVjaWZpY2F0by4iCk1DSUVSUl9OT05BUFBMSUNBQkxFX0ZVTkNUSU9OLCAJIk5vbiDoIHBvc3NpYmlsZSBlc2VndWlyZSBpIGNvbWFuZGkgbmVsbCdvcmRpbmUgc3BlY2lmaWNhdG8uIENvcnJlZ2dlcmUgbGEgc2VxdWVuemEsIGUgcmlwcm92YXJlLiIKTUNJRVJSX0lMTEVHQUxfRk9SX0FVVE9fT1BFTiwgCSJOb24g6CBwb3NzaWJpbGUgZXNlZ3VpcmUgaWwgY29tYW5kbyBzcGVjaWZpY2F0byBjb24gdW4gZGlzcG9zaXRpdm8gYXV0by1hcGVydG8uIEF0dGVuZGVyZSBjaGUgaWwgZGlzcG9zaXRpdm8gc2kgc2lhIGNoaXVzbywgZSByaXByb3ZhcmUuIgpNQ0lFUlJfRklMRU5BTUVfUkVRVUlSRUQsIAkiSWwgbm9tZSBkZWwgZmlsZSDoIGludmFsaWRvLiBDb250cm9sbGFyZSBjaGUgaWwgbm9tZSBkZWwgZmlsZSBub24gc2lhIHBp+SBsdW5nbyBkaSA4IGNhcmF0dGVyaSwgc2VndWl0byBkYSB1biBwZXJpb2RvIGUgdW4nZXN0ZW5zaW9uZS4iCk1DSUVSUl9FWFRSQV9DSEFSQUNURVJTLCAJIk5vbiDoIHBvc3NpYmlsZSBzcGVjaWZpY2FyZSBhbHRyaSBjYXJhdHRlcmkgZG9wbyB1bmEgc3RyaW5nYSBjb21wcmVzYSB0cmEgdmlyZ29sZXR0ZS4iCk1DSUVSUl9ERVZJQ0VfTk9UX0lOU1RBTExFRCwgCSJJbCBkaXNwb3NpdGl2byBzcGVjaWZpY2F0byBub24g6CBpbnN0YWxsYXRvIG5lbCBzaXN0ZW1hLiBVc2FyZSBsJ29wemlvbmUgRHJpdmVycyBuZWwgUGFubmVsbG8gZGkgQ29udHJvbGxvIHBlciBpbnN0YWxsYXJlIGlsIGRpc3Bvc2l0aXZvLiIKTUNJRVJSX0dFVF9DRCwgCQkJIkltcG9zc2liaWxlIGFjY2VkZXJlIGFsIGZpbGUgbyBkaXNwb3NpdGl2byBNQ0kgc3BlY2lmaWNhdG8uIFByb3ZhcmUgYSBjYW1iaWFyZSBkaXJlY3RvcnkgbyByaWF2dmlhcmUgaWwgY29tcHV0ZXIuIgpNQ0lFUlJfU0VUX0NELCAJCQkiSW1wb3NzaWJpbGUgYWNjZWRlcmUgYWwgZmlsZSBvIGRpc3Bvc2l0aXZvIE1DSSBzcGVjaWZpY2F0byBwZXJjaOggbCdhcHBsaWNhemlvbmUgbm9uIHB18iBjYW1iaWFyZSBkaXJlY3RvcnkuIgpNQ0lFUlJfU0VUX0RSSVZFLCAJCSJJbXBvc3NpYmlsZSBhY2NlZGVyZSBhbCBmaWxlIG8gZGlzcG9zaXRpdm8gTUNJIHNwZWNpZmljYXRvIHBlcmNo6CBsJ2FwcGxpY2F6aW9uZSBub24gcHXyIGNhbWJpYXJlIGRyaXZlLiIKTUNJRVJSX0RFVklDRV9MRU5HVEgsIAkJIlNwZWNpZmljYXJlIHVuIGRyaXZlciBvIGRpc3Bvc2l0aXZvIGNvbiBtZW5vIGRpIDc5IGNhcmF0dGVyaS4iCk1DSUVSUl9ERVZJQ0VfT1JEX0xFTkdUSCwgCSJTcGVjaWZpY2FyZSB1biBkcml2ZXIgbyBkaXNwb3NpdGl2byBjb24gbWVubyBkaSA2OSBjYXJhdHRlcmkuIgpNQ0lFUlJfTk9fSU5URUdFUiwgCQkiSWwgY29tYW5kbyBzcGVjaWZpY2F0byByaWNoaWVkZSB1biBudW1lcm8gaW50ZXJvIGNvbWUgcGFyYW1ldHJvLiBGb3JuaXJuZSB1bm8uIgpNQ0lFUlJfV0FWRV9PVVRQVVRTSU5VU0UsIAkiVHV0dGkgaSBkaXNwb3NpdGl2aSB3YXZlIGNoZSBwb3Nzb25vIGxlZ2dlcmUgaWwgZmlsZSBuZWwgZm9ybWF0byBhdHR1YWxlIHNvbm8gaW4gdXNvLiBBdHRlbmRlcmUgY2hlIHVuIGRpc3Bvc2l0aXZvIHdhdmUgc2lhIGxpYmVybywgZSByaXByb3ZhcmUuIgpNQ0lFUlJfV0FWRV9TRVRPVVRQVVRJTlVTRSwgCSJOb24g6CBwb3NzaWJpbGUgaW1wb3N0YXJlIGlsIGRpc3Bvc2l0aXZvIHdhdmUgYXR0dWFsZSBwZXIgaWwgcGxheSBiYWNrIHBlcmNo6CDoIGluIHVzby4gQXR0ZW5kZXJlIGNoZSBpbCBkaXNwb3NpdGl2byBzaWEgbGliZXJvLCBlIHJpcHJvdmFyZS4iCk1DSUVSUl9XQVZFX0lOUFVUU0lOVVNFLCAJIlR1dHRpIGkgZGlzcG9zaXRpdmkgd2F2ZSBjaGUgcG9zc29ubyByZWdpc3RyYXJlIG5lbCBmb3JtYXRvIGF0dHVhbGUgc29ubyBpbiB1c28uIEF0dGVuZGVyZSBjaGUgdW4gZGlzcG9zaXRpdm8gd2F2ZSBzaWEgZGlzcG9uaWJpbGUsIGUgcmlwcm92YXJlLiIKTUNJRVJSX1dBVkVfU0VUSU5QVVRJTlVTRSwgCSJOb24g6CBwb3NzaWJpbGUgaW1wb3N0YXJlIGlsIGRpc3Bvc2l0aXZvIHBlciByZWdpc3RyYXJlIHBlcmNo6CDoIGluIHVzby4gQXR0ZW5kZXJlIGNoZSBpbCBkaXNwb3NpdGl2byBzaWEgZGlzcG9uaWJpbGUsIGUgcmlwcm92YXJlLiIKTUNJRVJSX1dBVkVfT1VUUFVUVU5TUEVDSUZJRUQsCSJQdfIgZXNzZXJlIHVzYXRvIHF1YWx1bnF1ZSBkaXNwb3NpdGl2byBjb21wYXRpYmlsZSB3YXZlZm9ybSBwZXIgaWwgcGxheWJhY2suIgpNQ0lFUlJfV0FWRV9JTlBVVFVOU1BFQ0lGSUVELCAJIlB18iBlc3NlcmUgdXNhdG8gcXVhbHVucXVlIGRpc3Bvc2l0aXZvIGNvbXBhdGliaWxlIHdhdmVmb3JtIHBlciByZWdpc3RyYXJlLiIKTUNJRVJSX1dBVkVfT1VUUFVUU1VOU1VJVEFCTEUsIAkiTmVzc3VuIGRpc3Bvc2l0aXZvIHdhdmUgaW5zdGFsbGF0byBwdfIgbGVnZ2VyZSBpIGZpbGUgbmVsIGZvcm1hdG8gYXR0dWFsZS4gVXNhcmUgbCdvcHppb25lIGRyaXZlcnMgcGVyIGluc3RhbGxhcmUgdW4gZGlzcG9zaXRpdm8gd2F2ZS4iCk1DSUVSUl9XQVZFX1NFVE9VVFBVVFVOU1VJVEFCTEUsIklsIGRpc3Bvc2l0aXZvIGNoZSBzaSBzdGEgdXNhbmRvIHBlciBsZWdnZXJlIGlsIGZpbGUgbm9uIHJpc29ub3NjZSBpbCBmb3JtYXRvIGRlbCBmaWxlIGF0dHVhbGUuIgpNQ0lFUlJfV0FWRV9JTlBVVFNVTlNVSVRBQkxFLCAJIk5vbiDoIGluc3RhbGxhdG8gbmVzc3VuIGRpcG9zaXRpdm8gd2F2ZSBjaGUgcG9zc2EgcmVnaXN0cmFyZSBkZWkgZmlsZSBuZWwgZm9ybWF0byBhdHR1YWxlLiBVc2FyZSBsJ29wemlvbmUgRHJpdmVycyBwZXIgaW5zdGFsbGFyZSB1biBkaXNwb3NpdGl2byB3YXZlLiIKTUNJRVJSX1dBVkVfU0VUSU5QVVRVTlNVSVRBQkxFLCAiSWwgZGlzcG9zaXRpdm8gY2hlIHNpIHN0YSB1c2FuZG8gcGVyIHJlZ2lzdHJhcmUgbm9uIHJpc29ub3NjZSBpbCBmb3JtYXRvIGF0dHVhbGUuIgpNQ0lFUlJfTk9fV0lORE9XLCAJCSJOb24gYyfoIG5lc3N1bmEgZmluZXN0cmEgZGkgdmlzdWFsaXp6YXppb25lLiIKTUNJRVJSX0NSRUFURVdJTkRPVywgCQkiSW1wb3NzaWJpbGUgdXNhcmUgbyBjcmVhcmUgbGEgZmluZXN0cmEuIgpNQ0lFUlJfRklMRV9SRUFELCAJCSJJbXBvc3NpYmlsZSBsZWdnZXJlIGlsIGZpbGUgc3BlY2lmaWNhdG8uIEFzc2ljdXJhcnNpIGNoZSBpbCBmaWxlIHNpYSBhbmNvcmEgcHJlc2VudGUsIG8gY29udHJvbGxhcmUgaWwgZGlzY28gbyBsYSBjb25uZXNzaW9uZSBkaSByZXRlLiIKTUNJRVJSX0ZJTEVfV1JJVEUsIAkJIkltcG9zc2liaWxlIHNjcml2ZXJlIGlsIGZpbGUgc3BlY2lmaWNhdG8uIENvbnRyb2xsYXJlIGRpIGF2ZXJlIHNwYXppbyBsaWJlcm8gc3VmZmljZW50ZSBzdWwgZGlzY28gbyBkaSBlc3NlcmUgYW5jb3JhIGNvbm5lc3NpIGFsbGEgcmV0ZS4iCk1DSUVSUl9TRVFfRElWX0lOQ09NUEFUSUJMRSwgCSJJIGZvcm1hdGkgZGVsbCdvcmFyaW8gZGVsICIic29uZyBwb2ludGVyIiIgZSAgU01QVEUgc2kgZXNjbHVkb25vIHZpY2VuZGV2b2xtZW50ZS4gTm9uIHNpIHBvc3Nvbm8gdXNhcmUgaW5zaWVtZS4iCk1DSUVSUl9TRVFfTk9NSURJUFJFU0VOVCwgCSJOZWwgc2lzdGVtYSBub24gc29ubyBpbnN0YWxsYXRpIGRpc3Bvc2l0aXZpIE1JREkuIFVzYXJlIGwnb3B6aW9uZSBEcml2ZXJzIGRhbCBQYW5uZWxsbyBkaSBDb250cm9sbG8gcGVyIGluc3RhbGxhcmUgdW4gZHJpdmVyIE1JREkuIgpNQ0lFUlJfU0VRX1BPUlRfSU5VU0UsIAkJIkxhIHBvcnRhIE1JREkgc3BlY2lmaWNhdGEg6CBnaeAgaW4gdXNvLiBBdHRlbmRlcmUgY2hlIHNpYSBsaWJlcmEsIGUgcmlwcm92YXJlLiIKTUNJRVJSX1NFUV9QT1JUX01BUE5PREVWSUNFLCAJIkxhIGNvbmZpZ3VyYXppb25lIGRlbCBNYXBwZXIgTUlESSBzaSByaWZlcmlzY2UgYSB1biBkaXNwb3NpdGl2byBNSURJIGNoZSBub24g6CBpbnN0YWxsYXRvIG5lbCBzaXN0ZW1hLiBVc2FyZSBsJ29wemlvbmUgTWFwcGVyIE1JREkgbmVsIFBhbm5lbGxvIGRpIENvbnRyb2xsbyBwZXIgY2FtYmlhcmUgbGEgY29uZmlndXJhemlvbmUuIgpNQ0lFUlJfU0VRX1BPUlRfTUlTQ0VSUk9SLCAJIlNpIOggdmVyaWZpY2F0byB1biBlcnJvcmUgY29uIGxhIHBvcnRhIHNwZWNpZmljYXRhLiIKTUNJRVJSX1NFUV9QT1JUX05PTkVYSVNURU5ULCAJIklsIGRpc3Bvc2l0aXZvIE1JREkgc3BlY2lmaWNhdG8gbm9uIOggaW5zdGFsbGF0byBuZWwgc2lzdGVtYS4gVXNhcmUgbCdvcHppb25lIERSSVZFUlMgbmVsIFBhbm5lbGxvIGRpIENvbnRyb2xsbyBwZXIgaW5zdGFsbGFyZSB1biBkaXNwb3NpdGl2byBNSURJLiIKTUNJRVJSX1NFUV9QT1JUVU5TUEVDSUZJRUQsIAkiTm9uIOggc3RhdGEgc3BlY2lmaWNhdGEgdW5hIHBvcnRhIE1JREkgbmVsIHNpc3RlbWEuIgpNQ0lFUlJfU0VRX1RJTUVSLCAJCSJUdXR0aSBpIHRpbWVyIG11bHRpbWVkaWFsaSBzb25vIGluIHVzbyBkYSBwYXJ0ZSBkaSBhbHRyZSBhcHBsaWNhemlvbmkuIENoaXVkZXJlIHVuYSBkaSBxdWVzdGEgYXBwbGljYXppb25pLCBlIHJpcHJvdmFyZS4iCgpFTkQK