From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Vlad Drakula X-Mailer: The Bat! (v1.52f) Business Organization: Siberia X-Priority: 3 (Normal) Message-ID: <71112433050.20011011173821@intramail.ru> To: Dmitry In-Reply-To: <159247246291.20011011143840@onlinx.prime-tass.ru> References: <159247246291.20011011143840@onlinx.prime-tass.ru> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----------A01E51C237E0D027" Subject: [mdk-re] =?koi8-r?B?UmU6IFttZGstcmVdIPDPzc/HydTFIM7B09TSz8nU2CBOQVQg1yBJUFRBQkxF?= =?koi8-r?B?Uw==?= Sender: mandrake-russian-admin@altlinux.ru Errors-To: mandrake-russian-admin@altlinux.ru X-BeenThere: mandrake-russian@altlinux.ru X-Mailman-Version: 2.0 Precedence: bulk Reply-To: mandrake-russian@altlinux.ru X-Reply-To: Vlad Drakula List-Help: List-Post: List-Subscribe: , List-Id: Linux-Mandrake RE / ALT Linux discussion list List-Unsubscribe: , List-Archive: Date: Thu Oct 11 15:40:07 2001 X-Original-Date: Thu, 11 Oct 2001 17:38:21 +0600 Archived-At: List-Archive: List-Post: ------------A01E51C237E0D027 Content-Type: text/plain; charset=koi8-r Content-Transfer-Encoding: 8bit Hello Dmitry, Thursday, October 11, 2001, 4:38:40 PM, you wrote: D> Хочу сделать транспарант прокси для веб сервера во внутренней сети D> (192.168.1.100) через Линукс бокс с поднятыми Iptables. Порылся в D> доках и нарыл что-то вроде этого: D> INET_IFACE="eth0" D> LAN_IFACE="eth1" D> IPTABLES="/sbin/iptables" D> $IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE D> $IPTABLES -t nat -A PREROUTING -p tcp -d 1.2.3.4 --dport 80 -j DNAT --to 192.168.1.100 D> $IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to 1.2.3.4 D> Не работает АднАкА :( D> Где тут грабли? Нате скриптик... Настройки и описание внутри... Заодно и брандмауэр :) подымешь... -- Best regards, Vlad mailto:sib_drakula@intramail.ru ------------A01E51C237E0D027 Content-Type: application/octet-stream; name="rc.firewall-2.3.6" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="rc.firewall-2.3.6" IyEvYmluL3NoCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKIwkgICAgICBUaGlzIGlzIGl0Li4uTW9uTW90aGEn cyBGaXJld2FsbCAyLjMuNiEJCQl8CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKIyAyLjMgUkVMRUFTRSBOT1RF UzogVGhpcyBpcyB0aGUgMi4yIHNlcmllcyB3aXRoIHNvbWUgZXh0cmEgc3R1ZmYsCXwKIyBpbmNs dWRpbmcgTUFDIGFkZHJlc3MgbWF0Y2hpbmcsIHN0YXRlZnVsIG1hdGNoaW5nLCBwb3J0IGZvcndh cmRpbmcsCXwKIyBwZXItcHJvdG8gYWNjZXB0IGJlaGF2aW9yLCBhbmQgc29tZSBvdGhlciBzdHVm ZiB0aGF0IEkgbWlnaHQgdGhpbmsJfAojIGFib3V0IGFkZGluZyBsYXRlci4JCQkJCQkJfAojIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS18CiMgQ09NTUVOVFMgZnJvbSBNb25Nb3RoYToJCQkJCQl8CiMJCQkJCQkJCQl8 CiMgUGxlYXNlLi4uUExFQVNFIGdpdmUgbWUgZmVlZGJhY2sgb24geW91ciBleHBlcmllbmNlcyB3 aXRoIHRoaXMgc2NyaXB0CXwKIyBJIHdvdWxkIHJlYWxseSBsaWtlIHRvIGtub3cgd2hhdCBldmVy eW9uZSB3YW50cywgd2hhdCB3b3JrcywgYW5kCXwKIyBhYm91dCB0aGUgaW5ldml0YWJsZSBidWdz IHByZXNlbnQgaW4gYW55dGhpbmcuCQkJfAojCQkJCQkJCQkJfAojIAkJRGlyZWN0IGFsbCBmZWVk YmFjayB0bzogYnZtb3BlbkB1c2EubmV0CQkJfAojIAkJCQkJCS0tTW9uTW90aGEJCXwKIwkJCQkJ CQkJCXwKIyBXaGVuIGUtbWFpbGluZyB3aXRoIHByb2JsZW1zLCBwbGVhc2UgaW5jbHVkZSBmaXJl d2FsbCBzY3JpcHQgdmVyc2lvbiwJfAojIGlwdGFibGVzIHZlcnNpb24sIGtlcm5lbCB2ZXJzaW9u LCBhbmQgR05VIEJBU0ggdmVyc2lvbi4gIElmIHlvdSB0aGluawl8CiMgeW91ciBwcm9ibGVtIG1p Z2h0IGJlIHJlbGF0ZWQgdG8ga2VybmVsIGNvbmZpZ3VyYXRpb24sIHBsZWFzZSBhdHRhY2gJfAoj IHRoZSAuY29uZmlnIGZpbGUgZm9yIHlvdXIga2VybmVsLgkJCQkJfAojCQkJCQkJLS1Nb25Nb3Ro YQkJfAojCQkJCQkJCQkJfAojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CiMgU1lTVEVNIFJFUVVJUkVNRU5UUzog WW91IG11c3QgaGF2ZSBlaXRoZXIgY29tcGlsZWQgdGhlIGFwcHJvcHJpYXRlCXwKIyBpcHRhYmxl cyBzdXBwb3J0IGludG8geW91ciAyLjQga2VybmVsIG9yIGhhdmUgbG9hZGVkIGFsbCB0aGUJCXwK IyBhcHBsaWNhYmxlIG1vZHVsZXMgQkVGT1JFIHlvdSBydW4gdGhpcyBzY3JpcHQuICBUaGlzIHNj cmlwdCBhc3N1bWVzCXwKIyB0aGF0IHlvdSBoYXZlIGV2ZXJ5dGhpbmcgY29tcGlsZWQgaW50byB5 b3VyIGtlcm5lbC4JCQl8CiMJCQkJCQkJCQl8CiMgCVlvdSB3aWxsIG5lZWQgKGF0IGxlYXN0KSB0 aGUgZm9sbG93aW5nIGtlcm5lbCBvcHRpb25zIHRvIHVzZQl8CiMgdGhpcyBmaXJld2FsbDogQ09O RklHX05FVEZJTFRFUiwgQ09ORklHX0lQX05GX0lQVEFCTEVTLAkJfAojIENPTkZJR19JUF9ORl9G SUxURVIsIENPTkZJR19JUF9ORl9NQVRDSF9TVEFURSBhbmQJCQl8CiMgQ09ORklHX0lQX05GX1RB UkdFVF9SRUpFQ1QuCQkJCQkJfAojIAlUbyB1c2UgdGhlIG1hc3F1ZXJhZGluZyB5b3Ugd2lsbCBh bHNvIG5lZWQgKGF0IGxlYXN0KToJCXwKIyBDT05GSUdfSVBfTkZfQ09OTlRSQUNLLCBDT05GSUdf SVBfTkZfTkFULCBDT05GSUdfSVBfTkZfTkFUX05FRURFRAl8CiMgYW5kIENPTkZJR19JUF9ORl9U QVJHRVRfTUFTUVVFUkFERS4JCQkJCXwKIyAJQWRkaXRpb25hbCBvcHRpb25zIG1heSBiZSBuZWVk ZWQgdG8gdXNlIG90aGVyIGZlYXR1cmVzLgkJfAojIAkJCQkJCQkJCXwKIyBZb3UgbmVlZCBpcHRh Ymxlcy4gIEdldCBpdCBhdCAiaHR0cDovL25ldGZpbHRlci5maWxld2F0Y2hlci5vcmciLgl8CiMJ CQkJCQkJCQl8CiMgVGhpcyBzY3JpcHQgd2FzIHdyaXR0ZW4gKGFuZCBwYXJ0aWFsbHkgdGVzdGVk KSB3aXRoIGlwdGFibGVzIDEuMgl8CiMgYW5kIGtlcm5lbCAyLjQuMC0yLjQuMiBpbiBtaW5kLgkJ CQkJfAojIAkJCQkJCQkJCXwKIyBBbHNvLCB0aGlzIGlzIGEgQkFTSCBzaGVsbCBzY3JpcHQuLi5h bnkgMi54IHZlcnNpb24gb2YgR05VIEJBU0gJfAojIHNob3VsZCB3b3JrLgkJCQkJCQkJfAojCQkJ CQkJCQkJfAojIFNFRCBzaG91bGQgbm8gbG9uZ2VyIGJlIHJlcXVpcmVkIHNpbmNlIGJ1aWx0aW5z IGFyZSBub3cgdXNlZC4JCXwKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAojCQkJCQkJCQkJfAojIFRoaXMgaXMg ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIG1vZGlmaWVkIEJTRCBsaXNjZW5zZToJCQl8CiMJCQkJCQkJ CQl8CiMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg d2l0aCBvciB3aXRob3V0IAl8CiMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIAl8CiMgYXJlIG1ldDoJCQkJCQkJCXwKIwkJ CQkJCQkJCXwKIyAgICAxLlJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp biB0aGUgYWJvdmUgY29weXJpZ2h0CXwKIyAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4JfAojICAgIDIuUmVkaXN0cmlidXRp b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQkJfAojICAgICAgY29w eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcJ fAojICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0 ZXJpYWxzIHByb3ZpZGVkCXwKIyAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4JCQkJCQl8CiMg ICAgMy5UaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9y IHByb21vdGUJfAojICAgICAgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0 aG91dCBzcGVjaWZpYyBwcmlvcgl8CiMgICAgICB3cml0dGVuIHBlcm1pc3Npb24uCQkJCQkJfAoj CQkJCQkJCQkJfAojIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFT IElTJycgQU5EIEFOWSBFWFBSRVNTIE9SCXwKIyBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAl8CiMgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCXwKIyBBUkUg RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFO WQl8CiMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP UiBDT05TRVFVRU5USUFMCXwKIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURQl8CiMgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwkJfAojIElOVEVSUlVQVElPTikg SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSCXwg CiMgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM SUdFTkNFIE9SCXwKIyBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOCXwKIyBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU WSBPRiBTVUNIIERBTUFHRQkJCQl8CiMJCQkJCQkJCQl8CiMgV2hpbGUgdGhpcyBtYXkgYmUgdXNl ZCBmcmVlbHkgZm9yIGNvbW1lcmNpYWwgdXNlLCBJIGRvIFJFUVVFU1QgdGhhdAl8CiMgYW55IGNv bW1lcmNpYWwgdXNlcnMgcGxlYXNlIHRlbGwgbWUgdmlhIGUtbWFpbCBhdCBidm1vcGVuQHVzYS5u ZXQJfAojIHRoYXQgdGhleSBhcmUgdXNpbmcgaXQsIHdoeSB0aGV5IGNob3NlIGl0LCBob3cgd2Vs bCBpdCB3b3JrcywgZXRjLgl8CiMJCQkJCQkJCQl8CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKIyBJTVBPUlRB TlQ6IFRoaXMgZmlyZXdhbGwgaXMgY3VycmVudGx5IGluIGJldGEhIEl0IG1heSBiZSB0b28JCXwK IyByZXN0cmljdGl2ZSBvciBpbnNlY3VyZS4JCQkJCQl8CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKIyBDSEFO R0VMT0c6IChTaW5jZSAyLjMuMC1wcmUxYSBvbmx5KQkJCQkJfAojCXZlcnNpb24gMi4zLjY6IEFk ZCBUVEwgbWFuZ2xpbmcJCQkJCXwKIwkJICAgICAgIEFkZGVkIHNvbWUgbW9yZSBFRk5ldCBzZXJ2 ZXJzIHRvIHRoZSBsaXN0CXwKIwkJICAgICAgIEZpeCBpbiB0aGUgRE1aT1VUIGNoYWluCQkJCXwK IwkJICAgICAgIEZpeCBGVFAgc3R1ZmYJCQkJCXwKIwl2ZXJzaW9uIDIuMy41OiBGaXhlcyB0byBt YWtlIHBvcnQgZm9yd2FyZGluZyB3b3JrIGFnYWluCQl8CiMJdmVyc2lvbiAyLjMuNDogVVNFX01B U1EgaGFzIGJlZW4gY2hhbmdlZCB0byBNQVNRX0xBTiBpbiBwb3J0IGZ3CXwKIwkJICAgICAgIEZp eCBzeW50YXggZXJyb3IgaW4gVENQIHBvcnQgZm9yd2FyZHMJCXwKIwkJICAgICAgIEdlbmVyYWwg Y2xlYW51cAkJCQkJfAojCQkgICAgICAgRml4ZXMgaW4gcG9ydCBmb3J3YXJkaW5nCQkJCXwKIwkJ ICAgICAgIEl0J3MgTFRSRUpFQ1QsIG5vdCBUTFJFSkVDVAkJCXwKIwkJICAgICAgIE1vcmUgVE9T IG1hbmdsaW5nCQkJCXwKIwl2ZXJzaW9uIDIuMy4zOiBGYXRhbCBzeW50YXggZXJyb3IgaW4gSVAg Zm9yd2FyZCBkZXRlY3QgZml4CXwKIwkJICAgICAgIERvbid0IGJhaWwgb24gbm8gSVAgZm9yd2Fy ZCBmb3Igbm8gTEFOCQl8CiMJdmVyc2lvbiAyLjMuMy1wcmUxOiBSZWplY3Qgd2l0aCB0Y3AtcmVz ZXQgZm9yIFRDUCBvcHRpb24JfAojCQkJICAgIFJlbW92ZWQgdGhlIGh1Z2UgbGlzdCBvZiBjZW5z b3JzaGlwCQl8CiMJCQkgICAgTW92ZWQgdGhlIHBvcnQgZm9yd2FyZHMgdG8gc3RhYmxlIG9wdGlv bnMJfAojCQkJICAgIE1vdmVkIHRoZSBUT1MgbWFuZ2xpbmcgdG8gc3RhYmxlIG9wdGlvbnMJfAoj CQkJICAgIENoZWNrIGJlZm9yZSBlbmFibGluZyBJUCBGb3J3YXJkaW5nIGFuZAl8CiMJCQkJSVAg U3luQ29va2llcwkJCQl8CiMJCQkgICAgRG9uJ3QgcnVuIGNlbnNvcnNoaXAgbG9vcCBpZiBubyBy dWxlcwl8CiMJCQkgICAgUmVxdWVzdCBsb3cgbGF0ZW5jeSBUT1Mgb24gVURQIHBhY2tldHMgZm9y CXwKIwkJCQlnYW1lcyBvbiBwb3J0cyA0MDAwLTcwMDAgKERpYWJsbyBJSSkJfAojCQkJICAgIEZp eCBiYWQgc3ludGF4IGluIHRoZSBwb3J0IGZvcndhcmRpbmcgbG9vcHMJfAojCQkJICAgIFJldmVy c2VkIERNWklOIGFuZCBETVpPVVQgZml4ZWQJCXwKIwkJCSAgICBWYXJpb3VzIHN5bnRheCBmaXhl cwkJCXwKIwkJCSAgICBTdGF0ZWZ1bCBpbnNwZWN0aW9uIG9uIGZvcndhcmQgY2hhaW4JfAojCQkJ ICAgIE90aGVyIHN0YXRlZnVsIG1hdGNoaW5nIGNoYW5nZXMJCXwKIwl2ZXJzaW9uIDIuMy4yOiBG aXhlZCBiYWQgc3ludGF4IGluIERNWl9JRkFDRSBsb29wCQl8CiMJdmVyc2lvbiAyLjMuMi1wcmUy OiBQdXQgYSByZWFsIGxpc2NlbnNlIG9uIGl0IChCU0QgbGlzY2Vuc2UpCXwKIwkJCSAgICBDaGFu Z2VkIGZvcm1hdCBvZiBBTExPV19IT1NUV0lTRSBhbmQJfAojCQkJCURFTllfSE9TVFdJU0UgdG8g YmUgbGVzcyBjb25mdXNpbmcJfAojCQkJCSh0aGUgIjoiIHdhcyBjaGFuZ2VkIHRvICI+IikJCXwK IwkJCSAgICBBZGRlZCBMT0dfRkxPT0Qgb3B0aW9uIHRvIHR3ZWFrIGxvZyBsaW1pdAl8CiMJCQkg ICAgQWRkZWQgU1lOX0ZMT09EIG9wdGlvbiB0byB0d2VhayBTWU4gbGltaXQJfAojCQkJICAgIEFk ZGVkIFBJTkdfRkxPT0Qgb3B0aW9uIHRvIHR3ZWFrIFBJTkcgbGltaXQJfAojCXZlcnNpb24gMi4z LjItcHJlMTogU3RhdGVmdWwgbWF0Y2hpbmcgb24gYWN0aXZlIEZUUCBhbmQgU1NICXwKIwkJCQly dWxlcyAodGhhbmtzIHRvIExlbiBQYWRpbGxhKQkJfAojCQkJICAgIEZpeGVkIGEgbWlub3IgYnVn IGluIGNoYWluIGNyZWF0aW9uIG9yZGVyCXwKIwkJCQkodGhhbmtzIHRvIFBldGVyIExpbmRtYW4p CQl8CiMJCQkgICAgVE9TIE9wdGltaXphdGlvbnMgKHRoYW5rcyB0byB2ZXNhIGFsYXRhbG8pCXwK IwkJCSAgICBCZWdpbiBETVogU3VwcG9ydAkJCQl8CiMJCQkgICAgUHJvb2ZyZWFkIGNvbW1lbnRz IGFuZCBjb3JyZWN0CQl8CiMJCQkgICAgVXNlIEJBU0ggYnVpbHRpbnMgaW5zdGVhZCBvZiBzZWQg CQl8CiMJCQkJKHRoYW5rcyB0byBDcmFpZyBMdWRpbmd0b24pCQl8CiMJCQkgICAgRml4ZWQgIlVT RV9TTkFUIiBidWcgaW4gcG9ydCBmb3J3YXJkaW5nCXwKIwkJCQkoaGFzIGJlZW4gY2hhbmdlZCB0 byAiU05BVF9MQU4iKQl8CiMJCQkJKHRoYW5rcyB0byBGculk6XJpYyBNYXJjaGFuZCkJCXwKIwkJ CSAgICBUdW5lZCBkb3duIGRlZmF1bHQgVENQIGFsbG93cyAocmVtb3ZlIFBPUDMpCXwKIwl2ZXJz aW9uIDIuMy4xOiBPcHRpb24gZm9yIDE6MSBvciBzdWJuZXQ6MSBzdGF0aWMgTkFUCQl8CiMJCSAg ICAgICBJbnRlcm5ldCBjZW5zb3JzaGlwIG9wdGlvbnMJCQl8CiMJdmVyc2lvbiAyLjMuMS1wcmUy OiBBZGRlZCBvcHRpb24gdG8gZGVueSBzcGVjaWZpYyBwb3J0cyBmcm9tCXwKIwkJCQlzcGVjaWZp YyBob3N0cwkJCQl8CiMJCQkgICAgQWRkZWQgbGltaXRpbmcgdG8gbG9nZ2luZyBjaGFpbnMgdG8g cHJldmVudAl8CiMJCQkJbG9nIERvU2luZwkJCQl8CiMJCQkgICAgU3BpZmZlZCB1cCBjb21tZW50 cwkJCQl8CiMJCQkgICAgQ2hhbmdlZCB0aGUgIkFVVEhfQUxMT1ciIGFuZCAiRE5TIiBvcHRpb25z CXwKIwkJCQl0byBiZSBtb3JlIGdlbmVyaWMgYW5kIGZsZXhpYmxlCQl8CiMJdmVyc2lvbiAyLjMu MS1wcmUxOiBVcGRhdGVkIGNvbW1lbnRzIGZvciBuZXcga2VybmVsIHZlcnNpb24JfAojCQkJICAg IFJlbW92ZWQgZG91YmxlIGRyb3Agc2V0dGluZwkJCXwKIwkJCSAgICBVcGRhdGVkIGZvciBpcHRh Ymxlcy0xLjIJCQl8CiMJCQkgICAgQmVnYW4gYSBrZXJuZWwgb3B0aW9uIGxpc3QJCQl8CiMJdmVy c2lvbiAyLjMuMDogTm8gY2hhbmdlcyBmcm9tIHByZTFnCQkJCXwKIwl2ZXJzaW9uIDIuMy4wLXBy ZTFnOiBUdW5lZCBkb3duIGRlZmF1bHQgVENQIGFsbG93cwkJfAojCQkJICAgICBSZXN0cnVjdHVy ZSB0byBTU0ggbG9vcAkJCXwKIwkJCSAgICAgU3RhdHVzIFJlcG9ydGluZyBGaXhlcyAobmV3bGlu ZXMsIGV0Yy4pCXwKIwkJCSAgICAgRml4IGxvZyBwcmVmaXggbGVuZ3RoIG9uIGFjY2VwdCBsb29w cwl8CiMJdmVyc2lvbiAyLjMuMC1wcmUxZjogTW92ZWQgdGhlIElDTVAgZWNoby1yZXF1ZXN0IGxp bWl0IHRvIHdoZXJlCXwKIwkJCQlpdCBzaG91bGQgaGF2ZSBiZWVuCQkJfAojCQkJICAgICBBbGxv d3MgdGhlIHJlc3Qgb2YgdGhlIElDTVAgbGlrZSBpdCBzaG91bGQJfAojCQkJICAgICBSZW1vdmUg dGhlIGludGVyZmFjZSBtYXRjaGluZyBmcm9tIElDTVAJfAojCQkJCWVjaG8tcmVxdWVzdCAobm90 IG5lZWRlZCkJCXwKIwl2ZXJzaW9uIDIuMy4wLXByZTFlOiBGaXhlZCBhbiBpc3N1ZSBpbiB0aGUg aW52YWxpZCBtYXRjaGluZwl8CiMJdmVyc2lvbiAyLjMuMC1wcmUxZDogU3BpZmZlZCB1cCBjb21t ZW50cwkJCXwKIwkJCSAgICAgUG9ydCBGb3J3YXJkaW5nCQkJCXwKIwkJCSAgICAgTW92ZWQgdGhl IGRlbnkgc2V0dGluZyB0byBub3JtYWwgb3B0aW9ucwl8CiMJdmVyc2lvbiAyLjMuMC1wcmUxYzog TWlub3IgZml4ZXMgdGhhdCBkb24ndCAoY3VycmVudGx5KSBhZmZlY3QJfAojCQkJCWZ1bmN0aW9u YWxpdHkJCQkJfAojCXZlcnNpb24gMi4zLjAtcHJlMWI6IFNlY3VyaXR5IGZpeCBkb2N1bWVudGVk IGluIDIuMS4xMwkJfAojCQkJICAgICBTbGlnaHQgbG9naWMgY2hhbmdlIGluIFRDUF9BTExPVyBs b29wCXwKIwkJCSAgICAgRG9uJ3QgcHJpbnQgYWxsb3cgbWVzc2FnZXMgaWYgbm90aGlnbiBpcwl8 CiMJCQkJYWxsb3dlZCBieSB0aGF0IGxvb3AJCQl8CiMJCQkgICAgIENoYW5nZWQgSVBUYWJsZXMg ZG93bmxvYWQgVVJMCQl8CiMgICAgICAgdmVyc2lvbiAyLjMuMC1wcmUxYTogSW5pdGlhbCBicmFu Y2ggZnJvbSAyLjEuMTIgICAgICAgICAgICAgICAgIHwKIyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBBZGQgc3R1ZmYgaW4gcmVsZWFzZSBub3RlcyBleGNlcHQgcG9ydCBmdyAgfAojIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS18CiMgVVNFIEFUIFlPVVIgT1dOIFJJU0shIFRISVMgSVMgV0lUSE9VVCBBTlkgV0FS UkFOVFkgU1RBVEVEIE9SIElNUExJRUQhCXwKIyBUaGF0IG1lYW5zIE5PTkUgd2hhdHNvZXZlciwg bm90IGV2ZW4gZml0ZnVsbG5lc3MgZm9yIHB1cnBvc2UhCQl8CiMgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKIyBZ b3UgTkVFRCB0byBzZXQgdGhpcyEJCQkJCQkJfAojIENvbmZpZ3VyYXRpb24gZm9sbG93czoJCQkJ CQl8CiMJCQkJCQkJCQl8CiMgTm90ZXMgYWJvdXQgY29uZmlndXJhdGlvbjogCQkJCQkJfAojIFNv bWUgdGhpbmdzIHRha2UgbW9yZSB0aGFuIG9uZSBvcHRpb247IHNlcGFyYXRlIHdpdGggc3BhY2Vz LgkJfAojIFlvdSBwcm9iYWJseSBkb24ndCB3YW50IGFsbCB0aGUgcG9ydHMgSSBoYXZlIHVuZGVy IGhlcmUgb3BlbiwgcG9ydHNjYW58CiMJeW91cnNlbGYgdG8gZmluZCB3aGF0IHlvdSB3YW50IG9w ZW4uCQkJCXwKIyBGb3IgU1NIIHlvdSBuZWVkIHBvcnQgMjIgaW4gVENQX0FMTE9XLCBhbmQgc2V0 IHRoZSBhcHByb3ByaWF0ZSBTU0gJfAojCXN5c3RlbShzKSB0byAiVFJVRSIuCQkJCQkJfAojIElm IHlvdSB3YW50IHRvIHVzZWQgaG9zdC1iYXNlZCBpZGVudGQgYWxsb3dpbmcsIGRvIE5PVCBwdXQg MTEzIGluCXwKIwlUQ1BfQUxMT1cgYW5kIERPIHNldCBBTExPV19UQ1BfSE9TVFdJU0UgKHVzaW5n IDExMyBhcyB0aGUgcG9ydCkufAojCU9mIGNvdXJzZSwgeW91IGNhbiBhbHNvIHB1dCAxMTMgaW4g VENQX0FMTE9XIHRvIGFsbG93IGFueW9uZS4JfAojIFRoZSBzYW1lIGFwcGxpZXMgdG8gRE5TIHpv bmUgdHJhbnNmZXJzIChvbmx5IHVzZSBwb3J0IDUzIGFuZCBVRFApLgl8CiMgTUFDX01BU1EgaXMg T05MWSB1c2VkIHRvIHRoZSBwdXJwb3NlcyBvZiBtYXNxdWVyYWRpbmcgYW5kIGl0IHdpbGwJfAoj CW92ZXJyaWRlIHRoZSBNQVNRX0xBTiBzZXR0aW5nIGZvciBtYXNxdWVyYWRpbmcuCUhvd2V2ZXIs IHlvdQl8CiMJbXVzdCBzdGlsbCBkZWZpbmUgTUFTUV9MQU4gcHJvcGVybHkuCQkJCXwKIyBJTlRF Uk5BTF9MQU4gbXVzdCBhbHdheXMgYmUgcHJvcGVybHkgZGVmaW5lZCBmb3Igb3RoZXIgdGhpbmdz IQl8CiMgWW91IGNhbiB1c2UgaG9zdG5hbWVzIGFueXdoZXJlLCBidXQgeW91J2xsIG5lZWQgdG8g aGF2ZSBhY2Nlc3MgdG8gdGhlCXwgCiMgRE5TIHNlcnZlciB3aGVuIHRoZSBzY3JpcHQgcnVucyBh bmQgeW91IG1pZ2h0IG5vdCBnZXQgdGhlIGV4cGVjdGVkCXwKIwlzaW5jZSB0aGUgRE5TIGxvb2t1 cCBpcyBvbmx5IGRvbmUgb25jZS4JCQkJfAojIFlvdSBjYW4gbWl4IGFuZCBtYXRjaCBob3N0cyB3 aXRoIHB1YmxpYyBJUHMgYW5kIG1hc3F1ZXJhZGVkIGhvc3RzIGluCXwKIyAJSU5URVJOQUxfTEFO IGFzIGxvbmcgYXMgeW91IGRlZmluZSB0aGUgb25lcyB0byB1c2UgTkFUIGxhdGVyLgl8CiMgRE1a IHN1cHBvcnQgY2FuIGN1cnJlbnRseSBiZSBjb25zaWRlcmVkIChhdCBiZXN0KSBQUkVBTFBIQS4J CXwKIyBDb25mdXNlZCB5ZXQ/ICBQbGVhc2Ugc3VnZ2VzdCBob3cgSSBjYW4gbWFrZSB0aGlzIGNs ZWFyZXIhCQl8CgojIE1haW4gY29uZmlndXJhdGlvbiwgbW9kaWZ5IHRvIHN1aXQgeW91ciBzZXR1 cApJUFRBQkxFUz0iL3NiaW4vaXB0YWJsZXMiCQkjIHNldCB0byB5b3VyIGlwdGFibGVzIGxvY2F0 aW9uLCBtdXN0IGJlIHNldApUQ1BfQUxMT1c9IjI1IDUzIDIxIDIyIDgwIDgwODAiCQkJCSMgVENQ IHBvcnRzIHRvIGFsbG93ClVEUF9BTExPVz0iODA4MCIJCQkJIyBVRFAgcG9ydHMgdG8gYWxsb3cK SU5FVF9JRkFDRT0iZXRoMSIJCQkJIyB0aGUgaW50ZXJmYWNlIHlvdXIgaW50ZXJuZXQncyBvbiAo b25lIG9ubHkpLCBtdXN0IGJlIHNldApMQU5fSUZBQ0U9ImV0aDAiCQkJCSMgdGhlIGludGVyZmFj ZSB5b3VyIExBTidzIG9uIChvbmUgb25seSkKVVNFX1NTSDE9IkZBTFNFIgkJCQkJIyBzZXQgdG8g VFJVRSBpZiB5b3UgdXNlICJyZWFsIiBTU0gxIChhbnl0aGluZyBlbHNlIGlzIGludGVycHJldGVk IGFzIEZBTFNFKQpVU0VfT1BFTlNTSD0iRkFMU0UiCQkJCSMgc2V0IHRvIFRSVUUgaWYgeW91IHVz ZSBPcGVuU1NIIChhbnl0aGluZyBlbHNlIGlzIGludGVycHJldGVkIGFzIEZBTFNFKQpJTlRFUk5B TF9MQU49IjE5Mi4xNjguMTAuMC8yNCAxMjcuMC4wLjEiCSMgVGhlIGludGVybmFsIExBTiAoSW5j bHVkaW5nIERNWnMgYnV0IG5vdCBjZW5zb3JlZCBob3N0cykKTUFTUV9MQU49IjE5Mi4xNjguMTAu MC8yNCIJIyB0aGUgaW50ZXJuYWwgbmV0d29yayhzKSB0byBiZSBtYXNxdWVyYWRlZCAodGhpcyBp cyBvdmVycmlkZGVuIGJ5IE1BQ19NQVNRKQpEUk9QPSJUUkVKRUNUIgkJCQkJIyBXaGF0IHRvIGRv IHdpdGggcGFja2V0cyB3ZSBkb24ndCB3YW50OiBEUk9QLCBSRUpFQ1QsIFRSRUpFQ1QgKFJlamVj dCB3aXRoIHRjcC1yZXNldCBmb3IgVENQKSwgTERST1AgKGxvZyBhbmQgZHJvcCksIExSRUpFQ1Qg KGxvZyBhbmQgcmVqZWN0KSwgTFRSRUpFQ1QgKGxvZyBhbmQgcmVqZWN0IHdpdGggdGNwLXJlc2V0 KQpERU5ZX0FMTD0iIgkJCQkJIyBJbnRlcm5ldCBob3N0cyB0byBleHBsaWNpdGx5IGRlbnkgZnJv bSBhY2Nlc3NpbmcgeW91ciBzeXN0ZW0gYXQgYWxsCkRFTllfSE9TVFdJU0VfVENQPSIiCQkJCSMg U3BlY2lmaWMgaG9zdHMgdG8gZGVueSBhY2Nlc3MgdG8gc3BlY2lmaWMgVENQIHBvcnRzOyBmb3Jt YXQgaXMgIklQPlBPUlQiCkRFTllfSE9TVFdJU0VfVURQPSIiCQkJCSMgU3BlY2lmaWMgaG9zdHMg dG8gZGVueSBhY2Nlc3MgdG8gc3BlY2lmaWMgVURQIHBvcnRzOyBmb3JtYXQgaXMgIklQPlBPUlQi CiNBTExPV19IT1NUV0lTRV9UQ1A9IjIwNy42OS4yMDAuMTMyPjExMyAyMTYuMzIuMTMyLjI1MD4x MTMgMjA2LjEzMi4yNy4xNTY+MTEzIDIwOS44MS4yMzIuNjY+MTEzIDIwNy40NS42OS42OT4xMTMg MjE2LjgwLjgzLjE4NT4xMTMgMjEyLjE1OC4xMjMuNjY+MTEzIDIwOS4yMDguMTM5LjEwMD4xMTMg MTcwLjE0MC40LjY+MTEzIDE5Mi4xNjAuMTI3Ljk3PjExMyA2NC4yMTQuMjguOTI+MTEzIgoJCQkJ CQkjIFNwZWNpZmljIGhvc3RzIGFsbG93ZWQgYWNjZXNzIHRvIHNwZWNpZmljIFRDUCBwb3J0czsg Zm9ybWF0IGlzICJJUD5QT1JUIgpBTExPV19IT1NUV0lTRV9VRFA9IiIJCQkJIyBTcGVjaWZpYyBo b3N0cyBhbGxvd2VkIGFjY2VzcyB0byBzcGVjaWZpYyBVRFAgcG9ydHM7IGZvcm1hdCBpcyAiSVA+ UE9SVCIKQUxMT1dfT1VUX1RDUD0iIgkJCQkjIEludGVybmFsIGhvc3RzIGFsbG93ZWQgdG8gYmUg Zm9yd2FyZGVkIG91dCBvbiBUQ1AgKGludGVybmV0IGNlbnNvcnNoaXAhKSAoZG8gbm90IHB1dCB0 aGlzL3RoZXNlIGhvc3QvcyBpbiBJTlRFUk5BTF9MQU4sIGJ1dCBkbyBkZWZpbmUgdGhlaXIgbWV0 aG9kIG9mIGFjY2VzcyBbc25hdCwgbWFzcV0gaWYgbm90IGEgcHVibGljIGlwKQpUQ1BfRlc9IiIJ CQkJCSMgVENQIHBvcnQgZm9yd2FyZHMsIGZvcm0gaXMgIlNQT1JUOkRQT1JUPklQIgpVRFBfRlc9 IiIJCQkJCSMgVURQIHBvcnQgZm9yd2FyZHMsIGZvcm0gaXMgIlNQT1JUOkRQT1JUPklQIgpNQU5H TEVfVE9TX09QVElNSVpFPSJUUlVFIgkJCSMgVE9TIE9wdGltaXphdGlvbnMgb24gb3Igb2ZmIChU UlVFL0ZBTFNFIHRvZ2dsZSkKCgojIyMjIyMjIyMjIyMjIyBSRU1PVkUgVEhJUyBPUiBJVCBXT04n VCBSVU4gSE9NRVogIyMjIyMjIyMjIyMjIyMjCiNlY2hvICJZb3UgbmVlZCB0byBlZGl0IHRoZSBj b25maWcgc2VjdGlvbiEiICMjIyMjIyMjIyMjIyMjIyMjIyMjCiNleGl0IDk5ICMjIyMjIyBSRU1P VkUgVEhJUyBPUiBJVCBXT04nVCBSVU4gSE9NRVogIyMjIyMjIyMjIyMjIyMjCiMjIyMjIyMjIyMj IyMjIFJFTU9WRSBUSElTIE9SIElUIFdPTidUIFJVTiBIT01FWiAjIyMjIyMjIyMjIyMjIyMgCgoK CiMgT25seSBtb2RpZnkgdGhlc2UgaWYgeW91IGhhdmUgYSBnZW51aW5lIG5lZWQsIHRoZSBkZWZh dWx0cyBzaG91bGQgYmUgZmluZSBmb3IgYSBwZXJzb25hbCBmaXJld2FsbApMT0dfRkxPT0Q9IjIv cyIJCQkJCSMgTGltaXQgb24gbG9nZ2luZyAoZm9yIExUUkVKRUNULCBMUkVKRUNUIGFuZCBMRFJP UCwgdGhlIHBhY2tldCB3aWxsIGFsd2F5cyB0YWtlIHRoZSBwb2xpY3kgcmVnYXJkbGVzcyBvZiBs b2dnaW5nKQpTWU5fRkxPT0Q9IjQvcyIJCQkJCSMgR0xPQkFMIGxpbWl0IG9uIFNZTiBwYWNrZXRz ICh3aWxsIHByb2JhYmx5IG5lZWQgaW5jcmVhc2VkIGZvciBhIHNlcnZlciBzaW5jZSB0aGlzIG1h dGNoZXMgQUxMIFNZTiBwYWNrZXRzKQpQSU5HX0ZMT09EPSIxL3MiCQkJCSMgTGltaXQgb24gaWNt cC1lY2hvIHJlcXVlc3RzIHRvIHJlcGx5IHRvCgojIEJlbG93IGhlcmUgaXMgZXhwZXJpbWVudGFs IChJIGNhbid0IHJlYWxseSB0ZXN0IHRoZXNlIHNvIHBsZWFzZSByZXBvcnQgeW91ciBzdWNjZXNz ZXMvZmFpbHVyZXMpCk1BQ19NQVNRPSIiCQkJCQkjIE1BQyBhZGRyZXNzZXMgcGVybWl0dGVkIHRv IHVzZSBtYXNxdWVyYWRpbmcsIGxlYXZlIGJsYW5rIHRvIG5vdCB1c2UKTUFDX1NOQVQ9IiIJCQkJ CSMgTUFDIGFkZHJlc3NlcyBwZXJtaXR0ZWQgdG8gdXNlIHN0YXRpYyBOQVQsIGxlYXZlIGJsYW5r IHRvIG5vdCB1c2UgKGZvcm1hdCBpcyA8TUFDIEFkZHJlc3M+OjxleHRlcm5hbCBpcD4pClNOQVRf TEFOPSIiCQkJCQkjIEludGVybmFsIG5ldHdvcmtzL2hvc3RzIHRvIHVzZSBzdGF0aWMgTkFUIChm b3JtYXQgaXMgPGludGVybmFsIGlwIG9yIG5ldHdvcms+OjxleHRlcm5hbCBpcD4pICh0aGlzIGlz IG92ZXJyaWRkZW4gYnkgTUFDX1NOQVQpClRUTF9TQUZFPSIiCQkJCQkjIEhvdyBtYW55IGhvcHMg cGFja2V0cyBuZWVkIHRvIG1ha2Ugb25jZSB0aGV5IGdldCBvbiB5b3VyIExBTiAobnVsbCBkaXNh YmxlcyB0aGUgbWFuZ2xpbmcpIChyZXF1aXJlcyBwYXRjaCBmcm9tIHBhdGNoLW8tbWF0aWMpCgoj IE9ubHkgdG91Y2ggdGhlc2UgaWYgeW91J3JlIGRhcmluZyAoUFJFQUxQSEEgc3R1ZmYpCkRNWl9J RkFDRT0iIgkJCQkJIyBJbnRlcmZhY2UgeW91ciBETVogaXMgb24gKGxlYXZlIGJsYW5rIGlmIHlv dSBkb24ndCBoYXZlIG9uZSkgTVVTVCBERUZJTkUgTEFOX0lGQUNFIElGIFlPVSBVU0UgVEhJUyEK CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLXwKIyBEbyBub3QgbW9kaWZ5IGNvbmZpZ3VyYXRpb24gYmVsb3cgaGVy ZQkJCQl8CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKRklMVEVSX0NIQUlOUz0iSU5FVElOIElORVRPVVQgRE1a SU4gRE1aT1VUIFRDUEFDQ0VQVCBVRFBBQ0NFUFQgTERST1AgTFJFSkVDVCBUUkVKRUNUIExUUkVK RUNUIgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS18CiMgWW91IHNob3VsZG4ndCBuZWVkIHRvIG1vZGlmeSBhbnl0 aGluZyBiZWxvdyBoZXJlCQkJfAojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CgojIExldCdzIGxvYWQgaXQhCmVj aG8gIkxvYWRpbmcgaXB0YWJsZXMgZmlyZXdhbGw6IgoKIyBDb25maWd1cmF0aW9uIFNhbml0eSBD aGVja3MKZWNobyAtbiAiQ2hlY2tpbmcgY29uZmlndXJhdGlvbi4uLiIKaWYgISBbIC14ICRJUFRB QkxFUyBdIDsgdGhlbgoJZWNobwoJZWNobyAiRVJST1IgSU4gQ09ORklHVVJBVElPTjogSVBUQUJM RVMgZG9lc24ndCBleGlzdCBvciBpc24ndCBleGVjdXRhYmxlISIKCWV4aXQgMQpmaQppZiBbICIk RE1aX0lGQUNFIiA9ICIkTEFOX0lGQUNFIiBdIDsgdGhlbgoJZWNobwoJZWNobyAiRVJST1IgSU4g Q09ORklHVVJBVElPTjogRE1aX0lGQUNFIGFuZCBMQU5fSUZBQ0UgY2FuJ3QgYmUgdGhlIHNhbWUh IgoJZXhpdCAxCmZpCmVjaG8gInBhc3NlZCIKCiMgVHVybiBvbiBJUCBmb3J3YXJkaW5nCmVjaG8g LW4gIkNoZWNraW5nIElQIEZvcndhcmRpbmcuLi4iCmlmIFsgLWUgL3Byb2Mvc3lzL25ldC9pcHY0 L2lwX2ZvcndhcmQgXSA7IHRoZW4KCWVjaG8gMSA+IC9wcm9jL3N5cy9uZXQvaXB2NC9pcF9mb3J3 YXJkCgllY2hvICJlbmFibGVkLiIKZWxzZQoJZWNobyAic3VwcG9ydCBub3QgZm91bmQhIFRoaXMg d2lsbCBwcm9iYWJseSBjYXVzZSBwcm9ibGVtcyEiCmZpCgojIEVuYWJsZSBUQ1AgU3luY29va2ll cwplY2hvIC1uICJDaGVja2luZyBJUCBTeW5Db29raWVzLi4uIgppZiBbIC1lIC9wcm9jL3N5cy9u ZXQvaXB2NC90Y3Bfc3luY29va2llcyBdIDsgdGhlbgoJZWNobyAxID4gL3Byb2Mvc3lzL25ldC9p cHY0L3RjcF9zeW5jb29raWVzCgllY2hvICJlbmFibGVkLiIKZWxzZQoJZWNobyAic3VwcG9ydCBu b3QgZm91bmQsIGJ1dCB0aGF0J3MgT0suIgpmaQoKIyBGbHVzaCBldmVyeXRoaW5nCiMgSWYgeW91 IG5lZWQgY29tcGF0YWJpbGl0eSwgeW91IGNhbiBjb21tZW50IHNvbWUgb3IgYWxsIG9mIHRoZXNl IG91dCwKIyBidXQgcmVtZW1iZXIsIGlmIHlvdSByZS1ydW4gaXQsIGl0J2xsIGp1c3QgYWRkIHRo ZSBuZXcgcnVsZXMgaW4sIGl0CiMgd29uJ3QgcmVtb3ZlIHRoZSBvbGQgb25lcyBmb3IgeW91IHRo ZW4sIHRoaXMgaXMgaG93IGl0IHJlbW92ZXMgdGhlbS4KZWNobyAtbiAiRmx1c2g6ICIKJHtJUFRB QkxFU30gLXQgZmlsdGVyIC1GIElOUFVUCmVjaG8gLW4gIklOUFVUICIKJHtJUFRBQkxFU30gLXQg ZmlsdGVyIC1GIE9VVFBVVAplY2hvIC1uICJPVVRQVVQxICIKJHtJUFRBQkxFU30gLXQgZmlsdGVy IC1GIEZPUldBUkQKZWNobyAtbiAiRk9SV0FSRCAiCiR7SVBUQUJMRVN9IC10IG5hdCAtRiBQUkVS T1VUSU5HCmVjaG8gLW4gIlBSRVJPVVRJTkcxICIKJHtJUFRBQkxFU30gLXQgbmF0IC1GIE9VVFBV VAplY2hvIC1uICJPVVRQVVQyICIKJHtJUFRBQkxFU30gLXQgbmF0IC1GIFBPU1RST1VUSU5HCmVj aG8gLW4gIlBPU1RST1VUSU5HICIKJHtJUFRBQkxFU30gLXQgbWFuZ2xlIC1GIFBSRVJPVVRJTkcK ZWNobyAtbiAiUFJFUk9VVElORzIgIgoke0lQVEFCTEVTfSAtdCBtYW5nbGUgLUYgT1VUUFVUCmVj aG8gLW4gIk9VVFBVVDMiCmVjaG8KCiMgQ3JlYXRlIG5ldyBjaGFpbnMKIyBPdXRwdXQgdG8gL2Rl di9udWxsIGluIGNhc2UgdGhleSBkb24ndCBleGlzdCBmcm9tIGEgcHJldmlvdXMgaW52b2NhdGlv bgplY2hvIC1uICJDcmVhdGluZyBjaGFpbnM6ICIKZm9yIGNoYWluIGluICR7RklMVEVSX0NIQUlO U30gOyBkbwoJJHtJUFRBQkxFU30gLXQgZmlsdGVyIC1GICR7Y2hhaW59ID4gL2Rldi9udWxsIDI+ JjEKCSR7SVBUQUJMRVN9IC10IGZpbHRlciAtWCAke2NoYWlufSA+IC9kZXYvbnVsbCAyPiYxCgkk e0lQVEFCTEVTfSAtdCBmaWx0ZXIgLU4gJHtjaGFpbn0KCWVjaG8gLW4gIiR7Y2hhaW59ICIKZG9u ZQplY2hvCgojIERlZmF1bHQgUG9saWNpZXMKIyBJTlBVVCBpcyBzdGlsbCBBQ0NFUFQsIHRoZSBJ TkVUSU4gY2hhaW4gKGRlZmluZWQgYWJvdmUgYW5kIGp1bXBlZCB0byBsYXRlcikKIyBpcyBnaXZl biBhIHBvbGljeSBvZiBEUk9QIGF0IHRoZSBlbmQKIyBQb2xpY3kgY2FuJ3QgYmUgcmVqZWN0IGJl Y3Vhc2Ugb2Yga2VybmVsIGxpbWl0YXRpb25zCmVjaG8gLW4gIkRlZmF1bHQgUG9saWNpZXM6ICIK JHtJUFRBQkxFU30gLXQgZmlsdGVyIC1QIElOUFVUIEFDQ0VQVAplY2hvIC1uICJJTlBVVDpBQ0NF UFQgIgoke0lQVEFCTEVTfSAtdCBmaWx0ZXIgLVAgT1VUUFVUIEFDQ0VQVAplY2hvIC1uICJPVVRQ VVQ6QUNDRVBUICIKJHtJUFRBQkxFU30gLXQgZmlsdGVyIC1QIEZPUldBUkQgRFJPUAplY2hvIC1u ICJGT1JXQVJEOkRST1AgIgplY2hvCgojIExvY2FsIHRyYWZmaWMgdG8gaW50ZXJuZXQgb3IgY3Jv c3Npbmcgc3VibmV0cyAKIyBUaGlzIHNob3VsZCBjb3ZlciB3aGF0IHdlIG5lZWQgaWYgd2UgZG9u J3QgdXNlIG1hc3F1ZXJhZGluZwojIFVuZm9ydHVuYXRlbHksIE1BQyBhZGRyZXNzIG1hdGNoaW5n IGlzbid0IGJpZGlyZWN0aW9uYWwgKGZvcgojICAgb2J2aW91cyByZWFzb25zKSwgc28gSVAgYmFz ZWQgbWF0Y2hpbmcgaXMgZG9uZSBoZXJlCmVjaG8gLW4gIkxvY2FsIFRyYWZmaWMgUnVsZXM6ICIK Zm9yIHN1Ym5ldCBpbiAke0lOVEVSTkFMX0xBTn0gOyBkbwoJJHtJUFRBQkxFU30gLXQgZmlsdGVy IC1BIEZPUldBUkQgLXMgJHtzdWJuZXR9IC1qIEFDQ0VQVAoJJHtJUFRBQkxFU30gLXQgZmlsdGVy IC1BIEZPUldBUkQgLWQgJHtzdWJuZXR9IC1tIHN0YXRlIC0tc3RhdGUgRVNUQUJMSVNIRUQsUkVM QVRFRCAtaiBBQ0NFUFQKCWVjaG8gLW4gIiR7c3VibmV0fTpBQ0NFUFQgIgpkb25lCmVjaG8KCmlm IFsgIiRBTExPV19PVVRfVENQIiAhPSAiIiBdIDsgdGhlbgoJZWNobyAtbiAiSW50ZXJuZXQgY2Vu c29yc2hpcCBUQ1AgYWxsb3dzOiAiCglmb3IgcnVsZSBpbiAke0FMTE9XX09VVF9UQ1B9IDsgZG8K CQllY2hvICIkcnVsZSIgfCB7CgkJCUlGUz0nOicgcmVhZCBpbnRpcCBkZXN0aXAKCQkgICAgICAg ICR7SVBUQUJMRVN9IC10IGZpbHRlciAtQSBGT1JXQVJEIC1zICR7aW50aXB9IC1kICR7ZGVzdGlw fSAtbyAke0lORVRfSUZBQ0V9IC1qIEFDQ0VQVAoJCQkke0lQVEFCTEVTfSAtdCBmaWx0ZXIgLUEg Rk9SV0FSRCAtZCAke2ludGlwfSAtcyAke2Rlc3RpcH0gLWkgJHtJTkVUX0lGQUNFfSAtaiBBQ0NF UFQKCQkJZWNobyAtbiAiJHtpbnRpcH06JHtkZXN0aXB9ICIKCQl9Cglkb25lCgllY2hvCmZpCgoj IFNldCB1cCBiYXNpYyBOQVQgaWYgdGhlIHVzZXIgd2FudHMgaXQKaWYgWyAiJE1BU1FfTEFOIiAh PSAiIiBdIDsgdGhlbgoJZWNobyAtbiAiU2V0dGluZyB1cCBtYXNxdWVyYWRpbmc6ICIKCWlmIFsg IiRNQUNfTUFTUSIgPSAiIiBdIDsgdGhlbgoJCWZvciBzdWJuZXQgaW4gJHtNQVNRX0xBTn0gOyBk bwoJCQkke0lQVEFCTEVTfSAtdCBuYXQgLUEgUE9TVFJPVVRJTkcgLXMgJHtzdWJuZXR9IC1vICR7 SU5FVF9JRkFDRX0gLWogTUFTUVVFUkFERQoJCQllY2hvIC1uICIke3N1Ym5ldH06TUFTUVVFUkFE RSAiCgkJZG9uZQoJZWxzZQkKCQlmb3IgYWRkcmVzcyBpbiAke01BQ19NQVNRfSA7IGRvCgkJCSR7 SVBUQUJMRVN9IC10IG5hdCAtQSBQT1NUUk9VVElORyAtbSBtYWMgLS1tYWMtc291cmNlICR7YWRk cmVzc30gLW8gJHtJTkVUX0lGQUNFfSAtaiBNQVNRVUVSQURFCgkJCWVjaG8gLW4gIiR7YWRkcmVz c306TUFTUVVFUkFERSAiCgkJZG9uZQoJZmkKCWVjaG8KZmkKaWYgWyAiJFNOQVRfTEFOIiAhPSAi IiBdIDsgdGhlbiAjU3RhdGljIE5BVCB1c2VkCgllY2hvIC1uICJTZXR0aW5nIHVwIHN0YXRpYyBO QVQ6ICIKICAgICAgICBpZiBbICIkTUFDX1NOQVQiID0gIiIgXSA7IHRoZW4KICAgICAgICAgICAg ICAgIGZvciBydWxlIGluICR7U05BVF9MQU59IDsgZG8KCQkJZWNobyAiJHJ1bGUiIHwgewoJCQkJ SUZTPSc6JyByZWFkIGhvc3QgZGVzdGlwCgkgICAgICAgICAgICAgICAgICAgICAgICAke0lQVEFC TEVTfSAtdCBuYXQgLUEgUE9TVFJPVVRJTkcgLXMgJHtob3N0fSAtbyAke0lORVRfSUZBQ0V9IC1q IFNOQVQgLS10by1zb3VyY2UgJHtkZXN0aXB9CgkgICAgICAgICAgICAgICAgICAgICAgICBlY2hv IC1uICIke3N1Ym5ldH06U05BVCAiCgkJCX0KICAgICAgICAgICAgICAgIGRvbmUKICAgICAgICBl bHNlCiAgICAgICAgICAgICAgICBmb3IgcnVsZSBpbiAke01BQ19TTkFUfSA7IGRvCgkJCWVjaG8g IiRydWxlIiB8IHsKCQkJCUlGUz0nOicgcmVhZCBhZGRyZXNzIGRlc3RpcAkKCSAgICAgICAgICAg ICAgICAgICAgICAgICR7SVBUQUJMRVN9IC10IG5hdCAtQSBQT1NUUk9VVElORyAtbSBtYWMgLS1t YWMtc291cmNlICR7YWRkcmVzc30gLW8gJHtJTkVUX0lGQUNFfSAtaiBTTkFUIC0tdG8tc291cmNl ICR7ZGVzdGlwfQoJICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAtbiAiJHthZGRyZXNzfTpT TkFUICIKCQkJfQogICAgICAgICAgICAgICAgZG9uZQogICAgICAgIGZpICAKICAgICAgICBlY2hv CmZpCgojVENQIFBvcnQtRm9yd2FyZHMKaWYgWyAiJFRDUF9GVyIgIT0gIiIgXSA7IHRoZW4KCWVj aG8gLW4gIlRDUCBQb3J0IEZvcndhcmRzOiAiCglmb3IgcnVsZSBpbiAke1RDUF9GV30gOyBkbyAK CQllY2hvICIkcnVsZSIgfCB7CgkJCUlGUz0nOj4nIHJlYWQgc3JjcG9ydCBkZXN0cG9ydCBob3N0 CgkJCSR7SVBUQUJMRVN9IC10IG5hdCAtQSBQUkVST1VUSU5HIC1wIHRjcCAtaSAke0lORVRfSUZB Q0V9IC0tZHBvcnQgJHtzcmNwb3J0fSAtaiBETkFUIC0tdG8tZGVzdGluYXRpb24gJHtob3N0fTok e2Rlc3Rwb3J0fQoJCQkke0lQVEFCTEVTfSAtdCBmaWx0ZXIgLUEgRk9SV0FSRCAtcCB0Y3AgLWQg JHtob3N0fSAtLWRwb3J0ICR7ZGVzdHBvcnR9IC1qIEFDQ0VQVAoJCQllY2hvIC1uICIke3J1bGV9 ICIKCQl9Cglkb25lCgllY2hvCmZpCgojVURQIFBvcnQgRm9yd2FyZHMKaWYgWyAiJFVEUF9GVyIg IT0gIiIgXSA7IHRoZW4KCWVjaG8gLW4gIlVEUCBQb3J0IEZvcndhcmRzOiAiCglmb3IgcnVsZSBp biAke1VEUF9GV30gOyBkbwoJCWVjaG8gIiRydWxlIiB8IHsKCQkJSUZTPSc6PicgcmVhZCBzcmNw b3J0IGRlc3Rwb3J0IGhvc3QKCSAgICAgICAgCSR7SVBUQUJMRVN9IC10IG5hdCAtQSBQUkVST1VU SU5HIC1wIHVkcCAtaSAke0lORVRfSUZBQ0V9IC0tZHBvcnQgJHtzcmNwb3J0fSAtaiBETkFUIC0t dG8tZGVzdGluYXRpb24gJHtob3N0fToke2Rlc3Rwb3J0fQoJCQkke0lQVEFCTEVTfSAtdCBmaWx0 ZXIgLUEgRk9SV0FSRCAtcCB1ZHAgLWQgJHtob3N0fSAtLWRwb3J0ICR7ZGVzdHBvcnR9IC1qIEFD Q0VQVAoJICAgICAgICAJZWNobyAtbiAiJHtydWxlfSAiCgkJfQogICAgICAgIGRvbmUKICAgICAg ICBlY2hvCmZpCgojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CiMgLS0tLS0tLUNoYWluIHNldHVwIGJlZm9yZSBqdW1waW5nIHRvIHRoZW0tLS0tLS0KIyA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKCiMgU2V0IHVw IElORVQgY2hhaW5zCmVjaG8gLW4gIlNldHRpbmcgdXAgSU5FVCBjaGFpbnM6ICIKJHtJUFRBQkxF U30gLXQgZmlsdGVyIC1BIElOUFVUIC1pICR7SU5FVF9JRkFDRX0gLWogSU5FVElOCmVjaG8gLW4g IklORVRJTiAiCiR7SVBUQUJMRVN9IC10IGZpbHRlciAtQSBPVVRQVVQgLW8gJHtJTkVUX0lGQUNF fSAtaiBJTkVUT1VUCmVjaG8gLW4gIklORVRPVVQgIgplY2hvCgojIEZvciBub3cgd2UnbGwgc3Vi amVjdCB0aGUgRE1aIHRvIHRoZSBzYW1lIHJ1bGVzIGFzIHRoZSBpbnRlcm5ldCB3aGVuIGdvaW5n IG9udG8gdGhlIHRydXN0ZWQgTEFOCiMgQW5kIHdlJ2xsIGxldCBpdCBnbyBhbnl3aGVyZSBvbiB0 aGUgaW50ZXJuZXQKaWYgWyAiJERNWl9JRkFDRSIgIT0gIiIgXSA7IHRoZW4KCWVjaG8gLW4gIlNl dHRpbmcgdXAgRE1aIENoYWluczogIgoJJHtJUFRBQkxFU30gLUEgT1VUUFVUIC1vICR7RE1aX0lG QUNFfSAtaiBETVpPVVQKCWVjaG8gLW4gIkRNWk9VVCAiCgkke0lQVEFCTEVTfSAtQSBJTlBVVCAt aSAke0RNWl9JRkFDRX0gLWogRE1aSU4KCWVjaG8gLW4gIkRNWklOICIKCWVjaG8KCWVjaG8gLW4g IkRNWiBmb3IgTEFOIEZvcndhcmRpbmcgdG8gSU5FVElOLi4uIgoJJHtJUFRBQkxFU30gLUEgRE1a T1VUIC1vICR7TEFOX0lGQUNFfSAtaiBJTkVUSU4KCWVjaG8gImRvbmUiCgllY2hvIC1uICJETVog Zm9yIEludGVybmV0IEZvcndhcmRpbmcgdG8gSU5FVE9VVC4uLiIKCSR7SVBUQUJMRVN9IC1BIERN Wk9VVCAtbyAke0lORVRfSUZBQ0V9IC1qIElORVRPVVQKCWVjaG8gLW4gImRvbmUiCmZpCgoKI1Ro ZXNlIGxvZ2dpbmcgY2hhaW5zIGFyZSB2YWxpZCB0byBzcGVjaWZ5IGluIERST1A9IGFib3ZlCiNT ZXQgdXAgTERST1AKZWNobyAtbiAiU2V0dGluZyB1cCBkcm9wIGNoYWlucyBjaGFpbnM6ICIKJHtJ UFRBQkxFU30gLXQgZmlsdGVyIC1BIExEUk9QIC1wIHRjcCAtbSBsaW1pdCAtLWxpbWl0ICR7TE9H X0ZMT09EfSAtaiBMT0cgLS1sb2ctbGV2ZWwgaW5mbyAtLWxvZy1wcmVmaXggIlRDUCBEcm9wcGVk ICIKJHtJUFRBQkxFU30gLXQgZmlsdGVyIC1BIExEUk9QIC1wIHVkcCAtbSBsaW1pdCAtLWxpbWl0 ICR7TE9HX0ZMT09EfSAtaiBMT0cgLS1sb2ctbGV2ZWwgaW5mbyAtLWxvZy1wcmVmaXggIlVEUCBE cm9wcGVkICIKJHtJUFRBQkxFU30gLXQgZmlsdGVyIC1BIExEUk9QIC1wIGljbXAgLW0gbGltaXQg LS1saW1pdCAke0xPR19GTE9PRH0gLWogTE9HIC0tbG9nLWxldmVsIGluZm8gLS1sb2ctcHJlZml4 ICJJQ01QIERyb3BwZWQgIiAKJHtJUFRBQkxFU30gLXQgZmlsdGVyIC1BIExEUk9QIC1mIC1tIGxp bWl0IC0tbGltaXQgJHtMT0dfRkxPT0R9IC1qIExPRyAtLWxvZy1sZXZlbCB3YXJuaW5nIC0tbG9n LXByZWZpeCAiRlJBR01FTlQgRHJvcHBlZCAiCiR7SVBUQUJMRVN9IC10IGZpbHRlciAtQSBMRFJP UCAtaiBEUk9QCmVjaG8gLW4gIkxEUk9QICIKICAgICAgICAKI0FuZCBMUkVKRUNUIHRvbwoke0lQ VEFCTEVTfSAtdCBmaWx0ZXIgLUEgTFJFSkVDVCAtcCB0Y3AgLW0gbGltaXQgLS1saW1pdCAke0xP R19GTE9PRH0gLWogTE9HIC0tbG9nLWxldmVsIGluZm8gLS1sb2ctcHJlZml4ICJUQ1AgUmVqZWN0 ZWQgIgoke0lQVEFCTEVTfSAtdCBmaWx0ZXIgLUEgTFJFSkVDVCAtcCB1ZHAgLW0gbGltaXQgLS1s aW1pdCAke0xPR19GTE9PRH0gLWogTE9HIC0tbG9nLWxldmVsIGluZm8gLS1sb2ctcHJlZml4ICJV RFAgUmVqZWN0ZWQgIgoke0lQVEFCTEVTfSAtdCBmaWx0ZXIgLUEgTFJFSkVDVCAtcCBpY21wIC1t IGxpbWl0IC0tbGltaXQgJHtMT0dfRkxPT0R9IC1qIExPRyAtLWxvZy1sZXZlbCBpbmZvIC0tbG9n LXByZWZpeCAiSUNNUCBEcm9wcGVkICIKJHtJUFRBQkxFU30gLXQgZmlsdGVyIC1BIExSRUpFQ1Qg LWYgLW0gbGltaXQgLS1saW1pdCAke0xPR19GTE9PRH0gLWogTE9HIC0tbG9nLWxldmVsIHdhcm5p bmcgLS1sb2ctcHJlZml4ICJGUkFHTUVOVCBSZWplY3RlZCAiCiR7SVBUQUJMRVN9IC10IGZpbHRl ciAtQSBMUkVKRUNUIC1qIFJFSkVDVAplY2hvIC1uICJMUkVKRUNUICIKCiNEb24ndCBmb3JnZXQg VFJFSkVDVAoke0lQVEFCTEVTfSAtdCBmaWx0ZXIgLUEgVFJFSkVDVCAtcCB0Y3AgLWogUkVKRUNU IC0tcmVqZWN0LXdpdGggdGNwLXJlc2V0CiR7SVBUQUJMRVN9IC10IGZpbHRlciAtQSBUUkVKRUNU IC1wICEgdGNwIC1qIFJFSkVDVCAtLXJlamVjdC13aXRoIGljbXAtcG9ydC11bnJlYWNoYWJsZQok e0lQVEFCTEVTfSAtdCBmaWx0ZXIgLUEgVFJFSkVDVCAtaiBSRUpFQ1QgCmVjaG8gLW4gIlRSRUpF Q1QgIgoKI0FuZCBMVFJFSkVDVAoke0lQVEFCTEVTfSAtdCBmaWx0ZXIgLUEgTFRSRUpFQ1QgLXAg dGNwIC1tIGxpbWl0IC0tbGltaXQgJHtMT0dfRkxPT0R9IC1qIExPRyAtLWxvZy1sZXZlbCBpbmZv IC0tbG9nLXByZWZpeCAiVENQIFJlamVjdGVkICIKJHtJUFRBQkxFU30gLXQgZmlsdGVyIC1BIExU UkVKRUNUIC1wIHVkcCAtbSBsaW1pdCAtLWxpbWl0ICR7TE9HX0ZMT09EfSAtaiBMT0cgLS1sb2ct bGV2ZWwgaW5mbyAtLWxvZy1wcmVmaXggIlVEUCBSZWplY3RlZCAiCiR7SVBUQUJMRVN9IC10IGZp bHRlciAtQSBMVFJFSkVDVCAtcCBpY21wIC1tIGxpbWl0IC0tbGltaXQgJHtMT0dfRkxPT0R9IC1q IExPRyAtLWxvZy1sZXZlbCBpbmZvIC0tbG9nLXByZWZpeCAiSUNNUCBEcm9wcGVkICIKJHtJUFRB QkxFU30gLXQgZmlsdGVyIC1BIExUUkVKRUNUIC1mIC1tIGxpbWl0IC0tbGltaXQgJHtMT0dfRkxP T0R9IC1qIExPRyAtLWxvZy1sZXZlbCB3YXJuaW5nIC0tbG9nLXByZWZpeCAiRlJBR01FTlQgUmVq ZWN0ZWQgIgoke0lQVEFCTEVTfSAtdCBmaWx0ZXIgLUEgTFRSRUpFQ1QgLXAgdGNwIC1qIFJFSkVD VCAtLXJlamVjdC13aXRoIHRjcC1yZXNldAoke0lQVEFCTEVTfSAtdCBmaWx0ZXIgLUEgTFRSRUpF Q1QgLXAgISB0Y3AgLWogUkVKRUNUIC0tcmVqZWN0LXdpdGggaWNtcC1wb3J0LXVucmVhY2hhYmxl CiR7SVBUQUJMRVN9IC10IGZpbHRlciAtQSBMVFJFSkVDVCAtaiBSRUpFQ1QKZWNobyAtbiAiTFRS RUpFQ1QgIgoKI25ld2xpbmUKZWNobwoKCiMgU2V0IHVwIHRoZSBwZXItcHJvdG8gQUNDRVBUIGNo YWlucwplY2hvIC1uICJTZXR0aW5nIHVwIHBlci1wcm90byBBQ0NFUFQ6ICIKCiMgVENQQUNDRVBU CiMgU1lOIEZsb29kIFByb3RlY3Rpb24KJHtJUFRBQkxFU30gLXQgZmlsdGVyIC1BIFRDUEFDQ0VQ VCAtcCB0Y3AgLS1zeW4gLW0gbGltaXQgLS1saW1pdCAke1NZTl9GTE9PRH0gLWogQUNDRVBUCiR7 SVBUQUJMRVN9IC10IGZpbHRlciAtQSBUQ1BBQ0NFUFQgLXAgdGNwICEgLS1zeW4gLWogQUNDRVBU CiMgTG9nIGFueXRoaW5nIHRoYXQgaGFzbid0IG1hdGNoZWQgeWV0IGFuZCAke0RST1B9IGl0IHNp bmNlIHdlIGRvbid0IGtub3cgd2hhdCBpdCBpcwoke0lQVEFCTEVTfSAtdCBmaWx0ZXIgLUEgVENQ QUNDRVBUIC1tIGxpbWl0IC0tbGltaXQgJHtMT0dfRkxPT0R9IC1qIExPRyAtLWxvZy1wcmVmaXgg Ik1pc21hdGNoIGluIFRDUEFDQ0VQVCAiCiR7SVBUQUJMRVN9IC10IGZpbHRlciAtQSBUQ1BBQ0NF UFQgLWogJHtEUk9QfQplY2hvIC1uICJUQ1BBQ0NFUFQgIgoKI1VEUEFDQ0VQVAoke0lQVEFCTEVT fSAtdCBmaWx0ZXIgLUEgVURQQUNDRVBUIC1wIHVkcCAtaiBBQ0NFUFQKIyBMb2cgYW55dGhpbmcg bm90IFVEUCAoaXQgc2hvdWxkbid0IGJlIGhlcmUpLCBhbmQgJHtEUk9QfSBpdCBzaW5jZSBpdCdz IG5vdCBzdXBwb3NlZCB0byBiZSBoZXJlCiR7SVBUQUJMRVN9IC10IGZpbHRlciAtQSBVRFBBQ0NF UFQgLW0gbGltaXQgLS1saW1pdCAke0xPR19GTE9PRH0gLWogTE9HIC0tbG9nLXByZWZpeCAiTWlz bWF0Y2ggb24gVURQQUNDRVBUICIKJHtJUFRBQkxFU30gLXQgZmlsdGVyIC1BIFVEUEFDQ0VQVCAt aiAke0RST1B9CmVjaG8gLW4gIlVEUEFDQ0VQVCAiCgojRG9uZQplY2hvCgoKIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgPT09PT09PT09PT09PT09 PT09VFRMIE1hbmdsaW5nPT09PT09PT09PT09PT09PT09PQojIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmlmIFsgIiRUVExfU0FGRSIgIT0gIiIgXSA7 IHRoZW4KCSR7SVBUQUJMRVN9IC10IG1hbmdsZSAtQSBQUkVST1VUSU5HIC1pICR7SU5FVF9JRkFD RX0gLWogVFRMIC0tdHRsLXNldCAke1RUTF9TQUZFfQpmaQoKIyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KCgojRXhwbGljaXQgZGVuaWVzCmlmIFsgIiRERU5ZX0FMTCIg IT0gIiIgXSA7IHRoZW4KCWVjaG8gLW4gIkRlbnlpbmcgaG9zdHM6ICIKCWZvciBob3N0IGluICR7 REVOWV9BTEx9IDsgZG8KCQkke0lQVEFCTEVTfSAtdCBmaWx0ZXIgLUEgSU5FVElOIC1zICR7aG9z dH0gLWogJHtEUk9QfQoJCWVjaG8gLW4gIiR7aG9zdH06JHtEUk9QfSIKCWRvbmUKCWVjaG8KZmkK CmlmIFsgIiRERU5ZX0hPU1RXSVNFX1RDUCIgIT0gIiIgXSA7IHRoZW4KCWVjaG8gLW4gIkhvc3R3 aXNlIFRDUCBEZW5pZXM6ICIKCWZvciBydWxlIGluICR7REVOWV9IT1NUV0lTRV9UQ1B9IDsgZG8K CQllY2hvICIkcnVsZSIgfCB7CgkJCUlGUz0nPicgcmVhZCBob3N0IHBvcnQKCQkJJHtJUFRBQkxF U30gLXQgZmlsdGVyIC1BIElORVRJTiAtcCB0Y3AgLXMgJHtob3N0fSAtLWRwb3J0ICR7cG9ydH0g LWogJHtEUk9QfQoJCQllY2hvIC1uICIke3J1bGV9ICIKCQl9Cglkb25lCgllY2hvCmZpCgppZiBb ICIkREVOWV9IT1NUV0lTRV9VRFAiICE9ICIiIF0gOyB0aGVuCgllY2hvIC1uICJIb3N0d2lzZSBV RFAgRGVuaWVzOiAiCglmb3IgcnVsZSBpbiAke0RFTllfSE9TVFdJU0VfVURQfSA7IGRvCgkJZWNo byAiJHJ1bGUiIHwgewoJCQlJRlM9Jz4nIHJlYWQgaG9zdCBwb3J0CgkJCSR7SVBUQUJMRVN9IC10 IGZpbHRlciAtQSBJTkVUSU4gLXAgdWRwIC1zICR7aG9zdH0gLS1kcG9ydCAke3BvcnR9IC1qICR7 RFJPUH0KCQkJZWNobyAtbiAiJHtydWxlfSAiCgkJfQoJZG9uZQoJZWNobwpmaQoKI0ludmFsaWQg cGFja2V0cyBhcmUgYWx3YXlzIGFubm95aW5nCmVjaG8gLW4gIiR7RFJPUH1pbmcgaW52YWxpZCBw YWNrZXRzLi4uIgoke0lQVEFCTEVTfSAtdCBmaWx0ZXIgLUEgSU5FVElOIC1tIHN0YXRlIC0tc3Rh dGUgSU5WQUxJRCAtaiAke0RST1B9CmVjaG8gImRvbmUiCgoKCiMgPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojIC0tLS0tLS0t LS0tLUFsbG93IHN0dWZmIHdlIGhhdmUgY2hvc2VuIHRvIGFsbG93IGluLS0tLS0tLS0tLS0tLS0K IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CgojU3RhcnQgYWxsb3dpbmcgc3R1ZmYKCiMgRmxvb2QgInNlY3VyaXR5IgojIFlv dSdsbCBzdGlsbCByZXNwb25kIHRvIHRoZXNlIGlmIHRoZXkgY29tcGx5IHdpdGggdGhlIGxpbWl0 cwojIERlZmF1bHQgbGltaXRzIGFyZSAxL3NlYyBmb3IgSUNNUCBwaW5ncwojIFNZTiBGbG9vZCBp cyBvbiBhIHBlci1wb3J0IGJhc2lzIGJlY2F1c2UgaXQncyBhIHNlY3VyaXR5IGhvbGUgdG8gcHV0 IGl0IGhlcmUhCiMgVGhpcyBpcyBqdXN0IGEgcGFja2V0IGxpbWl0LCB5b3Ugc3RpbGwgZ2V0IHRo ZSBwYWNrZXRzIG9uIHRoZSBpbnRlcmZhY2UgYW5kIAojICAgIHN0aWxsIG1heSBleHBlcmllbmNl IGxhZyBpZiB0aGUgZmxvb2QgaXMgaGVhdnkgZW5vdWdoCmVjaG8gLW4gIkZsb29kIGxpbWl0aW5n OiAiCiMgUGluZyBGbG9vZHMgKElDTVAgZWNoby1yZXF1ZXN0KQoke0lQVEFCTEVTfSAtdCBmaWx0 ZXIgLUEgSU5FVElOIC1wIGljbXAgLS1pY21wLXR5cGUgZWNoby1yZXF1ZXN0IC1tIGxpbWl0IC0t bGltaXQgJHtQSU5HX0ZMT09EfSAtaiBBQ0NFUFQKZWNobyAtbiAiSUNNUC1QSU5HICIKZWNobwoK ZWNobyAtbiAiQWxsb3dpbmcgdGhlIHJlc3Qgb2YgdGhlIElDTVAgbWVzc2FnZXMgaW4uLi4iCiR7 SVBUQUJMRVN9IC10IGZpbHRlciAtQSBJTkVUSU4gLXAgaWNtcCAtLWljbXAtdHlwZSAhIGVjaG8t cmVxdWVzdCAtaiBBQ0NFUFQKZWNobyAiZG9uZSIKCmlmIFsgIiRUQ1BfQUxMT1ciICE9ICIiIF0g OyB0aGVuCgllY2hvIC1uICJUQ1AgSW5wdXQgQWxsb3c6ICIKCWZvciBwb3J0IGluICR7VENQX0FM TE9XfSA7IGRvCgkgICAgICAgIGlmIFsgIiRwb3J0IiA9ICIyMSIgXTsgdGhlbiAjQWN0aXZlIEZU UCAodGhhbmtzIHN0ZWZmKQoJICAgICAgICAgICAke0lQVEFCTEVTfSAtdCBmaWx0ZXIgLUEgSU5F VElOIC1wIHRjcCAtLXNwb3J0IDIwIC0tZHBvcnQgMTAyNDo2NTUzNSAtbSBzdGF0ZSAtLXN0YXRl IFJFTEFURUQgLWogVENQQUNDRVBUCgkJZmkKIAkJJHtJUFRBQkxFU30gLXQgZmlsdGVyIC1BIElO RVRJTiAtcCB0Y3AgLS1kcG9ydCAke3BvcnR9IC1qIFRDUEFDQ0VQVAoJCWVjaG8gLW4gIiR7cG9y dH0gIgoJZG9uZQoJZWNobwpmaQoKaWYgWyAiJFVEUF9BTExPVyIgIT0gIiIgXSA7IHRoZW4KCWVj aG8gLW4gIlVEUCBJbnB1dCBBbGxvdzogIgoJZm9yIHBvcnQgaW4gJHtVRFBfQUxMT1d9IDsgZG8K CQkke0lQVEFCTEVTfSAtdCBmaWx0ZXIgLUEgSU5FVElOIC1wIHVkcCAtLWRwb3J0ICR7cG9ydH0g LWogVURQQUNDRVBUCgkJZWNobyAtbiAiJHtwb3J0fSAiCglkb25lCgllY2hvCmZpCgojU1NIIFJ1 bGVzZXRzCmlmIFsgJFVTRV9TU0gxID0gVFJVRSBdIHx8IFsgJFVTRV9PUEVOU1NIID0gVFJVRSBd OyB0aGVuCgkgZWNobyAtbiAiQWNjb3VudGluZyBmb3IgU1NILi4uIgoJaWYgWyAiJFVTRV9TU0gx IiA9ICJUUlVFIiBdOyB0aGVuICNTU0gxCgkJJHtJUFRBQkxFU30gLXQgZmlsdGVyIC1BIElORVRJ TiAtcCB0Y3AgLS1zcG9ydCAyMiAtLWRwb3J0IDUxMzoxMDIzICEgLS1zeW4gLW0gc3RhdGUgLS1z dGF0ZSBSRUxBVEVEIC1qIFRDUEFDQ0VQVAoJCWVjaG8gLW4gIlNTSDEgIgoJZmkKCWlmIFsgIiRV U0VfT1BFTlNTSCIgPSAiVFJVRSIgXSA7IHRoZW4gI09wZW5TU0gKCQkke0lQVEFCTEVTfSAtdCBm aWx0ZXIgLUEgSU5FVElOIC1wIHRjcCAtLXNwb3J0IDIyIC0tZHBvcnQgMTAyNDo2NTUzNSAhIC0t c3luIC1tIHN0YXRlIC0tc3RhdGUgUkVMQVRFRCAtaiBUQ1BBQ0NFUFQKCQllY2hvIC1uICJPcGVu U1NIICIKCWZpCgllY2hvCmZpCgojSG9zdHdpc2UgYWxsb3dzCmlmIFsgIiRBTExPV19IT1NUV0lT RV9UQ1AiICE9ICIiIF0gOyB0aGVuCgllY2hvIC1uICJIb3N0d2lzZSBUQ1AgQWxsb3dzOiAiCglm b3IgcnVsZSBpbiAke0FMTE9XX0hPU1RXSVNFX1RDUH0gOyBkbwoJCWVjaG8gIiRydWxlIiB8IHsK CQkJSUZTPSc+JyByZWFkICBob3N0IHBvcnQKCQkJJHtJUFRBQkxFU30gLXQgZmlsdGVyIC1BIElO RVRJTiAtcCB0Y3AgLXMgJHtob3N0fSAtLWRwb3J0ICR7cG9ydH0gLWogQUNDRVBUCgkJCWVjaG8g LW4gIiR7cnVsZX0gIgoJCX0KCWRvbmUKCWVjaG8KZmkKCmlmIFsgIiRBTExPV19IT1NUV0lTRV9V RFAiICE9ICIiIF0gOyB0aGVuCgllY2hvIC1uICJIb3N0d2lzZSBVRFAgQWxsb3dzOiAiCglmb3Ig cnVsZSBpbiAke0FMTE9XX0hPU1RXSVNFX1VEUH0gOyBkbwoJCWVjaG8gIiRydWxlIiB8IHsKCQkJ SUZTPSc+JyByZWFkICBob3N0IHBvcnQKCQkJJHtJUFRBQkxFU30gLXQgZmlsdGVyIC1BIElORVRJ TiAtcCB1ZHAgLXMgJHtob3N0fSAtLWRwb3J0ICR7cG9ydH0gLWogQUNDRVBUCgkJCWVjaG8gLW4g IiR7cnVsZX0gIgoJCX0KCWRvbmUKCWVjaG8KZmkKCgplY2hvIC1uICJBbGxvd2luZyBlc3RhYmxp c2hlZCBvdXRib3VuZCBjb25uZWN0aW9ucyBiYWNrIGluLi4uIgoke0lQVEFCTEVTfSAtdCBmaWx0 ZXIgLUEgSU5FVElOIC1tIHN0YXRlIC0tc3RhdGUgRVNUQUJMSVNIRUQgLWogQUNDRVBUCmVjaG8g ImRvbmUiCgojIFR5cGUgb2YgU2VydmljZSBtYW5nbGUgb3B0aW1pemF0aW9ucyAodGhlIEFDVElW RSBGVFAgb25lIHdpbGwgb25seSB3b3JrIGZvciB1cGxvYWRzKQppZiBbICIkTUFOR0xFX1RPU19P UFRJTUlaRSIgPSAiVFJVRSIgXSA7IHRoZW4KCWVjaG8gLW4gIk9wdGltaXppbmcgdHJhZmZpYzog IgoJJHtJUFRBQkxFU30gLXQgbWFuZ2xlIC1BIE9VVFBVVCAtcCB0Y3AgLS1kcG9ydCAyMyAtaiBU T1MgLS1zZXQtdG9zIE1pbmltaXplLURlbGF5CgllY2hvIC1uICJ0ZWxuZXQgIgoJJHtJUFRBQkxF U30gLXQgbWFuZ2xlIC1BIE9VVFBVVCAtcCB0Y3AgLS1kcG9ydCAyMiAtaiBUT1MgLS1zZXQtdG9z IE1pbmltaXplLURlbGF5CgllY2hvIC1uICJzc2ggIgoJJHtJUFRBQkxFU30gLXQgbWFuZ2xlIC1B IE9VVFBVVCAtcCB0Y3AgLS1kcG9ydCAyMCAtaiBUT1MgLS1zZXQtdG9zIE1pbmltaXplLUNvc3QK CWVjaG8gLW4gImZ0cC1kYXRhICIKCSR7SVBUQUJMRVN9IC10IG1hbmdsZSAtQSBPVVRQVVQgLXAg dGNwIC0tZHBvcnQgMjEgLWogVE9TIC0tc2V0LXRvcyBNaW5pbWl6ZS1EZWxheQoJZWNobyAtbiAi ZnRwLWNvbnRyb2wgIgoJJHtJUFRBQkxFU30gLXQgbWFuZ2xlIC1BIE9VVFBVVCAtcCB1ZHAgLS1k cG9ydCA0MDAwOjcwMDAgLWogVE9TIC0tc2V0LXRvcyBNaW5pbWl6ZS1EZWxheQoJZWNobyAtbiAi ZGlhYmxvMiAiCgllY2hvCmZpCgojV2hhdCB0byBkbyBvbiB0aG9zZSBJTkVUIGNoYWlucyB3aGVu IHdlIGhpdCB0aGUgZW5kCmVjaG8gLW4gIlNldHRpbmcgdXAgSU5FVCBwb2xpY2llczogIgojRHJv cCBpZiB3ZSBjYW50IGZpbmQgYSB2YWxpZCBpbmJvdW5kIHJ1bGUuCiR7SVBUQUJMRVN9IC10IGZp bHRlciAtQSBJTkVUSU4gLWogJHtEUk9QfQplY2hvIC1uICJJTkVUSU46JHtEUk9QfSAiCiNXZSBj YW4gc2VuZCB3aGF0IHdlIHdhbnQgdG8gdGhlIGludGVybmV0CiR7SVBUQUJMRVN9IC10IGZpbHRl ciAtQSBJTkVUT1VUIC1qIEFDQ0VQVAplY2hvIC1uICJJTkVUT1VUOkFDQ0VQVCAiCmVjaG8KCiNB bGwgZG9uZSEKZWNobyAiRG9uZSBsb2FkaW5nIHRoZSBmaXJld2FsbCEiCg== ------------A01E51C237E0D027--