Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 25 Mar 2007 15:50:12 GMT
From:      nemo <nemoliu@gmail.com>
To:        freebsd-ports-bugs@FreeBSD.org
Subject:   Re: ports/110768: [UPDATE]java/jboss4:fix some FATAL error noticed by portlint -C
Message-ID:  <200703251550.l2PFoCF6079774@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR ports/110768; it has been noted by GNATS.

From: nemo <nemoliu@gmail.com>
To: bug-followup@FreeBSD.org, nemoliu@gmail.com, 
	"Pav Lucistnik" <pav@freebsd.org>
Cc:  
Subject: Re: ports/110768: [UPDATE]java/jboss4:fix some FATAL error noticed by portlint -C
Date: Sun, 25 Mar 2007 23:43:15 +0800

 ------=_Part_225929_4138004.1174837395459
 Content-Type: text/plain; charset=UTF-8; format=flowed
 Content-Transfer-Encoding: 7bit
 Content-Disposition: inline
 
 I rewrite the patch .this one should be better.
 such as:
 change USE_RC_SUBR value to jboss4.sh;
 use ant to build src;
 use SUB_FILES and SUB_LIST replace use sed manaully.
 
 ------=_Part_225929_4138004.1174837395459
 Content-Type: text/plain; name=patch-jboss4.txt; charset=ANSI_X3.4-1968
 Content-Transfer-Encoding: base64
 X-Attachment-Id: f_ezpntd0q
 Content-Disposition: attachment; filename="patch-jboss4.txt"
 
 SW5kZXg6IE1ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9ob21lL25jdnMvcG9ydHMvamF2
 YS9qYm9zczQvTWFrZWZpbGUsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzgKZGlmZiAtdSAtcjEu
 MzggTWFrZWZpbGUKLS0tIE1ha2VmaWxlCTggTm92IDIwMDYgMTY6MTk6MTcgLTAwMDAJMS4zOAor
 KysgTWFrZWZpbGUJMjUgTWFyIDIwMDcgMTU6MjY6NDcgLTAwMDAKQEAgLTIsNyArMiw3IEBACiAj
 IERhdGUgY3JlYXRlZDogICAgICAgICAgICAgICAgICAxNiBBcHJpbCAyMDAyCiAjIFdob206ICAg
 ICAgICAgICAgICAgICAgICAgICAgICBFcm5zdCBkZSBIYWFuIDx6bmVyZEBGcmVlQlNELm9yZz4K
 ICMKLSMgJEZyZWVCU0Q6IHBvcnRzL2phdmEvamJvc3M0L01ha2VmaWxlLHYgMS4zOCAyMDA2LzEx
 LzA4IDE2OjE5OjE3IHJhZmFuIEV4cCAkCisjICRGcmVlQlNEJAogIwogCiBQT1JUTkFNRT0JJHtB
 UFBfVElUTEU6TH0KQEAgLTIxLDggKzIxLDExIEBACiBMQVRFU1RfTElOSz0JamJvc3M0CiBVU0Vf
 SkFWQT0JeWVzCiBKQVZBX1ZFUlNJT049CTEuNCsKK1VTRV9BTlQ9CXllcworTUFLRV9BUkdTPQkt
 YnVpbGRmaWxlIGJ1aWxkL2J1aWxkLnhtbAogCi1VU0VfUkNfU1VCUj0JWUVTCitVU0VfUkNfU1VC
 Uj0JamJvc3M0LnNoCitTVUJfRklMRVM9CXBrZy1pbnN0YWxsIHBrZy1kZWluc3RhbGwgcGtnLW1l
 c3NhZ2UgZGFlbW9uY3RsLjEgZGFlbW9uY3RsLmMKIAogLmlmICFkZWZpbmVkKE5PUE9SVERPQ1Mp
 CiBQT1JURE9DUz0JKgpAQCAtNDgsNTUgKzUxLDQ4IEBACiBKQVZBX09QVFM9CiBKQVZBX0NQPQli
 aW4vcnVuLmphcjoke0pBVkFfSE9NRX0vbGliL3Rvb2xzLmphcgogSkFWQV9NQUlOPQlvcmcuamJv
 c3MuTWFpbgotREFFTU9OQ1RMX0RJUj0JJHtGSUxFU0RJUn0KLURBRU1PTkNUTF9GSUxFUz1kYWVt
 b25jdGwuYyBkYWVtb25jdGwuMSBzdGFydHVwLnNoIHBrZy1tZXNzYWdlCiBNQU4xPQkJJHtDT05U
 Uk9MX1NDUklQVF9OQU1FfS4xCiAKIEpCT1NTT1VUUFVUPQkke1dSS1NSQ30vYnVpbGQvb3V0cHV0
 LyR7UE9SVE5BTUV9LSR7UE9SVFZFUlNJT046Uy8ucy9TUC99CiBBUFBfSE9NRV9GSUxFUz0JYmlu
 IGNsaWVudCBsaWIgc2VydmVyCiAKIFBMSVNUX0ZJTEVTPQkke0NPTlRST0xfU0NSSVBUOlMsXiR7
 UFJFRklYfS8sLH0gXAotCQkke1NUQVJUVVBfU0NSSVBUOlMsXiR7UFJFRklYfS8sLH0gXAogCQkk
 e1NURE9VVF9MT0c6UyxeJHtQUkVGSVh9LywsfSBcCiAJCSR7U1RERVJSX0xPRzpTLF4ke1BSRUZJ
 WH0vLCx9CiAKLVBLR01FU1NBR0U9CSR7V1JLRElSfS9wa2ctbWVzc2FnZS5mbXQKK1BLR01FU1NB
 R0U9CSR7V1JLRElSfS9wa2ctbWVzc2FnZQorCitTVUJfTElTVD0JQVBQX0hPTUU9JHtBUFBfSE9N
 RX0gXAorCQlBUFBfU0hPUlROQU1FPSR7QVBQX1NIT1JUTkFNRX0gXAorCQlBUFBfVElUTEU9JHtB
 UFBfVElUTEV9IFwKKwkJQ09OVFJPTF9TQ1JJUFQ9JHtDT05UUk9MX1NDUklQVH0gXAorCQlDT05U
 Uk9MX1NDUklQVF9NQU5QQUdFX1RJVExFPSR7Q09OVFJPTF9TQ1JJUFRfTUFOUEFHRV9USVRMRX0g
 XAorCQlDT05UUk9MX1NDUklQVF9OQU1FPSR7Q09OVFJPTF9TQ1JJUFRfTkFNRX0gXAorCQlHUk9V
 UD0ke0dST1VQfSBcCisJCUpBVkE9JHtKQVZBfSBcCisJCUpBVkFfQ1A9JHtKQVZBX0NQfSBcCisJ
 CUpBVkFfSE9NRT0ke0pBVkFfSE9NRX0gXAorCQlKQVZBX01BSU49JHtKQVZBX01BSU59IFwKKwkJ
 SkFWQV9PUFRTPSR7SkFWQV9PUFRTfSBcCisJCUpBVkFfUE9SVF9WRVJTSU9OPSR7SkFWQV9QT1JU
 X1ZFUlNJT059IFwKKwkJSkFWQV9QT1JUX09TX0RFU0NSSVBUSU9OPSR7SkFWQV9QT1JUX09TX0RF
 U0NSSVBUSU9OfSBcCisJCUpBUl9GSUxFPSR7SkFSX0ZJTEV9IFwKKwkJTE9HX0RJUj0ke0xPR19E
 SVJ9IFwKKwkJUElEX0ZJTEU9JHtQSURfRklMRX0gXAorCQlQS0dOQU1FPSR7UEtHTkFNRX0gXAor
 CQlQT1JUTkFNRT0ke1BPUlROQU1FfSBcCisJCVBPUlRWRVJTSU9OPSR7UE9SVFZFUlNJT059IFwK
 KwkJUFJFRklYPSR7UFJFRklYfSBcCisJCVNUQVJUVVBfU0NSSVBUPSR7U1RBUlRVUF9TQ1JJUFR9
 IFwKKwkJU1RERVJSX0xPRz0ke1NUREVSUl9MT0d9IFwKKwkJU1RET1VUX0xPRz0ke1NURE9VVF9M
 T0d9IFwKKwkJU1RPUF9USU1FT1VUPSR7U1RPUF9USU1FT1VUfSBcCisJCVVTRVI9JHtVU0VSfQog
 CiAuaW5jbHVkZSA8YnNkLnBvcnQucHJlLm1rPgogCi1kby1jb25maWd1cmU6Ci0JQChjZCAke0RB
 RU1PTkNUTF9ESVJ9ICYmICR7Q1B9ICR7REFFTU9OQ1RMX0ZJTEVTfSAke1dSS0RJUn0pCi0JQChj
 ZCAke1dSS0RJUn0gJiYgJHtSRUlOUExBQ0VfQ01EfSBcCi0JCS1lICJzfCUlUkNfU1VCUiUlfCR7
 UkNfU1VCUn18ZzsiIFwKLQkJLWUgInN8JSVBUFBfSE9NRSUlfCR7QVBQX0hPTUV9fGc7IiBcCi0J
 CS1lICJzfCUlQVBQX1NIT1JUTkFNRSUlfCR7QVBQX1NIT1JUTkFNRX18ZzsiIFwKLQkJLWUgInN8
 JSVBUFBfVElUTEUlJXwke0FQUF9USVRMRX18ZzsiIFwKLQkJLWUgInN8JSVDT05UUk9MX1NDUklQ
 VCUlfCR7Q09OVFJPTF9TQ1JJUFR9fGc7IiBcCi0JCS1lICJzfCUlQ09OVFJPTF9TQ1JJUFRfTUFO
 UEFHRV9USVRMRSUlfCR7Q09OVFJPTF9TQ1JJUFRfTUFOUEFHRV9USVRMRX18ZzsiIFwKLQkJLWUg
 InN8JSVDT05UUk9MX1NDUklQVF9OQU1FJSV8JHtDT05UUk9MX1NDUklQVF9OQU1FfXxnOyIgXAot
 CQktZSAic3wlJUdST1VQJSV8JHtHUk9VUH18ZzsiIFwKLQkJLWUgInN8JSVKQVZBJSV8JHtKQVZB
 fXxnOyIgXAotCQktZSAic3wlJUpBVkFfQ1AlJXwke0pBVkFfQ1B9fGc7IiBcCi0JCS1lICJzfCUl
 SkFWQV9IT01FJSV8JHtKQVZBX0hPTUV9fGc7IiBcCi0JCS1lICJzfCUlSkFWQV9NQUlOJSV8JHtK
 QVZBX01BSU59fGc7IiBcCi0JCS1lICJzfCUlSkFWQV9PUFRTJSV8JHtKQVZBX09QVFN9fGc7IiBc
 Ci0JCS1lICJzfCUlSkFWQV9QT1JUX1ZFUlNJT04lJXwke0pBVkFfUE9SVF9WRVJTSU9OfXxnOyIg
 XAotCQktZSAic3wlJUpBVkFfUE9SVF9PU19ERVNDUklQVElPTiUlfCR7SkFWQV9QT1JUX09TX0RF
 U0NSSVBUSU9OfXxnOyIgXAotCQktZSAic3wlJUpBUl9GSUxFJSV8JHtKQVJfRklMRX18ZzsiIFwK
 LQkJLWUgInN8JSVMT0dfRElSJSV8JHtMT0dfRElSfXxnOyIgXAotCQktZSAic3wlJVBJRF9GSUxF
 JSV8JHtQSURfRklMRX18ZzsiIFwKLQkJLWUgInN8JSVQS0dOQU1FJSV8JHtQS0dOQU1FfXxnOyIg
 XAotCQktZSAic3wlJVBPUlROQU1FJSV8JHtQT1JUTkFNRX18ZzsiIFwKLQkJLWUgInN8JSVQT1JU
 VkVSU0lPTiUlfCR7UE9SVFZFUlNJT059fGc7IiBcCi0JCS1lICJzfCUlUFJFRklYJSV8JHtQUkVG
 SVh9fGc7IiBcCi0JCS1lICJzfCUlU1RBUlRVUF9TQ1JJUFQlJXwke1NUQVJUVVBfU0NSSVBUfXxn
 OyIgXAotCQktZSAic3wlJVNUREVSUl9MT0clJXwke1NUREVSUl9MT0d9fGc7IiBcCi0JCS1lICJz
 fCUlU1RET1VUX0xPRyUlfCR7U1RET1VUX0xPR318ZzsiIFwKLQkJLWUgInN8JSVTVE9QX1RJTUVP
 VVQlJXwke1NUT1BfVElNRU9VVH18ZzsiIFwKLQkJLWUgInN8JSVVU0VSJSV8JHtVU0VSfXxnOyIg
 JHtEQUVNT05DVExfRklMRVN9KQotCUAke0ZNVH0gLXMgODAgJHtXUktESVJ9L3BrZy1tZXNzYWdl
 ID4ke1BLR01FU1NBR0V9CiAKLXBvc3QtY29uZmlndXJlOgorcG9zdC1wYXRjaDoKIAlAJHtFQ0hP
 X01TR30gIkluc3RhbGxhdGlvbiBzZXR0aW5nczoiCiAJQCR7RUNIT19NU0d9ICIgICBEZXN0aW5h
 dGlvbiBkaXJlY3Rvcnk6ICAgICR7QVBQX0hPTUV9IgogCUAke0VDSE9fTVNHfSAiICAgQ29udHJv
 bCBwcm9ncmFtIGxvY2F0aW9uOiAke0NPTlRST0xfU0NSSVBUfSIKQEAgLTExMCwyMSArMTA2LDE4
 IEBACiAJQCR7RUNIT19NU0d9ICIgICBTdGFydGluZyBhZnRlciBpbnN0YWxsOiAgICR7QVVUT19T
 VEFSVH0iCiAJQCR7RUNIT19NU0d9ICIgICBTdG9wIHRpbWUtb3V0OiAgICAgICAgICAgICR7U1RP
 UF9USU1FT1VUfSBzZWMuIgogCi1kby1idWlsZDoKLQkoY2QgJHtXUktESVJ9ICYmICR7Q0N9ICR7
 Q0ZMQUdTfSAtbyAke0NPTlRST0xfU0NSSVBUX05BTUV9IGRhZW1vbmN0bC5jKQotCShjZCAke1dS
 S1NSQ30vYnVpbGQgJiYgJHtTRVRFTlZ9IEpBVkFfSE9NRT0iJHtKQVZBX0hPTUV9IiBQQVRIPSIk
 e0pBVkFfSE9NRX0vYmluOiR7UEFUSH0iICR7U0h9IGJ1aWxkLnNoKQogCiBwcmUtaW5zdGFsbDoK
 IAlAJHtTRVRFTlZ9IFBLR19QUkVGSVg9JHtQUkVGSVh9ICR7U0h9ICR7UEtHSU5TVEFMTH0gJHtQ
 S0dOQU1FfSBQUkUtSU5TVEFMTAogCiBkby1pbnN0YWxsOgorCWNkICR7V1JLRElSfSAmJiAke0ND
 fSAke0NGTEFHU30gLW8gJHtDT05UUk9MX1NDUklQVF9OQU1FfSBkYWVtb25jdGwuYwogCSR7TUtE
 SVJ9ICR7QVBQX0hPTUV9ICYmICR7Q0hPV059ICR7VVNFUn06JHtHUk9VUH0gJHtBUFBfSE9NRX0K
 IAkke01LRElSfSAke0xPR19ESVJ9ICYmICR7Q0hPV059ICR7VVNFUn06JHtHUk9VUH0gJHtMT0df
 RElSfQogCShjZCAke0pCT1NTT1VUUFVUfSAmJiAke0ZJTkR9ICR7QVBQX0hPTUVfRklMRVN9IHxc
 CiAJCSR7Q1BJT30gLXBkbXUgLVIgJHtVU0VSfToke0dST1VQfSAke0FQUF9IT01FfSkKIAkke0lO
 U1RBTEx9IC1vICR7VVNFUn0gLWcgJHtHUk9VUH0gLW0gMDY3NTRcCiAJCSR7V1JLRElSfS8ke0NP
 TlRST0xfU0NSSVBUX05BTUV9ICR7Q09OVFJPTF9TQ1JJUFR9Ci0JJHtJTlNUQUxMX1NDUklQVH0g
 JHtXUktESVJ9L3N0YXJ0dXAuc2ggJHtTVEFSVFVQX1NDUklQVH0KIAkke0lOU1RBTEx9IC1vICR7
 VVNFUn0gLWcgJHtHUk9VUH0gLW0gMDY0MCAvZGV2L251bGwgJHtTVERPVVRfTE9HfQogCSR7SU5T
 VEFMTH0gLW8gJHtVU0VSfSAtZyAke0dST1VQfSAtbSAwNjQwIC9kZXYvbnVsbCAke1NUREVSUl9M
 T0d9CiAJJHtJTlNUQUxMfSAtbyAke1VTRVJ9IC1nICR7R1JPVVB9IC1tIDA2NDAgL2Rldi9udWxs
 ICR7UElEX0ZJTEV9CkluZGV4OiBwa2ctZGVpbnN0YWxsCj09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IHBr
 Zy1kZWluc3RhbGwKZGlmZiAtTiBwa2ctZGVpbnN0YWxsCi0tLSBwa2ctZGVpbnN0YWxsCTE0IEp1
 bCAyMDAzIDEwOjAzOjEzIC0wMDAwCTEuMgorKysgL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6
 MDAgLTAwMDAKQEAgLTEsMzUgKzAsMCBAQAotIyEvYmluL3NoCi0jCi0jIFRoaXMgc2NyaXB0IGRv
 ZXMgdGhlIGZvbGxvd2luZy4KLSMKLSMgKiBDaGVja3MgaWYgdGhlIEpCb3NzIFBJRCBmaWxlIGV4
 aXN0cy4gSWYgaXQgZG9lcywgaXQga2lsbHMgdGhlCi0jICAgSkJvc3MgcHJvY2VzcyBhbmQgcmVt
 b3ZlcyB0aGUgUElEIGZpbGUuCi0jCi0jICRGcmVlQlNEOiBwb3J0cy9qYXZhL2pib3NzNC9wa2ct
 ZGVpbnN0YWxsLHYgMS4yIDIwMDMvMDcvMTQgMTA6MDM6MTMgZGVzIEV4cCAkCi0jCi0KLSMgTWFr
 ZSBzdXJlIHdlJ3JlIGluIHRoZSByaWdodCBzdGFnZSBvZiB0aGUgcHJvY2VzcwotaWYgWyAiJDIi
 ID0gIkRFSU5TVEFMTCIgXTsgdGhlbgotCi0JIyBLaWxsIEpCb3NzIGlmIGl0IGlzIHN0aWxsIHJ1
 bm5pbmcKLQlQSURfRklMRT0vdmFyL3J1bi9qYm9zcy5waWQKLQlpZiBbIC1zICR7UElEX0ZJTEV9
 IF07IHRoZW4KLQkJUElEPWBjYXQgJHtQSURfRklMRX1gCi0JCWVjaG8gLW4gIj4+IEtpbGxpbmcg
 SkJvc3MgU2VydmVyIHByb2Nlc3MgKCR7UElEfSkuLi4iCi0JCS9iaW4va2lsbCAke1BJRH0gPiAv
 ZGV2L251bGwgMj4gL2Rldi9udWxsCi0JCWlmIFsgJD8gLWVxIDAgXTsgdGhlbgotCQkJZWNobyAi
 IFsgRE9ORSBdIgotCQllbHNlCi0JCQllY2hvICIgWyBGQUlMRUQgXSIKLQkJZmkKLQkJZWNobyAt
 biAiPj4gUmVtb3ZpbmcgUElEIGZpbGUgKCR7UElEX0ZJTEV9KS4uLiIKLQkJcm0gJHtQSURfRklM
 RX0gPiAvZGV2L251bGwgMj4gL2Rldi9udWxsCi0JCWlmIFsgJD8gLWVxIDAgXTsgdGhlbgotCQkJ
 ZWNobyAiIFsgRE9ORSBdIgotCQllbHNlCi0JCQllY2hvICIgWyBGQUlMRUQgXSIKLQkJZmkKLQlm
 aQotZmkKLQotZXhpdCAwCkluZGV4OiBwa2ctaW5zdGFsbAo9PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBw
 a2ctaW5zdGFsbApkaWZmIC1OIHBrZy1pbnN0YWxsCi0tLSBwa2ctaW5zdGFsbAkyNiBBcHIgMjAw
 MiAyMTo1NDoxNSAtMDAwMAkxLjEKKysrIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0w
 MDAwCkBAIC0xLDQ2ICswLDAgQEAKLSMhL2Jpbi9zaAotIwotIyBDaGVja3MgaWYgdGhlICd3d3cn
 IHVzZXIgYW5kIGdyb3VwIGV4aXN0LiBJZiB0aGV5IGRvbid0LCB0aGVuCi0jIGFuIGF0dGVtcHQg
 aXMgbWFkZSB0byBjcmVhdGUgYm90aC4KLSMKLSMgJEZyZWVCU0Q6IHBvcnRzL2phdmEvamJvc3M0
 L3BrZy1pbnN0YWxsLHYgMS4xIDIwMDIvMDQvMjYgMjE6NTQ6MTUgem5lcmQgRXhwICQKLSMKLQot
 IyBNYWtlIHN1cmUgd2UncmUgY2FsbGVkIGR1cmluZyB0aGUgJ21ha2UgaW5zdGFsbCcgcHJvY2Vz
 cwotaWYgWyAiJDIiICE9ICJQUkUtSU5TVEFMTCIgXTsgdGhlbgotICAgIGV4aXQgMAotZmkKLQot
 IyBTZXQgc29tZSBjb25zdGFudHMKLVVTRVI9d3d3Ci1HUk9VUD0ke1VTRVJ9Ci1VSUQ9ODAKLUdJ
 RD0ke1VJRH0KLQotIyBTZWUgaWYgdGhlIGdyb3VwIGFscmVhZHkgZXhpc3RzCi1pZiAhIHB3IGdy
 b3Vwc2hvdyAiJHtHUk9VUH0iIDI+L2Rldi9udWxsIDE+JjI7IHRoZW4KLQotCSMgSWYgbm90LCB0
 cnkgdG8gY3JlYXRlIGl0Ci0JaWYgcHcgZ3JvdXBhZGQgJHtHUk9VUH0gLWcgJHtHSUR9OyB0aGVu
 Ci0JCWVjaG8gIkFkZGVkIGdyb3VwIFwiJHtHUk9VUH1cIi4iCi0JZWxzZQotCQllY2hvICJBZGRp
 bmcgZ3JvdXAgXCIke0dST1VQfVwiIGZhaWxlZC4uLiIKLQkJZXhpdCAxCi0JZmkKLWZpCi0KLSMg
 U2VlIGlmIHRoZSB1c2VyIGFscmVhZHkgZXhpc3RzCi1pZiAhIHB3IHVzZXJzaG93ICIke1VTRVJ9
 IiAyPi9kZXYvbnVsbCAxPiYyOyB0aGVuCi0KLQkjIElmIG5vdCwgdHJ5IHRvIGNyZWF0ZSBpdAot
 CWlmIHB3IHVzZXJhZGQgJHtVU0VSfSAtdSAke1VJRH0gLWcgJHtHUk9VUH0gLWggLSBcCi0JCS1z
 ICIvc2Jpbi9ub2xvZ2luIiAtZCAiL25vbmV4aXN0ZW50IiBcCi0JCS1jICJXb3JsZCBXaWRlIFdl
 YiBPd25lciI7IFwKLQl0aGVuCi0JCWVjaG8gIkFkZGVkIHVzZXIgXCIke1VTRVJ9XCIuIgotCWVs
 c2UKLQkJZWNobyAiQWRkaW5nIHVzZXIgXCIke1VTRVJ9XCIgZmFpbGVkLi4uIgotCQlleGl0IDEK
 LQlmaQotZmkKLWV4aXQgMApJbmRleDogZmlsZXMvZGFlbW9uY3RsLjEKPT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg
 ZmlsZTogZmlsZXMvZGFlbW9uY3RsLjEKZGlmZiAtTiBmaWxlcy9kYWVtb25jdGwuMQotLS0gZmls
 ZXMvZGFlbW9uY3RsLjEJMjEgSnVuIDIwMDQgMTY6NDI6NTkgLTAwMDAJMS4xCisrKyAvZGV2L251
 bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMApAQCAtMSw3OCArMCwwIEBACi0uRGQgRmVicnVh
 cnkgMjEsIDIwMDIKLS5EdCAlJUNPTlRST0xfU0NSSVBUX01BTlBBR0VfVElUTEUlJSAxCi0uT3Mg
 RnJlZUJTRAotLlNoIE5BTUUKLS5ObSAlJUNPTlRST0xfU0NSSVBUX05BTUUlJQotLk5kICUlQVBQ
 X1RJVExFJSUgc2VydmVyIGNvbnRyb2wgaW50ZXJmYWNlCi0uU2ggU1lOT1BTSVMKLS5ObQotLk9w
 IEZsIGphdmEtb3B0aW9ucwotLkFyIHtzdGFydHxyZXN0YXJ0fHN0b3B9Ci0uU2ggREVTQ1JJUFRJ
 T04KLVRoZQotLk5tCi1wcm9ncmFtIHByb3ZpZGVzIGFuIHJlc3RyaWN0ZWQgaW50ZXJmYWNlIHRv
 IHRoZSAlJUFQUF9USVRMRSUlCi1hcHBsaWNhdGlvbiBzZXJ2ZXIuIFRoZQotLk5tCi1wcm9ncmFt
 IGlzIG9ubHkgYWNjZXNzaWJsZSB0byB1c2VycyBpbiB0aGUgJ3d3dycgZ3JvdXAsIGFuZCB3aWxs
 Ci1vbmx5IGludm9rZSB0aGUgJSVKQVZBX1BPUlRfT1NfREVTQ1JJUFRJT04lJSAlJUpBVkFfUE9S
 VF9WRVJTSU9OJSUgSlZNLgotLlBwCi1BbnkgSmF2YSBvcHRpb25zIGxpc3RlZCBhcmUgaGFuZGVk
 IG9mZiBkaXJlY3RseSB0byB0aGUgSlZNLiBBbnkKLWNsYXNzcGF0aCBvcHRpb25zIHdpbGwgYmUg
 aWdub3JlZC4KLS5QcAotVGhlIHByb2dyYW0gZXhwZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgZm9s
 bG93aW5nIHRlcm1pbmF0aW5nIGNvbW1hbmRzOgotLkJsIC10YWcgLXdpZHRoIGluZGVudAotLkl0
 IEFyIHN0YXJ0Ci1TdGFydCAlJUFQUF9USVRMRSUlLCBpZiBpdCBpcyBub3QgYWxyZWFkeSBydW5u
 aW5nLgotLkl0IEFyIHJlc3RhcnQKLVJlc3RhcnQgJSVBUFBfVElUTEUlJS4gSWYgaXQgaXMgYWxy
 ZWFkeSBydW5uaW5nLCB0aGVuIGl0IHdpbGwgYmUgc3RvcHBlZCBhbmQKLXRoZW4gc3RhcnRlZCBy
 aWdodCBhZnRlciB0aGF0LiBPdGhlcndpc2UgaXQgd2lsbCBqdXN0IGJlIHN0YXJ0ZWQgdXAuCi0u
 SXQgQXIgc3RvcAotU3RvcCAlJUFQUF9USVRMRSUlLCBpZiBpdCBpcyBhY3R1YWxseSBydW5uaW5n
 LgotLkVsCi0uU2ggRVJST1JTCi1UaGUgZm9sbG93aW5nIGVycm9yIGNvbmRpdGlvbnMgYXJlIGRl
 dGVjdGVkLiBUaGV5IHdpbGwgYmUgY2hlY2tlZCBpbiB0aGUKLXNwZWNpZmllZCBvcmRlci4gSW4g
 ZWFjaCBjYXNlIGFuIGVycm9yIG1lc3NhZ2UgaXMgcHJpbnRlZCB3aXRoIHRoZSBuYW1lIG9mIHRo
 ZQotY29udHJvbCBwcm9ncmFtIHByZXBlbmRlZC4KLS5QcAotSWYgbm8gYXJndW1lbnQgaXMgcGFz
 c2VkLCB0aGVuIGEgc2ltcGxlIGhlbHAgbWVzc2FnZSBpcyBwcmludGVkIGFuZCB0aGUKLXByb2dy
 YW0gZXhpc3RzIHdpdGggZXJyb3IgY29kZSAwLgotLlBwCi1JZiBhdCBsZWFzdCBvbmUgYXJndW1l
 bnQgaXMgcGFzc2VkLCBidXQgaXQgaXMgZGlmZmVyZW50IGZyb20KLS5BciBzdGFydCAsCi0uQXIg
 cmVzdGFydAotb3IKLS5BciBzdG9wCi10aGVuIHRoZSBoZWxwIG1lc3NhZ2UgaXMgcHJpbnRlZCBh
 cyB3ZWxsLCBhbmQgdGhlIHByb2dyYW0gZXhpdHMgd2l0aCBlcnJvcgotY29kZSAxLgotLlBwCi1U
 aGUgZm9sbG93aW5nIGVycm9ycyBjb25kaXRpb25zIGFyZSBkZWZpbmVkOgotLkJsIC10YWcgLXdp
 ZHRoIGluZGVudAotLkl0IEVtIElsbGVnYWwgcHJvZ3JhbSBhcmd1bWVudCAoZXJyb3IgY29kZSAx
 KQotLkl0IEVtIFBJRCBmaWxlIG5vdCBmb3VuZCAoZXJyb3IgY29kZSAyKQotLkl0IEVtIFBJRCBm
 aWxlIHRvbyBsYXJnZSAoZXJyb3IgY29kZSAzKQotLkl0IEVtIFBJRCBmaWxlIGNvbnRhaW5zIGls
 bGVnYWwgY2hhcmFjdGVyIChlcnJvciBjb2RlIDQpCi0uSXQgRW0gS2lsbCBvZiBwcm9jZXNzIGZh
 aWxlZCAoZXJyb3IgY29kZSA1KQotLkl0IEVtICUlQVBQX1RJVExFJSUgaXMgYWxyZWFkeSBydW5u
 aW5nIChlcnJvciBjb2RlIDYpCi0uSXQgRW0gJSVBUFBfVElUTEUlJSBpcyBub3QgcnVubmluZyAo
 ZXJyb3IgY29kZSA3KQotLkl0IEVtIFVuYWJsZSB0byBjaGRpciB0byB0aGUgJSVBUFBfVElUTEUl
 JSBob21lIGRpcmVjdG9yeSAoZXJyb3IgY29kZSA4KQotLkl0IEVtIFVuYWJsZSB0byBvcGVuIHRo
 ZSBzdGRvdXQgbG9nIGZpbGUgKGVycm9yIGNvZGUgOSkKLS5JdCBFbSBVbmFibGUgdG8gb3BlbiB0
 aGUgc3RkZXJyIGxvZyBmaWxlIChlcnJvciBjb2RlIDEwKQotLkl0IEVtIFVuYWJsZSB0byBzdGFy
 dCAlJUFQUF9USVRMRSUlIChlcnJvciBjb2RlIDExKQotLkVsCi0uU2ggRklMRVMKLS5CbCAtdGFn
 IC13aWR0aCAtaW5kZW50Ci0uSXQgUGEgJSVQSURfRklMRSUlCi1UaGUgJSVBUFBfVElUTEUlJSBQ
 SUQgZmlsZSB0aGF0IGlzIHVzZWQgdG8gc3RvcmUgdGhlIHByb2Nlc3MgSUQgb2YgdGhlCi1jdXJy
 ZW50bHkgcnVubmluZyBwcm9jZXNzIGluLiBJdCBpcyBlbXB0aWVkIGFzIHNvb24gYXMgdGhlIHNl
 cnZlciBpcyBzdG9wcGVkCi1hbmQgZmlsbGVkIHdpdGggdGhlIHByb2Nlc3MgSUQgd2hlbiBpdCBp
 cyBzdGFydGVkLiBJdCBzaG91bGQgbmV2ZXIgYmUgd3JpdGFibGUKLWZvciBhbnlvbmUgYnV0Ci0u
 RW0gd3d3ICwKLS5JdCBQYSAlJVNUQVJUVVBfU0NSSVBUJSUKLUEgc2NyaXB0IHRoYXQgc3RhcnRz
 IHRoZQotLk5tCi1wcm9ncmFtLiBJdCBpcyB1c2VkIHRvIHN0YXJ0ICUlQVBQX1RJVExFJSUgYXQg
 c3RhcnR1cCB0aW1lLgotLkVsCi0uU2ggQVVUSE9SUwotLkFuIEVybnN0IGRlIEhhYW4gQXEgem5l
 cmRARnJlZUJTRC5vcmcKLS5BbiBKb25hdGhhbiBDaGVuIEFxIGpvbmNAY2hlbi5vcmcubnoKSW5k
 ZXg6IGZpbGVzL2RhZW1vbmN0bC4xLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IGZpbGVzL2RhZW1v
 bmN0bC4xLmluCmRpZmYgLU4gZmlsZXMvZGFlbW9uY3RsLjEuaW4KLS0tIC9kZXYvbnVsbAkxIEph
 biAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBmaWxlcy9kYWVtb25jdGwuMS5pbgkyMSBKdW4gMjAw
 NCAxNjo0Mjo1OSAtMDAwMApAQCAtMCwwICsxLDc4IEBACisuRGQgRmVicnVhcnkgMjEsIDIwMDIK
 Ky5EdCAlJUNPTlRST0xfU0NSSVBUX01BTlBBR0VfVElUTEUlJSAxCisuT3MgRnJlZUJTRAorLlNo
 IE5BTUUKKy5ObSAlJUNPTlRST0xfU0NSSVBUX05BTUUlJQorLk5kICUlQVBQX1RJVExFJSUgc2Vy
 dmVyIGNvbnRyb2wgaW50ZXJmYWNlCisuU2ggU1lOT1BTSVMKKy5ObQorLk9wIEZsIGphdmEtb3B0
 aW9ucworLkFyIHtzdGFydHxyZXN0YXJ0fHN0b3B9CisuU2ggREVTQ1JJUFRJT04KK1RoZQorLk5t
 Citwcm9ncmFtIHByb3ZpZGVzIGFuIHJlc3RyaWN0ZWQgaW50ZXJmYWNlIHRvIHRoZSAlJUFQUF9U
 SVRMRSUlCithcHBsaWNhdGlvbiBzZXJ2ZXIuIFRoZQorLk5tCitwcm9ncmFtIGlzIG9ubHkgYWNj
 ZXNzaWJsZSB0byB1c2VycyBpbiB0aGUgJ3d3dycgZ3JvdXAsIGFuZCB3aWxsCitvbmx5IGludm9r
 ZSB0aGUgJSVKQVZBX1BPUlRfT1NfREVTQ1JJUFRJT04lJSAlJUpBVkFfUE9SVF9WRVJTSU9OJSUg
 SlZNLgorLlBwCitBbnkgSmF2YSBvcHRpb25zIGxpc3RlZCBhcmUgaGFuZGVkIG9mZiBkaXJlY3Rs
 eSB0byB0aGUgSlZNLiBBbnkKK2NsYXNzcGF0aCBvcHRpb25zIHdpbGwgYmUgaWdub3JlZC4KKy5Q
 cAorVGhlIHByb2dyYW0gZXhwZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgZm9sbG93aW5nIHRlcm1p
 bmF0aW5nIGNvbW1hbmRzOgorLkJsIC10YWcgLXdpZHRoIGluZGVudAorLkl0IEFyIHN0YXJ0CitT
 dGFydCAlJUFQUF9USVRMRSUlLCBpZiBpdCBpcyBub3QgYWxyZWFkeSBydW5uaW5nLgorLkl0IEFy
 IHJlc3RhcnQKK1Jlc3RhcnQgJSVBUFBfVElUTEUlJS4gSWYgaXQgaXMgYWxyZWFkeSBydW5uaW5n
 LCB0aGVuIGl0IHdpbGwgYmUgc3RvcHBlZCBhbmQKK3RoZW4gc3RhcnRlZCByaWdodCBhZnRlciB0
 aGF0LiBPdGhlcndpc2UgaXQgd2lsbCBqdXN0IGJlIHN0YXJ0ZWQgdXAuCisuSXQgQXIgc3RvcAor
 U3RvcCAlJUFQUF9USVRMRSUlLCBpZiBpdCBpcyBhY3R1YWxseSBydW5uaW5nLgorLkVsCisuU2gg
 RVJST1JTCitUaGUgZm9sbG93aW5nIGVycm9yIGNvbmRpdGlvbnMgYXJlIGRldGVjdGVkLiBUaGV5
 IHdpbGwgYmUgY2hlY2tlZCBpbiB0aGUKK3NwZWNpZmllZCBvcmRlci4gSW4gZWFjaCBjYXNlIGFu
 IGVycm9yIG1lc3NhZ2UgaXMgcHJpbnRlZCB3aXRoIHRoZSBuYW1lIG9mIHRoZQorY29udHJvbCBw
 cm9ncmFtIHByZXBlbmRlZC4KKy5QcAorSWYgbm8gYXJndW1lbnQgaXMgcGFzc2VkLCB0aGVuIGEg
 c2ltcGxlIGhlbHAgbWVzc2FnZSBpcyBwcmludGVkIGFuZCB0aGUKK3Byb2dyYW0gZXhpc3RzIHdp
 dGggZXJyb3IgY29kZSAwLgorLlBwCitJZiBhdCBsZWFzdCBvbmUgYXJndW1lbnQgaXMgcGFzc2Vk
 LCBidXQgaXQgaXMgZGlmZmVyZW50IGZyb20KKy5BciBzdGFydCAsCisuQXIgcmVzdGFydAorb3IK
 Ky5BciBzdG9wCit0aGVuIHRoZSBoZWxwIG1lc3NhZ2UgaXMgcHJpbnRlZCBhcyB3ZWxsLCBhbmQg
 dGhlIHByb2dyYW0gZXhpdHMgd2l0aCBlcnJvcgorY29kZSAxLgorLlBwCitUaGUgZm9sbG93aW5n
 IGVycm9ycyBjb25kaXRpb25zIGFyZSBkZWZpbmVkOgorLkJsIC10YWcgLXdpZHRoIGluZGVudAor
 Lkl0IEVtIElsbGVnYWwgcHJvZ3JhbSBhcmd1bWVudCAoZXJyb3IgY29kZSAxKQorLkl0IEVtIFBJ
 RCBmaWxlIG5vdCBmb3VuZCAoZXJyb3IgY29kZSAyKQorLkl0IEVtIFBJRCBmaWxlIHRvbyBsYXJn
 ZSAoZXJyb3IgY29kZSAzKQorLkl0IEVtIFBJRCBmaWxlIGNvbnRhaW5zIGlsbGVnYWwgY2hhcmFj
 dGVyIChlcnJvciBjb2RlIDQpCisuSXQgRW0gS2lsbCBvZiBwcm9jZXNzIGZhaWxlZCAoZXJyb3Ig
 Y29kZSA1KQorLkl0IEVtICUlQVBQX1RJVExFJSUgaXMgYWxyZWFkeSBydW5uaW5nIChlcnJvciBj
 b2RlIDYpCisuSXQgRW0gJSVBUFBfVElUTEUlJSBpcyBub3QgcnVubmluZyAoZXJyb3IgY29kZSA3
 KQorLkl0IEVtIFVuYWJsZSB0byBjaGRpciB0byB0aGUgJSVBUFBfVElUTEUlJSBob21lIGRpcmVj
 dG9yeSAoZXJyb3IgY29kZSA4KQorLkl0IEVtIFVuYWJsZSB0byBvcGVuIHRoZSBzdGRvdXQgbG9n
 IGZpbGUgKGVycm9yIGNvZGUgOSkKKy5JdCBFbSBVbmFibGUgdG8gb3BlbiB0aGUgc3RkZXJyIGxv
 ZyBmaWxlIChlcnJvciBjb2RlIDEwKQorLkl0IEVtIFVuYWJsZSB0byBzdGFydCAlJUFQUF9USVRM
 RSUlIChlcnJvciBjb2RlIDExKQorLkVsCisuU2ggRklMRVMKKy5CbCAtdGFnIC13aWR0aCAtaW5k
 ZW50CisuSXQgUGEgJSVQSURfRklMRSUlCitUaGUgJSVBUFBfVElUTEUlJSBQSUQgZmlsZSB0aGF0
 IGlzIHVzZWQgdG8gc3RvcmUgdGhlIHByb2Nlc3MgSUQgb2YgdGhlCitjdXJyZW50bHkgcnVubmlu
 ZyBwcm9jZXNzIGluLiBJdCBpcyBlbXB0aWVkIGFzIHNvb24gYXMgdGhlIHNlcnZlciBpcyBzdG9w
 cGVkCithbmQgZmlsbGVkIHdpdGggdGhlIHByb2Nlc3MgSUQgd2hlbiBpdCBpcyBzdGFydGVkLiBJ
 dCBzaG91bGQgbmV2ZXIgYmUgd3JpdGFibGUKK2ZvciBhbnlvbmUgYnV0CisuRW0gd3d3ICwKKy5J
 dCBQYSAlJVNUQVJUVVBfU0NSSVBUJSUKK0Egc2NyaXB0IHRoYXQgc3RhcnRzIHRoZQorLk5tCitw
 cm9ncmFtLiBJdCBpcyB1c2VkIHRvIHN0YXJ0ICUlQVBQX1RJVExFJSUgYXQgc3RhcnR1cCB0aW1l
 LgorLkVsCisuU2ggQVVUSE9SUworLkFuIEVybnN0IGRlIEhhYW4gQXEgem5lcmRARnJlZUJTRC5v
 cmcKKy5BbiBKb25hdGhhbiBDaGVuIEFxIGpvbmNAY2hlbi5vcmcubnoKSW5kZXg6IGZpbGVzL2Rh
 ZW1vbmN0bC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IGZpbGVzL2RhZW1vbmN0bC5jCmRpZmYgLU4g
 ZmlsZXMvZGFlbW9uY3RsLmMKLS0tIGZpbGVzL2RhZW1vbmN0bC5jCTIyIERlYyAyMDA0IDIwOjQ0
 OjIzIC0wMDAwCTEuMworKysgL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKQEAg
 LTEsNTU3ICswLDAgQEAKLS8qCi0gKiAtKi0gbW9kZTogRnVuZGFtZW50YWw7IHRhYi13aWR0aDog
 NDsgLSotCi0gKiBleDp0cz00Ci0gKgotICogRGFlbW9uIGNvbnRyb2wgcHJvZ3JhbSwgd2l0aCBK
 YXZhIFN0YXJ0dXAgb3B0aW9ucy4KLSAqCi0gKglPcmlnaW5hbCBieSBFcm5zdCBkZSBIYWFuIDx6
 bmVyZEBmcmVlYnNkLm9yZz4KLSAqCXd3dy9qYWthcnRhLXRvbWNhdDQvZmlsZXMvZGFlbW9uY3Rs
 LmMKLSAqCi0gKiAkRnJlZUJTRDogcG9ydHMvamF2YS9qYm9zczQvZmlsZXMvZGFlbW9uY3RsLmMs
 diAxLjMgMjAwNC8xMi8yMiAyMDo0NDoyMyBocSBFeHAgJAotICovCi0KLSNpbmNsdWRlIDxhc3Nl
 cnQuaD4KLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPHNpZ25hbC5oPgotI2luY2x1ZGUg
 PHN0ZGFyZy5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5j
 bHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8c3lzbG9nLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+
 Ci0jaW5jbHVkZSA8c3lzL2Vycm5vLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRl
 IDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvdWlvLmg+Ci0KLSNkZWZpbmUJVFJVRQkxCi0j
 ZGVmaW5lCUZBTFNFCTAKLQotLyogVGhlIGludGVydmFsIGluIHNlY29uZHMgYmV0d2VlbiB0aGUg
 Y2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGUgcHJvY2VzcwotICAgZGllZCBhZnRlciBhIGtpbGwgKi8K
 LSNkZWZpbmUgU1RPUF9USU1FX0lOVEVSVkFMCQkxCi0KLSNkZWZpbmUgRVJSX0lMTEVHQUxfQVJH
 VU1FTlQJCQkJMQotI2RlZmluZSBFUlJfUElEX0ZJTEVfTk9UX0ZPVU5ECQkJCTIKLSNkZWZpbmUg
 RVJSX0tJTExfRkFJTEVECQkJCQkJNQotI2RlZmluZSBFUlJfQUxSRUFEWV9SVU5OSU5HCQkJCQk2
 Ci0jZGVmaW5lIEVSUl9OT1RfUlVOTklORwkJCQkJCTcKLSNkZWZpbmUgRVJSX0NIRElSX1RPX0FQ
 UF9IT01FCQkJCTgKLSNkZWZpbmUgRVJSX0FDQ0VTU19KQVJfRklMRQkJCQkJMTcKLSNkZWZpbmUg
 RVJSX1NURE9VVF9MT0dGSUxFX09QRU4JCQkJOQotI2RlZmluZSBFUlJfU1RERVJSX0xPR0ZJTEVf
 T1BFTgkJCQkxMAotI2RlZmluZSBFUlJfRk9SS19GQUlMRUQJCQkJCQkxMQotI2RlZmluZSBFUlJf
 U1RBVF9KQVZBX0hPTUUJCQkJCTEyCi0jZGVmaW5lIEVSUl9KQVZBX0hPTUVfTk9UX0RJUgkJCQkx
 MwotI2RlZmluZSBFUlJfU1RBVF9KQVZBX0NNRAkJCQkJMTQKLSNkZWZpbmUgRVJSX0pBVkFfQ01E
 X05PVF9GSUxFCQkJCTE1Ci0jZGVmaW5lIEVSUl9KQVZBX0NNRF9OT1RfRVhFQ1VUQUJMRQkJCTE2
 Ci0KLS8qCi0JRnVuY3Rpb24gZGVjbGFyYXRpb25zLgotICovCi1zdGF0aWMgdm9pZCBwcmludFVz
 YWdlICh2b2lkKTsKLXN0YXRpYyBpbnQgcmVhZFBJRCAodm9pZCk7Ci1zdGF0aWMgdm9pZCB3cml0
 ZVBJRCAoaW50IHBpZCk7Ci1zdGF0aWMgdm9pZCBjbGVhclBJRCAodm9pZCk7Ci1zdGF0aWMgdm9p
 ZCBzdGFydCAoaW50IGphdmFPcHQsIGNoYXIgKiBqYXZhQXJncyBbXSwgaW50IGpib3NzT3B0LCBj
 aGFyICogamJvc3NBcmdzIFtdKTsKLXN0YXRpYyB2b2lkIHN0b3AgKHZvaWQpOwotc3RhdGljIHZv
 aWQgcmVzdGFydCAoaW50IGphdmFPcHQsIGNoYXIgKiBqYXZhQXJncyBbXSwgaW50IGpib3NzT3B0
 LCBjaGFyICogamJvc3NBcmdzIFtdKTsKLXN0YXRpYyB2b2lkIGxvZ091dHB1dCAoY2hhciAqKTsK
 LQotLyoKLQlHbG9iYWxzCi0gKi8KLXN0YXRpYyBpbnQgaXNRdWlldCA9IEZBTFNFOwotc3RhdGlj
 IGNoYXIgKiBvcHRRdWlldCA9ICItcSIsCQkJLyogcXVpZXQgb3B0aW9uICovCi0JCQkqIG9wdENv
 bmZpZyA9ICItY29uZmlnIjsJLyogamJvc3MgY29uZmlndXJhdGlvbiBvcHRpb24gKi8KLQotLyoq
 Ci0gKiBNYWluIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoaXMgcHJv
 Z3JhbSBpcyBleGVjdXRlZC4KLSAqCi0gKiBAcGFyYW0gYXJnYwotICogICAgdGhlIG51bWJlciBv
 ZiBhcmd1bWVudHMgcGx1cyBvbmUsIHNvIGFsd2F5cyBncmVhdGVyIHRoYW4gMC4KLSAqCi0gKiBA
 cGFyYW0gYXJndgotICogICAgdGhlIGFyZ3VtZW50cyBpbiBhbiBhcnJheSBvZiBjaGFyYWN0ZXIg
 cG9pbnRlcnMsIHdoZXJlIHRoZSBsYXN0IGFyZ3VtZW50Ci0gKiAgICBlbGVtZW50IGlzIGZvbGxv
 d2VkIGJ5IGEgTlVMTCBlbGVtZW50LgotICovCi1pbnQKLW1haW4gKAotIGludCBhcmdjLAotIGNo
 YXIgKmFyZ3YgW10pCi17Ci0JLyogRGVjbGFyZSB2YXJpYWJsZXMsIGxpa2UgYWxsIG90aGVyIGdv
 b2QgQU5TSSBDIHByb2dyYW1zIGRvIDopICovCi0JaW50IGksIGphdmFPcHQsIGpib3NzT3B0Owot
 CWNoYXIgKmFyZ3VtZW50LCAqKmphdmFBcmdzLCAqKmpib3NzQXJnczsKLQotCS8qIFBhcnNlIHRo
 ZSBhcmd1bWVudHMgKi8KLQlpZiAoYXJnYyA8IDIpCi0JewotCQlwcmludFVzYWdlICgpOwotCQly
 ZXR1cm4gMDsKLQl9Ci0KLQkvKiBYWFg6IEZpeCBmb3Igc2V0dGluZyB1cCB0aGUgZW52aXJvbm1l
 bnQgZm9yIHRoZSBqYXZhIHdyYXBwZXIgc2NyaXB0ICovCi0Jc2V0dWlkIChnZXRldWlkICgpKTsK
 LQlzZXRnaWQgKGdldGVnaWQgKCkpOwotCi0JLyoKLQkJQnVpbGQgdXAgamF2YSBhbmQgamJvc3Mg
 b3B0aW9uIGJsb2Nrcy4KLQkgKi8KLQlqYXZhT3B0ID0gamJvc3NPcHQgPSAwOwotCWZvciAoaSA9
 IDE7IGkgPCBhcmdjOyBpKyspCi0JewotCQlpZiAoc3RyY21wIChhcmd2IFtpXSwgb3B0UXVpZXQp
 ID09IDApCi0JCXsKLQkJCWlzUXVpZXQgPSBUUlVFOwotCi0JCX0gZWxzZSBpZiAoc3RyY21wIChh
 cmd2IFtpXSwgb3B0Q29uZmlnKSA9PSAwKQotCQl7Ci0JCQlqYm9zc09wdCArPSAyOwotCQkJaWYg
 KCsraSA+PSBhcmdjKQotCQkJewotCQkJCXByaW50VXNhZ2UgKCk7Ci0JCQkJcmV0dXJuIEVSUl9J
 TExFR0FMX0FSR1VNRU5UOwotCQkJfQotCi0JCX0gZWxzZSBpZiAoKmFyZ3YgW2ldID09ICctJykK
 LQkJewotCQkJamF2YU9wdCsrOwotCQl9Ci0JfQotCWlmIChqYXZhT3B0ID09IDApCi0JCWphdmFB
 cmdzID0gTlVMTDsKLQllbHNlCi0JewotCQlpbnQgaiA9IDA7Ci0JCWphdmFBcmdzID0gbWFsbG9j
 IChzaXplb2YgKGNoYXIgKikgKiBqYXZhT3B0KTsKLQkJZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkr
 KykKLQkJewotCQkJaWYgKHN0cmNtcCAoYXJndiBbaV0sIG9wdFF1aWV0KSAmJgotCQkJCXN0cmNt
 cCAoYXJndiBbaV0sIG9wdENvbmZpZykgJiYKLQkJCQkqYXJndiBbaV0gPT0gJy0nKQotCQkJewot
 CQkJCWphdmFBcmdzIFtqKytdID0gYXJndiBbaV07Ci0JCQl9Ci0JCX0KLQl9Ci0JaWYgKGpib3Nz
 T3B0ID09IDApCi0JCWpib3NzQXJncyA9IE5VTEw7Ci0JZWxzZQotCXsKLQkJaW50IGogPSAwOwot
 CQlqYm9zc0FyZ3MgPSBtYWxsb2MgKHNpemVvZiAoY2hhciAqKSAqIGpib3NzT3B0KTsKLQkJZm9y
 IChpID0gMDsgaSA8IGFyZ2M7IGkrKykKLQkJewotCQkJaWYgKHN0cmNtcCAoYXJndiBbaV0sIG9w
 dENvbmZpZykgPT0gMCkKLQkJCXsKLQkJCQlqYm9zc0FyZ3MgW2orK10gPSAiLWMiOwotCQkJCWpi
 b3NzQXJncyBbaisrXSA9IGFyZ3YgWysraV07Ci0JCQl9Ci0JCX0KLQl9Ci0KLQkvKgotCQlEZWNp
 ZGUgb24ganVzdCB3aGF0IHRvIGNhbGwuCi0JICovCi0JYXJndW1lbnQgPSBhcmd2IFthcmdjIC0g
 MV07Ci0JaWYgKHN0cmNtcCAoInN0YXJ0IiwgYXJndW1lbnQpID09IDApCi0JewotCQlzdGFydCAo
 amF2YU9wdCwgamF2YUFyZ3MsIGpib3NzT3B0LCBqYm9zc0FyZ3MpOwotCi0JfSBlbHNlIGlmIChz
 dHJjbXAgKCJzdG9wIiwgYXJndW1lbnQpID09IDApCi0JewotCQlzdG9wICgpOwotCi0JfSBlbHNl
 IGlmIChzdHJjbXAgKCJyZXN0YXJ0IiwgYXJndW1lbnQpID09IDApCi0JewotCQlyZXN0YXJ0IChq
 YXZhT3B0LCBqYXZhQXJncywgamJvc3NPcHQsIGpib3NzQXJncyk7Ci0KLQl9IGVsc2UgewotCQlm
 cHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogSWxsZWdhbCBhcmd1bWVu
 dCBcIiVzXCIuXG4iLCBhcmd1bWVudCk7Ci0JCXByaW50VXNhZ2UgKCk7Ci0JCWV4aXQgKEVSUl9J
 TExFR0FMX0FSR1VNRU5UKTsKLQl9Ci0KLQlyZXR1cm4gRVhJVF9TVUNDRVNTOwotfQotCi0vKioK
 LSAqIFByaW50cyB1c2FnZSBpbmZvcm1hdGlvbiB0byBzdGRvdXQuCi0gKi8KLXN0YXRpYyB2b2lk
 Ci1wcmludFVzYWdlICh2b2lkKQotewotCXByaW50ZiAoIlVzYWdlOiAlJUNPTlRST0xfU0NSSVBU
 X05BTUUlJSBbamF2YS1vcHRpb25zXSBbLWNvbmZpZyBqYm9zc2NvbmZpZ10ge3N0YXJ0fHN0b3B8
 cmVzdGFydH1cbiIpOwotfQotCi0vKioKLSAqIFJlYWRzIGEgUElEIGZyb20gdGhlIFBJRCBmaWxl
 LgotICoKLSAqIEByZXR1cm4KLSAqICAgIHRoZSBQSUQsIG9yIC0xIGlmIHRoZSBmaWxlIHdhcyBl
 bXB0eS4KLSAqLwotc3RhdGljIGludAotcmVhZFBJRCAodm9pZCkKLXsKLQlGSUxFICogZmlsZTsK
 LQlpbnQgcGlkOwotCi0JbG9nT3V0cHV0ICgiPj4gUmVhZGluZyBQSUQgZmlsZSAoJSVQSURfRklM
 RSUlKS4uLiIpOwotCWZpbGUgPSBmb3BlbiAoIiUlUElEX0ZJTEUlJSIsICJyIik7Ci0JaWYgKCFm
 aWxlKQotCXsKLQkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOwotCQlwZXJyb3IgKCIlJUNP
 TlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIG9wZW4gJSVQSURfRklMRSUlIGZvciByZWFk
 aW5nOiAiKTsKLQkJZXhpdCAoRVJSX1BJRF9GSUxFX05PVF9GT1VORCk7Ci0JfQotCWlmIChmc2Nh
 bmYgKGZpbGUsICIlZCIsICZwaWQpIDwgMSkKLQkJcGlkID0gLTE7Ci0JZmNsb3NlIChmaWxlKTsK
 LQotCWxvZ091dHB1dCAoIiBbIERPTkUgXVxuIik7Ci0JcmV0dXJuIHBpZDsKLX0KLQotLyoqCi0g
 KiBXcml0ZXMgYSBwcm9jZXNzIElEIHRvIHRoZSBzcGVjaWZpZWQgZmlsZS4gVGhlIGZpbGUgaXMg
 aWRlbnRpZmllZCBieSBhIGZpbGUKLSAqIGhhbmRsZS4KLSAqCi0gKiBAcGFyYW0gcGlkCi0gKiAg
 ICB0aGUgUElEIHRvIHN0b3JlLCBhbHdheXMgZ3JlYXRlciB0aGFuIDAuCi0gKi8KLXN0YXRpYyB2
 b2lkCi13cml0ZVBJRCAoCi0gaW50IHBpZCkKLXsKLQlGSUxFICogZmlsZTsKLQotCWxvZ091dHB1
 dCAoIj4+IFdyaXRpbmcgUElEIGZpbGUuLi4iKTsKLQlmaWxlID0gZm9wZW4gKCIlJVBJRF9GSUxF
 JSUiLCAidyIpOwotCWlmICghZmlsZSkKLQl7Ci0JCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4i
 KTsKLQkJcGVycm9yICgiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBvcGVuICUl
 UElEX0ZJTEUlJSBmb3Igd3JpdGluZzogIik7Ci0JCWV4aXQgKEVSUl9QSURfRklMRV9OT1RfRk9V
 TkQpOwotCX0KLQlmcHJpbnRmIChmaWxlLCAiJWRcbiIsIHBpZCk7Ci0JZmNsb3NlIChmaWxlKTsK
 LQotCWxvZ091dHB1dCAoIiBbIERPTkUgXVxuIik7Ci19Ci0KLS8qKgotCVRydW5jYXRlIHRoZSBQ
 SUQgZmlsZS4KLSAqLwotc3RhdGljIHZvaWQKLWNsZWFyUElEICh2b2lkKQotewotCWlmICh0cnVu
 Y2F0ZSAoIiUlUElEX0ZJTEUlJSIsIDApICE9IDApCi0JewotCQlwZXJyb3IgKCIlJUNPTlRST0xf
 U0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIGNsZWFyICUlUElEX0ZJTEUlJTogIik7Ci0JCWV4aXQg
 KEVSUl9QSURfRklMRV9OT1RfRk9VTkQpOwotCX0KLX0KLQotLyoqCi0gKiBDaGVja3MgaWYgdGhl
 IHNwZWNpZmllZCBwcm9jZXNzIGlzIHJ1bm5pbmcuCi0gKgotICogQHBhcmFtIHBpZAotICogICAg
 dGhlIHByb2Nlc3MgaWQsIGdyZWF0ZXIgdGhhbiAwLgotICoKLSAqIEByZXR1cm4KLSAqICAgIDAg
 aWYgdGhlIHNwZWNpZmllZCBwcm9jZXNzIGlzIG5vdCBydW5uaW5nLCBhIGRpZmZlcmVudCB2YWx1
 ZSBvdGhlcndpc2UuCi0gKi8KLXN0YXRpYyBpbnQKLWV4aXN0c1Byb2Nlc3MgKAotIGludCBwaWQp
 Ci17Ci0JaW50IHJlc3VsdDsKLQotCS8qIENoZWNrIHByZWNvbmRpdGlvbnMgKi8KLQlhc3NlcnQg
 KHBpZCA+IDApOwotCi0JLyogU2VlIGlmIHRoZSBwcm9jZXNzIGV4aXN0cyAqLwotICAgCXJlc3Vs
 dCA9IGtpbGwgKHBpZCwgMCk7Ci0KLQkvKiBJZiB0aGUgcmVzdWx0IGlzIDAsIHRoZW4gdGhlIHBy
 b2Nlc3MgZXhpc3RzICovCi0JcmV0dXJuIHJlc3VsdCA9PSAwOwotfQotCi0vKioKLSAqIEtpbGxz
 IHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkgdGhlIHNwZWNpZmllZCBJRC4KLSAqCi0gKiBAcGFy
 YW0gcGlkCi0gKiAgICB0aGUgcHJvY2VzcyBpZCwgZ3JlYXRlciB0aGFuIDAuCi0gKi8KLXN0YXRp
 YyB2b2lkCi1raWxsUHJvY2VzcyAoCi0gaW50IHBpZCkKLXsKLQlpbnQgcmVzdWx0OwotCXVuc2ln
 bmVkIGludCB3YWl0ZWQ7Ci0JdW5zaWduZWQgaW50IGZvcmNlZDsKLQl1bnNpZ25lZCBpbnQgaW50
 ZXJ2YWwgPSBTVE9QX1RJTUVfSU5URVJWQUw7Ci0JdW5zaWduZWQgaW50IHRpbWVvdXQgID0gJSVT
 VE9QX1RJTUVPVVQlJTsKLQotCS8qIENoZWNrIHByZWNvbmRpdGlvbnMgKi8KLQlhc3NlcnQgKHBp
 ZCA+IDApOwotCi0JaWYgKCFpc1F1aWV0KQotCQlwcmludGYgKCI+PiBUZXJtaW5hdGluZyBwcm9j
 ZXNzICVkLi4uIiwgcGlkKTsKLQlyZXN1bHQgPSBraWxsIChwaWQsIFNJR1RFUk0pOwotCWlmIChy
 ZXN1bHQgPCAwKSB7Ci0JCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKLQkJZnByaW50ZiAo
 c3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBraWxsIHByb2Nlc3Mg
 JWQ6ICIsIHBpZCk7Ci0JCXBlcnJvciAoTlVMTCk7Ci0JCWV4aXQgKEVSUl9LSUxMX0ZBSUxFRCk7
 Ci0JfQotCi0JLyogV2FpdCB1bnRpbCB0aGUgcHJvY2VzcyBpcyBhY3R1YWxseSBraWxsZWQgKi8K
 LSAgICByZXN1bHQgPSBleGlzdHNQcm9jZXNzIChwaWQpOwotCWZvciAod2FpdGVkPTA7IHJlc3Vs
 dCA9PSAxICYmIHdhaXRlZCA8IHRpbWVvdXQ7IHdhaXRlZCArPSBpbnRlcnZhbCkKLQl7Ci0JCWxv
 Z091dHB1dCAoIi4iKTsKLQkJZmZsdXNoIChzdGRvdXQpOwotCQlzbGVlcCAoaW50ZXJ2YWwpOwot
 ICAgIAlyZXN1bHQgPSBleGlzdHNQcm9jZXNzIChwaWQpOwotCX0KLQotCS8qIElmIHRoZSBwcm9j
 ZXNzIHN0aWxsIGV4aXN0cywgdGhlbiBoYXZlIG5vIG1lcmN5IGFuZCBraWxsIGl0ICovCi0JZm9y
 Y2VkID0gMDsKLQlpZiAocmVzdWx0ID09IDEpCi0JewotCQkvKiBGb3JjZSB0aGUgcHJvY2VzcyB0
 byBkaWUgKi8KLQkJcmVzdWx0ID0ga2lsbCAocGlkLCBTSUdLSUxMKTsKLQkJaWYgKHJlc3VsdCA9
 PSAwKSB7Ci0JCQlmb3JjZWQgPSAxOwotCQkJbG9nT3V0cHV0ICgiIFsgS0lMTEVEIF1cbiIpOwot
 CQkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFByb2Nlc3MgJWQg
 ZGlkIG5vdCB0ZXJtaW5hdGUgd2l0aGluICUlU1RPUF9USU1FT1VUJSUgc2VjLiBLaWxsZWQuXG4i
 LCBwaWQpOwotCQl9IGVsc2UgaWYgKHJlc3VsdCAhPSBFU1JDSCkgewotCQkJbG9nT3V0cHV0ICgi
 IFsgRkFJTEVEIF1cbiIpOwotCQkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9O
 QU1FJSU6IFVuYWJsZSB0byBraWxsIHByb2Nlc3MgJWQ6ICIsIHBpZCk7Ci0JCQlwZXJyb3IgKE5V
 TEwpOwotCQkJZXhpdCAoRVJSX0tJTExfRkFJTEVEKTsKLQkJfQotCX0KLQotCWlmIChmb3JjZWQg
 PT0gMCkgewotCQlsb2dPdXRwdXQgKCIgWyBET05FIF1cbiIpOwotCX0KLX0KLQotLyoqCi0gKiBT
 dGFydHMgdGhlIGRhZW1vbi4KLSAqLwotc3RhdGljIHZvaWQKLXN0YXJ0ICgKLSBpbnQgamF2YU9w
 dCwKLSBjaGFyICogamF2YUFyZ3MgW10sCi0gaW50IGpib3NzT3B0LAotIGNoYXIgKiBqYm9zc0Fy
 Z3MgW10pCi17Ci0JaW50IGksIGFyZ2M7Ci0JY2hhciAqKiBhcmd2OwotCWludCBwaWQ7Ci0JaW50
 IHJlc3VsdDsKLQlpbnQgc3Rkb3V0TG9nRmlsZTsKLQlpbnQgc3RkZXJyTG9nRmlsZTsKLQlzdHJ1
 Y3Qgc3RhdCBzYjsKLQotCXBpZCA9IHJlYWRQSUQgKCk7Ci0KLQlsb2dPdXRwdXQgKCI+PiBTdGFy
 dGluZyAlJUFQUF9USVRMRSUlICUlUE9SVFZFUlNJT04lJS4uLiIpOwotCWlmIChwaWQgIT0gLTEp
 Ci0JewotCQkvKiBDaGVjayBpZiB0aGUgcHJvY2VzcyBhY3R1YWxseSBleGlzdHMgKi8KLQkJcmVz
 dWx0ID0gZXhpc3RzUHJvY2VzcyAocGlkKTsKLQkJaWYgKHJlc3VsdCA9PSAxKQotCQl7Ci0JCQls
 b2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7Ci0JCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRS
 T0xfU0NSSVBUX05BTUUlJTogJSVBUFBfVElUTEUlJSAlJVBPUlRWRVJTSU9OJSUgaXMgYWxyZWFk
 eSBydW5uaW5nLCBQSUQgaXMgJWQuXG4iLCBwaWQpOwotCQkJZXhpdCAoRVJSX0FMUkVBRFlfUlVO
 TklORyk7Ci0JCX0KLQl9Ci0KLQkvKiBDaGVjayBpZiB0aGUgSkRLIGhvbWUgZGlyZWN0b3J5IGlz
 IGFjdHVhbGx5IGEgZGlyZWN0b3J5ICovCi0JcmVzdWx0ID0gc3RhdCAoIiUlSkFWQV9IT01FJSUi
 LCAmc2IpOwotCWlmIChyZXN1bHQgIT0gMCkgewotCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxu
 Iik7Ci0JCWZwcmludGYgKHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBVbmFibGUg
 dG8gc3RhdCAlJUpBVkFfSE9NRSUlOiAiKTsKLQkJcGVycm9yIChOVUxMKTsKLQkJZXhpdCAoRVJS
 X1NUQVRfSkFWQV9IT01FKTsKLQl9Ci0JaWYgKCFTX0lTRElSIChzYi5zdF9tb2RlKSkgewotCQls
 b2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7Ci0JCWZwcmludGYgKHN0ZGVyciwgIiUlQ09OVFJP
 TF9TQ1JJUFRfTkFNRSUlOiBKYXZhIGhvbWUgZGlyZWN0b3J5ICUlSkFWQV9IT01FJSUgaXMgbm90
 IGEgZGlyZWN0b3J5LlxuIik7Ci0JCWV4aXQgKEVSUl9KQVZBX0hPTUVfTk9UX0RJUik7Ci0JfQot
 Ci0JLyogQ2hlY2sgaWYgdGhlIEphdmEgY29tbWFuZCBpcyBhY3R1YWxseSBhbiBleGVjdXRhYmxl
 IHJlZ3VsYXIgZmlsZSAqLwotCXJlc3VsdCA9IHN0YXQgKCIlJUpBVkElJSIsICZzYik7Ci0JaWYg
 KHJlc3VsdCAhPSAwKSB7Ci0JCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKLQkJZnByaW50
 ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBzdGF0ICUlSkFW
 QSUlOiAiKTsKLQkJcGVycm9yIChOVUxMKTsKLQkJZXhpdCAoRVJSX1NUQVRfSkFWQV9DTUQpOwot
 CX0KLQlpZiAoIVNfSVNSRUcgKHNiLnN0X21vZGUpKSB7Ci0JCWxvZ091dHB1dCAoIiBbIEZBSUxF
 RCBdXG4iKTsKLQkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IEph
 dmEgY29tbWFuZCAlJUpBVkElJSBpcyBub3QgYSByZWd1bGFyIGZpbGUuXG4iKTsKLQkJZXhpdCAo
 RVJSX0pBVkFfQ01EX05PVF9GSUxFKTsKLQl9Ci0JcmVzdWx0ID0gYWNjZXNzICgiJSVKQVZBJSUi
 LCBYX09LKTsKLQlpZiAocmVzdWx0ICE9IDApIHsKLQkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1c
 biIpOwotCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogSmF2YSBj
 b21tYW5kICUlSkFWQSUlIGlzIG5vdCBleGVjdXRhYmxlOiAiKTsKLQkJcGVycm9yIChOVUxMKTsK
 LQkJZXhpdCAoRVJSX0pBVkFfQ01EX05PVF9FWEVDVVRBQkxFKTsKLQl9Ci0KLQkvKiBDaGFuZ2Ug
 ZGlyZWN0b3J5ICovCi0JcmVzdWx0ID0gY2hkaXIgKCIlJUFQUF9IT01FJSUiKTsKLQlpZiAocmVz
 dWx0IDwgMCkgewotCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7Ci0JCWZwcmludGYgKHN0
 ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBVbmFibGUgdG8gYWNjZXNzIGRpcmVjdG9y
 eSAlJUFQUF9IT01FJSU6ICIpOwotCQlwZXJyb3IgKE5VTEwpOwotCQlleGl0IChFUlJfQ0hESVJf
 VE9fQVBQX0hPTUUpOwotCX0KLQotCS8qIFNlZSBpZiB0aGUgSkFSIGZpbGUgZXhpc3RzICovCi0J
 cmVzdWx0ID0gYWNjZXNzICgiJSVBUFBfSE9NRSUlLyUlSkFSX0ZJTEUlJSIsIFJfT0spOwotCWlm
 IChyZXN1bHQgPCAwKSB7Ci0JCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKLQkJZnByaW50
 ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBhY2Nlc3MgSkFS
 IGZpbGUgJSVBUFBfSE9NRSUlLyUlSkFSX0ZJTEUlJTogIik7Ci0JCXBlcnJvciAoTlVMTCk7Ci0J
 CWV4aXQgKEVSUl9BQ0NFU1NfSkFSX0ZJTEUpOwotCX0KLQotCS8qIE9wZW4gdGhlIHN0ZG91dCBs
 b2cgZmlsZSAqLwotCXN0ZG91dExvZ0ZpbGUgPSBvcGVuICgiJSVTVERPVVRfTE9HJSUiLCBPX1dS
 T05MWSk7Ci0JaWYgKHN0ZG91dExvZ0ZpbGUgPCAwKSB7Ci0JCWxvZ091dHB1dCAoIiBbIEZBSUxF
 RCBdXG4iKTsKLQkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVu
 YWJsZSB0byBvcGVuICUlU1RET1VUX0xPRyUlIGZvciB3cml0aW5nOiAiKTsKLQkJcGVycm9yIChO
 VUxMKTsKLQkJZXhpdCAoRVJSX1NURE9VVF9MT0dGSUxFX09QRU4pOwotCX0KLQlsc2VlayAoc3Rk
 b3V0TG9nRmlsZSwgKG9mZl90KSAwLCBTRUVLX0VORCk7Ci0KLQkvKiBPcGVuIHRoZSBzdGRlcnIg
 bG9nIGZpbGUgKi8KLQlzdGRlcnJMb2dGaWxlID0gb3BlbiAoIiUlU1RERVJSX0xPRyUlIiwgT19X
 Uk9OTFkpOwotCWlmIChzdGRlcnJMb2dGaWxlIDwgMCkgewotCQlsb2dPdXRwdXQgKCIgWyBGQUlM
 RUQgXVxuIik7Ci0JCWZwcmludGYgKHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBV
 bmFibGUgdG8gb3BlbiAlJVNUREVSUl9MT0clJSBmb3Igd3JpdGluZzogIik7Ci0JCXBlcnJvciAo
 TlVMTCk7Ci0JCWV4aXQgKEVSUl9TVERFUlJfTE9HRklMRV9PUEVOKTsKLQl9Ci0JbHNlZWsgKHN0
 ZGVyckxvZ0ZpbGUsIChvZmZfdCkgMCwgU0VFS19FTkQpOwotCi0JLyogU3BsaXQgdGhpcyBwcm9j
 ZXNzIGluIHR3byAqLwotCXN3aXRjaCAocGlkID0gZm9yayAoKSkKLQl7Ci0JY2FzZSAtMToKLQkJ
 bG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOwotCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRS
 T0xfU0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIGZvcms6ICIpOwotCQlwZXJyb3IgKE5VTEwpOwot
 CQlleGl0IChFUlJfRk9SS19GQUlMRUQpOwotCQlicmVhazsKLQotCWNhc2UgMDoKLQkJLyogUmVk
 aXJlY3Qgc3Rkb3V0IHRvIGxvZyBmaWxlICovCi0JCWR1cDIgKHN0ZG91dExvZ0ZpbGUsIFNURE9V
 VF9GSUxFTk8pOwotCi0JCS8qIFJlZGlyZWN0IHN0ZGVyciB0byBsb2cgZmlsZSAqLwotCQlkdXAy
 IChzdGRlcnJMb2dGaWxlLCBTVERFUlJfRklMRU5PKTsKLQotCQkvKiBUT0RPOiBTdXBwb3J0IHJl
 ZGlyZWN0aW9uIG9mIGJvdGggc3Rkb3V0IGFuZCBzdGRlcnIgdG8gdGhlIHNhbWUKLQkJCQkgZmls
 ZSB1c2luZyBwaXBlICgyKSAqLwotCi0JCS8qCi0JCQlCdWlsZCB0aGUgYXJndW1lbnQgdmVjdG9y
 LCB3aXRoIHRoZSBqYXZhL2pib3NzIG9wdGlvbnMgaWYgYW55LgotCQkgKi8KLQkJYXJndiA9IG1h
 bGxvYyAoc2l6ZW9mIChjaGFyICopICogKGphdmFPcHQgKyBqYm9zc09wdCArIDUpKTsKLQkJYXJn
 YyA9IDA7Ci0JCWFyZ3YgW2FyZ2MrK10gPSAiJSVKQVZBJSUiOwotCQlmb3IgKGkgPSAwOyBpIDwg
 amF2YU9wdDsgaSsrKQotCQkJYXJndiBbYXJnYysrXSA9IGphdmFBcmdzIFtpXTsKLQkJYXJndiBb
 YXJnYysrXSA9ICItY3AiOwotCQlhcmd2IFthcmdjKytdID0gIiUlSkFWQV9DUCUlIjsKLQkJYXJn
 diBbYXJnYysrXSA9ICIlJUpBVkFfTUFJTiUlIjsKLQkJZm9yIChpID0gMDsgaSA8IGpib3NzT3B0
 OyBpKyspCi0JCQlhcmd2IFthcmdjKytdID0gamJvc3NBcmdzIFtpXTsKLQkJYXJndiBbYXJnYysr
 XSA9IE5VTEw7Ci0KLQkJLyogRXhlY3V0ZSB0aGUgY29tbWFuZCAqLwotCQlleGVjdiAoYXJndiBb
 MF0sIGFyZ3YpOwotCQlwZXJyb3IgKE5VTEwpOwotCQlicmVhazsKLQotCWRlZmF1bHQ6Ci0JCWxv
 Z091dHB1dCAoIiBbIERPTkUgXVxuIik7Ci0JCXdyaXRlUElEIChwaWQpOwotCX0KLX0KLQotLyoq
 Ci0gKiBTdG9wcyB0aGUgZGFlbW9uLgotICovCi1zdGF0aWMgdm9pZAotc3RvcCAodm9pZCkKLXsK
 LQlpbnQgcGlkOwotCi0JcGlkID0gcmVhZFBJRCAoKTsKLQotCWxvZ091dHB1dCAoIj4+IENoZWNr
 aW5nIGlmICUlQVBQX1RJVExFJSUgJSVQT1JUVkVSU0lPTiUlIGlzIHJ1bm5pbmcuLi4iKTsKLQot
 CS8qIElmIHRoZXJlIGlzIGEgUElELCBzZWUgaWYgdGhlIHByb2Nlc3Mgc3RpbGwgZXhpc3RzICov
 Ci0JaWYgKHBpZCAhPSAtMSkKLQl7Ci0JCWludCByZXN1bHQgPSBraWxsIChwaWQsIDApOwotCQlp
 ZiAocmVzdWx0ICE9IDAgJiYgZXJybm8gPT0gRVNSQ0gpCi0JCXsKLQkJCWNsZWFyUElEICgpOwot
 CQkJcGlkID0gLTE7Ci0JCX0KLQl9Ci0KLQkvKiBJZiB0aGVyZSBpcyBubyBydW5uaW5nIHByb2Nl
 c3MsIHByb2R1Y2UgYW4gZXJyb3IgKi8KLQlpZiAocGlkID09IC0xKQotCXsKLQkJbG9nT3V0cHV0
 ICgiIFsgRkFJTEVEIF1cbiIpOwotCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBU
 X05BTUUlJTogJSVBUFBfVElUTEUlJSAlJVBPUlRWRVJTSU9OJSUgaXMgY3VycmVudGx5IG5vdCBy
 dW5uaW5nLlxuIik7Ci0JCWV4aXQgKEVSUl9OT1RfUlVOTklORyk7Ci0JfQotCWxvZ091dHB1dCAo
 IiBbIERPTkUgXVxuIik7Ci0KLQkvKiBUZXJtaW5hdGUgdGhlIHByb2Nlc3MgKi8KLQlraWxsUHJv
 Y2VzcyAocGlkKTsKLQljbGVhclBJRCAoKTsKLX0KLQotCi0vKioKLSAqIFJlc3RhcnRzIHRoZSBw
 cm9jZXNzLiBJZiBpdCBub3QgY3VycmVudGx5IHJ1bm5pbmcsIHRoZW4gaXQgd2lsbCBmYWlsLgot
 ICovCi1zdGF0aWMgdm9pZAotcmVzdGFydCAoCi0gaW50IGphdmFPcHQsCi0gY2hhciAqIGphdmFB
 cmdzIFtdLAotIGludCBqYm9zc09wdCwKLSBjaGFyICogamJvc3NBcmdzIFtdKQotewotCXN0b3Ag
 KCk7Ci0Jc3RhcnQgKGphdmFPcHQsIGphdmFBcmdzLCBqYm9zc09wdCwgamJvc3NBcmdzKTsKLX0K
 LQotLyoqCi0JT3V0cHV0IGxvZyB0byBzdGRvdXQuCi0gKi8KLXN0YXRpYyB2b2lkCi1sb2dPdXRw
 dXQgKAotIGNoYXIgKiBzdHJpbmcpCi17Ci0JaWYgKCFpc1F1aWV0KQotCQlwcmludGYgKHN0cmlu
 Zyk7Ci19CkluZGV4OiBmaWxlcy9kYWVtb25jdGwuYy5pbgo9PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBm
 aWxlcy9kYWVtb25jdGwuYy5pbgpkaWZmIC1OIGZpbGVzL2RhZW1vbmN0bC5jLmluCi0tLSAvZGV2
 L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgZmlsZXMvZGFlbW9uY3RsLmMuaW4J
 MjIgRGVjIDIwMDQgMjA6NDQ6MjMgLTAwMDAKQEAgLTAsMCArMSw1NTcgQEAKKy8qCisgKiAtKi0g
 bW9kZTogRnVuZGFtZW50YWw7IHRhYi13aWR0aDogNDsgLSotCisgKiBleDp0cz00CisgKgorICog
 RGFlbW9uIGNvbnRyb2wgcHJvZ3JhbSwgd2l0aCBKYXZhIFN0YXJ0dXAgb3B0aW9ucy4KKyAqCisg
 KglPcmlnaW5hbCBieSBFcm5zdCBkZSBIYWFuIDx6bmVyZEBmcmVlYnNkLm9yZz4KKyAqCXd3dy9q
 YWthcnRhLXRvbWNhdDQvZmlsZXMvZGFlbW9uY3RsLmMKKyAqCisgKiAkRnJlZUJTRDogcG9ydHMv
 amF2YS9qYm9zczQvZmlsZXMvZGFlbW9uY3RsLmMsdiAxLjMgMjAwNC8xMi8yMiAyMDo0NDoyMyBo
 cSBFeHAgJAorICovCisKKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxmY250bC5oPgor
 I2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0ZGlv
 Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8
 c3lzbG9nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3lzL2Vycm5vLmg+Cisj
 aW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxz
 eXMvdWlvLmg+CisKKyNkZWZpbmUJVFJVRQkxCisjZGVmaW5lCUZBTFNFCTAKKworLyogVGhlIGlu
 dGVydmFsIGluIHNlY29uZHMgYmV0d2VlbiB0aGUgY2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGUgcHJv
 Y2VzcworICAgZGllZCBhZnRlciBhIGtpbGwgKi8KKyNkZWZpbmUgU1RPUF9USU1FX0lOVEVSVkFM
 CQkxCisKKyNkZWZpbmUgRVJSX0lMTEVHQUxfQVJHVU1FTlQJCQkJMQorI2RlZmluZSBFUlJfUElE
 X0ZJTEVfTk9UX0ZPVU5ECQkJCTIKKyNkZWZpbmUgRVJSX0tJTExfRkFJTEVECQkJCQkJNQorI2Rl
 ZmluZSBFUlJfQUxSRUFEWV9SVU5OSU5HCQkJCQk2CisjZGVmaW5lIEVSUl9OT1RfUlVOTklORwkJ
 CQkJCTcKKyNkZWZpbmUgRVJSX0NIRElSX1RPX0FQUF9IT01FCQkJCTgKKyNkZWZpbmUgRVJSX0FD
 Q0VTU19KQVJfRklMRQkJCQkJMTcKKyNkZWZpbmUgRVJSX1NURE9VVF9MT0dGSUxFX09QRU4JCQkJ
 OQorI2RlZmluZSBFUlJfU1RERVJSX0xPR0ZJTEVfT1BFTgkJCQkxMAorI2RlZmluZSBFUlJfRk9S
 S19GQUlMRUQJCQkJCQkxMQorI2RlZmluZSBFUlJfU1RBVF9KQVZBX0hPTUUJCQkJCTEyCisjZGVm
 aW5lIEVSUl9KQVZBX0hPTUVfTk9UX0RJUgkJCQkxMworI2RlZmluZSBFUlJfU1RBVF9KQVZBX0NN
 RAkJCQkJMTQKKyNkZWZpbmUgRVJSX0pBVkFfQ01EX05PVF9GSUxFCQkJCTE1CisjZGVmaW5lIEVS
 Ul9KQVZBX0NNRF9OT1RfRVhFQ1VUQUJMRQkJCTE2CisKKy8qCisJRnVuY3Rpb24gZGVjbGFyYXRp
 b25zLgorICovCitzdGF0aWMgdm9pZCBwcmludFVzYWdlICh2b2lkKTsKK3N0YXRpYyBpbnQgcmVh
 ZFBJRCAodm9pZCk7CitzdGF0aWMgdm9pZCB3cml0ZVBJRCAoaW50IHBpZCk7CitzdGF0aWMgdm9p
 ZCBjbGVhclBJRCAodm9pZCk7CitzdGF0aWMgdm9pZCBzdGFydCAoaW50IGphdmFPcHQsIGNoYXIg
 KiBqYXZhQXJncyBbXSwgaW50IGpib3NzT3B0LCBjaGFyICogamJvc3NBcmdzIFtdKTsKK3N0YXRp
 YyB2b2lkIHN0b3AgKHZvaWQpOworc3RhdGljIHZvaWQgcmVzdGFydCAoaW50IGphdmFPcHQsIGNo
 YXIgKiBqYXZhQXJncyBbXSwgaW50IGpib3NzT3B0LCBjaGFyICogamJvc3NBcmdzIFtdKTsKK3N0
 YXRpYyB2b2lkIGxvZ091dHB1dCAoY2hhciAqKTsKKworLyoKKwlHbG9iYWxzCisgKi8KK3N0YXRp
 YyBpbnQgaXNRdWlldCA9IEZBTFNFOworc3RhdGljIGNoYXIgKiBvcHRRdWlldCA9ICItcSIsCQkJ
 LyogcXVpZXQgb3B0aW9uICovCisJCQkqIG9wdENvbmZpZyA9ICItY29uZmlnIjsJLyogamJvc3Mg
 Y29uZmlndXJhdGlvbiBvcHRpb24gKi8KKworLyoqCisgKiBNYWluIGZ1bmN0aW9uLiBUaGlzIGZ1
 bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoaXMgcHJvZ3JhbSBpcyBleGVjdXRlZC4KKyAqCisgKiBA
 cGFyYW0gYXJnYworICogICAgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgcGx1cyBvbmUsIHNvIGFs
 d2F5cyBncmVhdGVyIHRoYW4gMC4KKyAqCisgKiBAcGFyYW0gYXJndgorICogICAgdGhlIGFyZ3Vt
 ZW50cyBpbiBhbiBhcnJheSBvZiBjaGFyYWN0ZXIgcG9pbnRlcnMsIHdoZXJlIHRoZSBsYXN0IGFy
 Z3VtZW50CisgKiAgICBlbGVtZW50IGlzIGZvbGxvd2VkIGJ5IGEgTlVMTCBlbGVtZW50LgorICov
 CitpbnQKK21haW4gKAorIGludCBhcmdjLAorIGNoYXIgKmFyZ3YgW10pCit7CisJLyogRGVjbGFy
 ZSB2YXJpYWJsZXMsIGxpa2UgYWxsIG90aGVyIGdvb2QgQU5TSSBDIHByb2dyYW1zIGRvIDopICov
 CisJaW50IGksIGphdmFPcHQsIGpib3NzT3B0OworCWNoYXIgKmFyZ3VtZW50LCAqKmphdmFBcmdz
 LCAqKmpib3NzQXJnczsKKworCS8qIFBhcnNlIHRoZSBhcmd1bWVudHMgKi8KKwlpZiAoYXJnYyA8
 IDIpCisJeworCQlwcmludFVzYWdlICgpOworCQlyZXR1cm4gMDsKKwl9CisKKwkvKiBYWFg6IEZp
 eCBmb3Igc2V0dGluZyB1cCB0aGUgZW52aXJvbm1lbnQgZm9yIHRoZSBqYXZhIHdyYXBwZXIgc2Ny
 aXB0ICovCisJc2V0dWlkIChnZXRldWlkICgpKTsKKwlzZXRnaWQgKGdldGVnaWQgKCkpOworCisJ
 LyoKKwkJQnVpbGQgdXAgamF2YSBhbmQgamJvc3Mgb3B0aW9uIGJsb2Nrcy4KKwkgKi8KKwlqYXZh
 T3B0ID0gamJvc3NPcHQgPSAwOworCWZvciAoaSA9IDE7IGkgPCBhcmdjOyBpKyspCisJeworCQlp
 ZiAoc3RyY21wIChhcmd2IFtpXSwgb3B0UXVpZXQpID09IDApCisJCXsKKwkJCWlzUXVpZXQgPSBU
 UlVFOworCisJCX0gZWxzZSBpZiAoc3RyY21wIChhcmd2IFtpXSwgb3B0Q29uZmlnKSA9PSAwKQor
 CQl7CisJCQlqYm9zc09wdCArPSAyOworCQkJaWYgKCsraSA+PSBhcmdjKQorCQkJeworCQkJCXBy
 aW50VXNhZ2UgKCk7CisJCQkJcmV0dXJuIEVSUl9JTExFR0FMX0FSR1VNRU5UOworCQkJfQorCisJ
 CX0gZWxzZSBpZiAoKmFyZ3YgW2ldID09ICctJykKKwkJeworCQkJamF2YU9wdCsrOworCQl9CisJ
 fQorCWlmIChqYXZhT3B0ID09IDApCisJCWphdmFBcmdzID0gTlVMTDsKKwllbHNlCisJeworCQlp
 bnQgaiA9IDA7CisJCWphdmFBcmdzID0gbWFsbG9jIChzaXplb2YgKGNoYXIgKikgKiBqYXZhT3B0
 KTsKKwkJZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykKKwkJeworCQkJaWYgKHN0cmNtcCAoYXJn
 diBbaV0sIG9wdFF1aWV0KSAmJgorCQkJCXN0cmNtcCAoYXJndiBbaV0sIG9wdENvbmZpZykgJiYK
 KwkJCQkqYXJndiBbaV0gPT0gJy0nKQorCQkJeworCQkJCWphdmFBcmdzIFtqKytdID0gYXJndiBb
 aV07CisJCQl9CisJCX0KKwl9CisJaWYgKGpib3NzT3B0ID09IDApCisJCWpib3NzQXJncyA9IE5V
 TEw7CisJZWxzZQorCXsKKwkJaW50IGogPSAwOworCQlqYm9zc0FyZ3MgPSBtYWxsb2MgKHNpemVv
 ZiAoY2hhciAqKSAqIGpib3NzT3B0KTsKKwkJZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykKKwkJ
 eworCQkJaWYgKHN0cmNtcCAoYXJndiBbaV0sIG9wdENvbmZpZykgPT0gMCkKKwkJCXsKKwkJCQlq
 Ym9zc0FyZ3MgW2orK10gPSAiLWMiOworCQkJCWpib3NzQXJncyBbaisrXSA9IGFyZ3YgWysraV07
 CisJCQl9CisJCX0KKwl9CisKKwkvKgorCQlEZWNpZGUgb24ganVzdCB3aGF0IHRvIGNhbGwuCisJ
 ICovCisJYXJndW1lbnQgPSBhcmd2IFthcmdjIC0gMV07CisJaWYgKHN0cmNtcCAoInN0YXJ0Iiwg
 YXJndW1lbnQpID09IDApCisJeworCQlzdGFydCAoamF2YU9wdCwgamF2YUFyZ3MsIGpib3NzT3B0
 LCBqYm9zc0FyZ3MpOworCisJfSBlbHNlIGlmIChzdHJjbXAgKCJzdG9wIiwgYXJndW1lbnQpID09
 IDApCisJeworCQlzdG9wICgpOworCisJfSBlbHNlIGlmIChzdHJjbXAgKCJyZXN0YXJ0IiwgYXJn
 dW1lbnQpID09IDApCisJeworCQlyZXN0YXJ0IChqYXZhT3B0LCBqYXZhQXJncywgamJvc3NPcHQs
 IGpib3NzQXJncyk7CisKKwl9IGVsc2UgeworCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xf
 U0NSSVBUX05BTUUlJTogSWxsZWdhbCBhcmd1bWVudCBcIiVzXCIuXG4iLCBhcmd1bWVudCk7CisJ
 CXByaW50VXNhZ2UgKCk7CisJCWV4aXQgKEVSUl9JTExFR0FMX0FSR1VNRU5UKTsKKwl9CisKKwly
 ZXR1cm4gRVhJVF9TVUNDRVNTOworfQorCisvKioKKyAqIFByaW50cyB1c2FnZSBpbmZvcm1hdGlv
 biB0byBzdGRvdXQuCisgKi8KK3N0YXRpYyB2b2lkCitwcmludFVzYWdlICh2b2lkKQoreworCXBy
 aW50ZiAoIlVzYWdlOiAlJUNPTlRST0xfU0NSSVBUX05BTUUlJSBbamF2YS1vcHRpb25zXSBbLWNv
 bmZpZyBqYm9zc2NvbmZpZ10ge3N0YXJ0fHN0b3B8cmVzdGFydH1cbiIpOworfQorCisvKioKKyAq
 IFJlYWRzIGEgUElEIGZyb20gdGhlIFBJRCBmaWxlLgorICoKKyAqIEByZXR1cm4KKyAqICAgIHRo
 ZSBQSUQsIG9yIC0xIGlmIHRoZSBmaWxlIHdhcyBlbXB0eS4KKyAqLworc3RhdGljIGludAorcmVh
 ZFBJRCAodm9pZCkKK3sKKwlGSUxFICogZmlsZTsKKwlpbnQgcGlkOworCisJbG9nT3V0cHV0ICgi
 Pj4gUmVhZGluZyBQSUQgZmlsZSAoJSVQSURfRklMRSUlKS4uLiIpOworCWZpbGUgPSBmb3BlbiAo
 IiUlUElEX0ZJTEUlJSIsICJyIik7CisJaWYgKCFmaWxlKQorCXsKKwkJbG9nT3V0cHV0ICgiIFsg
 RkFJTEVEIF1cbiIpOworCQlwZXJyb3IgKCIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxl
 IHRvIG9wZW4gJSVQSURfRklMRSUlIGZvciByZWFkaW5nOiAiKTsKKwkJZXhpdCAoRVJSX1BJRF9G
 SUxFX05PVF9GT1VORCk7CisJfQorCWlmIChmc2NhbmYgKGZpbGUsICIlZCIsICZwaWQpIDwgMSkK
 KwkJcGlkID0gLTE7CisJZmNsb3NlIChmaWxlKTsKKworCWxvZ091dHB1dCAoIiBbIERPTkUgXVxu
 Iik7CisJcmV0dXJuIHBpZDsKK30KKworLyoqCisgKiBXcml0ZXMgYSBwcm9jZXNzIElEIHRvIHRo
 ZSBzcGVjaWZpZWQgZmlsZS4gVGhlIGZpbGUgaXMgaWRlbnRpZmllZCBieSBhIGZpbGUKKyAqIGhh
 bmRsZS4KKyAqCisgKiBAcGFyYW0gcGlkCisgKiAgICB0aGUgUElEIHRvIHN0b3JlLCBhbHdheXMg
 Z3JlYXRlciB0aGFuIDAuCisgKi8KK3N0YXRpYyB2b2lkCit3cml0ZVBJRCAoCisgaW50IHBpZCkK
 K3sKKwlGSUxFICogZmlsZTsKKworCWxvZ091dHB1dCAoIj4+IFdyaXRpbmcgUElEIGZpbGUuLi4i
 KTsKKwlmaWxlID0gZm9wZW4gKCIlJVBJRF9GSUxFJSUiLCAidyIpOworCWlmICghZmlsZSkKKwl7
 CisJCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKKwkJcGVycm9yICgiJSVDT05UUk9MX1ND
 UklQVF9OQU1FJSU6IFVuYWJsZSB0byBvcGVuICUlUElEX0ZJTEUlJSBmb3Igd3JpdGluZzogIik7
 CisJCWV4aXQgKEVSUl9QSURfRklMRV9OT1RfRk9VTkQpOworCX0KKwlmcHJpbnRmIChmaWxlLCAi
 JWRcbiIsIHBpZCk7CisJZmNsb3NlIChmaWxlKTsKKworCWxvZ091dHB1dCAoIiBbIERPTkUgXVxu
 Iik7Cit9CisKKy8qKgorCVRydW5jYXRlIHRoZSBQSUQgZmlsZS4KKyAqLworc3RhdGljIHZvaWQK
 K2NsZWFyUElEICh2b2lkKQoreworCWlmICh0cnVuY2F0ZSAoIiUlUElEX0ZJTEUlJSIsIDApICE9
 IDApCisJeworCQlwZXJyb3IgKCIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIGNs
 ZWFyICUlUElEX0ZJTEUlJTogIik7CisJCWV4aXQgKEVSUl9QSURfRklMRV9OT1RfRk9VTkQpOwor
 CX0KK30KKworLyoqCisgKiBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBwcm9jZXNzIGlzIHJ1bm5p
 bmcuCisgKgorICogQHBhcmFtIHBpZAorICogICAgdGhlIHByb2Nlc3MgaWQsIGdyZWF0ZXIgdGhh
 biAwLgorICoKKyAqIEByZXR1cm4KKyAqICAgIDAgaWYgdGhlIHNwZWNpZmllZCBwcm9jZXNzIGlz
 IG5vdCBydW5uaW5nLCBhIGRpZmZlcmVudCB2YWx1ZSBvdGhlcndpc2UuCisgKi8KK3N0YXRpYyBp
 bnQKK2V4aXN0c1Byb2Nlc3MgKAorIGludCBwaWQpCit7CisJaW50IHJlc3VsdDsKKworCS8qIENo
 ZWNrIHByZWNvbmRpdGlvbnMgKi8KKwlhc3NlcnQgKHBpZCA+IDApOworCisJLyogU2VlIGlmIHRo
 ZSBwcm9jZXNzIGV4aXN0cyAqLworICAgCXJlc3VsdCA9IGtpbGwgKHBpZCwgMCk7CisKKwkvKiBJ
 ZiB0aGUgcmVzdWx0IGlzIDAsIHRoZW4gdGhlIHByb2Nlc3MgZXhpc3RzICovCisJcmV0dXJuIHJl
 c3VsdCA9PSAwOworfQorCisvKioKKyAqIEtpbGxzIHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkg
 dGhlIHNwZWNpZmllZCBJRC4KKyAqCisgKiBAcGFyYW0gcGlkCisgKiAgICB0aGUgcHJvY2VzcyBp
 ZCwgZ3JlYXRlciB0aGFuIDAuCisgKi8KK3N0YXRpYyB2b2lkCitraWxsUHJvY2VzcyAoCisgaW50
 IHBpZCkKK3sKKwlpbnQgcmVzdWx0OworCXVuc2lnbmVkIGludCB3YWl0ZWQ7CisJdW5zaWduZWQg
 aW50IGZvcmNlZDsKKwl1bnNpZ25lZCBpbnQgaW50ZXJ2YWwgPSBTVE9QX1RJTUVfSU5URVJWQUw7
 CisJdW5zaWduZWQgaW50IHRpbWVvdXQgID0gJSVTVE9QX1RJTUVPVVQlJTsKKworCS8qIENoZWNr
 IHByZWNvbmRpdGlvbnMgKi8KKwlhc3NlcnQgKHBpZCA+IDApOworCisJaWYgKCFpc1F1aWV0KQor
 CQlwcmludGYgKCI+PiBUZXJtaW5hdGluZyBwcm9jZXNzICVkLi4uIiwgcGlkKTsKKwlyZXN1bHQg
 PSBraWxsIChwaWQsIFNJR1RFUk0pOworCWlmIChyZXN1bHQgPCAwKSB7CisJCWxvZ091dHB1dCAo
 IiBbIEZBSUxFRCBdXG4iKTsKKwkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9O
 QU1FJSU6IFVuYWJsZSB0byBraWxsIHByb2Nlc3MgJWQ6ICIsIHBpZCk7CisJCXBlcnJvciAoTlVM
 TCk7CisJCWV4aXQgKEVSUl9LSUxMX0ZBSUxFRCk7CisJfQorCisJLyogV2FpdCB1bnRpbCB0aGUg
 cHJvY2VzcyBpcyBhY3R1YWxseSBraWxsZWQgKi8KKyAgICByZXN1bHQgPSBleGlzdHNQcm9jZXNz
 IChwaWQpOworCWZvciAod2FpdGVkPTA7IHJlc3VsdCA9PSAxICYmIHdhaXRlZCA8IHRpbWVvdXQ7
 IHdhaXRlZCArPSBpbnRlcnZhbCkKKwl7CisJCWxvZ091dHB1dCAoIi4iKTsKKwkJZmZsdXNoIChz
 dGRvdXQpOworCQlzbGVlcCAoaW50ZXJ2YWwpOworICAgIAlyZXN1bHQgPSBleGlzdHNQcm9jZXNz
 IChwaWQpOworCX0KKworCS8qIElmIHRoZSBwcm9jZXNzIHN0aWxsIGV4aXN0cywgdGhlbiBoYXZl
 IG5vIG1lcmN5IGFuZCBraWxsIGl0ICovCisJZm9yY2VkID0gMDsKKwlpZiAocmVzdWx0ID09IDEp
 CisJeworCQkvKiBGb3JjZSB0aGUgcHJvY2VzcyB0byBkaWUgKi8KKwkJcmVzdWx0ID0ga2lsbCAo
 cGlkLCBTSUdLSUxMKTsKKwkJaWYgKHJlc3VsdCA9PSAwKSB7CisJCQlmb3JjZWQgPSAxOworCQkJ
 bG9nT3V0cHV0ICgiIFsgS0lMTEVEIF1cbiIpOworCQkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05U
 Uk9MX1NDUklQVF9OQU1FJSU6IFByb2Nlc3MgJWQgZGlkIG5vdCB0ZXJtaW5hdGUgd2l0aGluICUl
 U1RPUF9USU1FT1VUJSUgc2VjLiBLaWxsZWQuXG4iLCBwaWQpOworCQl9IGVsc2UgaWYgKHJlc3Vs
 dCAhPSBFU1JDSCkgeworCQkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOworCQkJZnByaW50
 ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBraWxsIHByb2Nl
 c3MgJWQ6ICIsIHBpZCk7CisJCQlwZXJyb3IgKE5VTEwpOworCQkJZXhpdCAoRVJSX0tJTExfRkFJ
 TEVEKTsKKwkJfQorCX0KKworCWlmIChmb3JjZWQgPT0gMCkgeworCQlsb2dPdXRwdXQgKCIgWyBE
 T05FIF1cbiIpOworCX0KK30KKworLyoqCisgKiBTdGFydHMgdGhlIGRhZW1vbi4KKyAqLworc3Rh
 dGljIHZvaWQKK3N0YXJ0ICgKKyBpbnQgamF2YU9wdCwKKyBjaGFyICogamF2YUFyZ3MgW10sCisg
 aW50IGpib3NzT3B0LAorIGNoYXIgKiBqYm9zc0FyZ3MgW10pCit7CisJaW50IGksIGFyZ2M7CisJ
 Y2hhciAqKiBhcmd2OworCWludCBwaWQ7CisJaW50IHJlc3VsdDsKKwlpbnQgc3Rkb3V0TG9nRmls
 ZTsKKwlpbnQgc3RkZXJyTG9nRmlsZTsKKwlzdHJ1Y3Qgc3RhdCBzYjsKKworCXBpZCA9IHJlYWRQ
 SUQgKCk7CisKKwlsb2dPdXRwdXQgKCI+PiBTdGFydGluZyAlJUFQUF9USVRMRSUlICUlUE9SVFZF
 UlNJT04lJS4uLiIpOworCWlmIChwaWQgIT0gLTEpCisJeworCQkvKiBDaGVjayBpZiB0aGUgcHJv
 Y2VzcyBhY3R1YWxseSBleGlzdHMgKi8KKwkJcmVzdWx0ID0gZXhpc3RzUHJvY2VzcyAocGlkKTsK
 KwkJaWYgKHJlc3VsdCA9PSAxKQorCQl7CisJCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7
 CisJCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogJSVBUFBfVElU
 TEUlJSAlJVBPUlRWRVJTSU9OJSUgaXMgYWxyZWFkeSBydW5uaW5nLCBQSUQgaXMgJWQuXG4iLCBw
 aWQpOworCQkJZXhpdCAoRVJSX0FMUkVBRFlfUlVOTklORyk7CisJCX0KKwl9CisKKwkvKiBDaGVj
 ayBpZiB0aGUgSkRLIGhvbWUgZGlyZWN0b3J5IGlzIGFjdHVhbGx5IGEgZGlyZWN0b3J5ICovCisJ
 cmVzdWx0ID0gc3RhdCAoIiUlSkFWQV9IT01FJSUiLCAmc2IpOworCWlmIChyZXN1bHQgIT0gMCkg
 eworCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7CisJCWZwcmludGYgKHN0ZGVyciwgIiUl
 Q09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBVbmFibGUgdG8gc3RhdCAlJUpBVkFfSE9NRSUlOiAiKTsK
 KwkJcGVycm9yIChOVUxMKTsKKwkJZXhpdCAoRVJSX1NUQVRfSkFWQV9IT01FKTsKKwl9CisJaWYg
 KCFTX0lTRElSIChzYi5zdF9tb2RlKSkgeworCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7
 CisJCWZwcmludGYgKHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBKYXZhIGhvbWUg
 ZGlyZWN0b3J5ICUlSkFWQV9IT01FJSUgaXMgbm90IGEgZGlyZWN0b3J5LlxuIik7CisJCWV4aXQg
 KEVSUl9KQVZBX0hPTUVfTk9UX0RJUik7CisJfQorCisJLyogQ2hlY2sgaWYgdGhlIEphdmEgY29t
 bWFuZCBpcyBhY3R1YWxseSBhbiBleGVjdXRhYmxlIHJlZ3VsYXIgZmlsZSAqLworCXJlc3VsdCA9
 IHN0YXQgKCIlJUpBVkElJSIsICZzYik7CisJaWYgKHJlc3VsdCAhPSAwKSB7CisJCWxvZ091dHB1
 dCAoIiBbIEZBSUxFRCBdXG4iKTsKKwkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQ
 VF9OQU1FJSU6IFVuYWJsZSB0byBzdGF0ICUlSkFWQSUlOiAiKTsKKwkJcGVycm9yIChOVUxMKTsK
 KwkJZXhpdCAoRVJSX1NUQVRfSkFWQV9DTUQpOworCX0KKwlpZiAoIVNfSVNSRUcgKHNiLnN0X21v
 ZGUpKSB7CisJCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKKwkJZnByaW50ZiAoc3RkZXJy
 LCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IEphdmEgY29tbWFuZCAlJUpBVkElJSBpcyBub3Qg
 YSByZWd1bGFyIGZpbGUuXG4iKTsKKwkJZXhpdCAoRVJSX0pBVkFfQ01EX05PVF9GSUxFKTsKKwl9
 CisJcmVzdWx0ID0gYWNjZXNzICgiJSVKQVZBJSUiLCBYX09LKTsKKwlpZiAocmVzdWx0ICE9IDAp
 IHsKKwkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOworCQlmcHJpbnRmIChzdGRlcnIsICIl
 JUNPTlRST0xfU0NSSVBUX05BTUUlJTogSmF2YSBjb21tYW5kICUlSkFWQSUlIGlzIG5vdCBleGVj
 dXRhYmxlOiAiKTsKKwkJcGVycm9yIChOVUxMKTsKKwkJZXhpdCAoRVJSX0pBVkFfQ01EX05PVF9F
 WEVDVVRBQkxFKTsKKwl9CisKKwkvKiBDaGFuZ2UgZGlyZWN0b3J5ICovCisJcmVzdWx0ID0gY2hk
 aXIgKCIlJUFQUF9IT01FJSUiKTsKKwlpZiAocmVzdWx0IDwgMCkgeworCQlsb2dPdXRwdXQgKCIg
 WyBGQUlMRUQgXVxuIik7CisJCWZwcmludGYgKHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFN
 RSUlOiBVbmFibGUgdG8gYWNjZXNzIGRpcmVjdG9yeSAlJUFQUF9IT01FJSU6ICIpOworCQlwZXJy
 b3IgKE5VTEwpOworCQlleGl0IChFUlJfQ0hESVJfVE9fQVBQX0hPTUUpOworCX0KKworCS8qIFNl
 ZSBpZiB0aGUgSkFSIGZpbGUgZXhpc3RzICovCisJcmVzdWx0ID0gYWNjZXNzICgiJSVBUFBfSE9N
 RSUlLyUlSkFSX0ZJTEUlJSIsIFJfT0spOworCWlmIChyZXN1bHQgPCAwKSB7CisJCWxvZ091dHB1
 dCAoIiBbIEZBSUxFRCBdXG4iKTsKKwkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQ
 VF9OQU1FJSU6IFVuYWJsZSB0byBhY2Nlc3MgSkFSIGZpbGUgJSVBUFBfSE9NRSUlLyUlSkFSX0ZJ
 TEUlJTogIik7CisJCXBlcnJvciAoTlVMTCk7CisJCWV4aXQgKEVSUl9BQ0NFU1NfSkFSX0ZJTEUp
 OworCX0KKworCS8qIE9wZW4gdGhlIHN0ZG91dCBsb2cgZmlsZSAqLworCXN0ZG91dExvZ0ZpbGUg
 PSBvcGVuICgiJSVTVERPVVRfTE9HJSUiLCBPX1dST05MWSk7CisJaWYgKHN0ZG91dExvZ0ZpbGUg
 PCAwKSB7CisJCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKKwkJZnByaW50ZiAoc3RkZXJy
 LCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBvcGVuICUlU1RET1VUX0xPRyUl
 IGZvciB3cml0aW5nOiAiKTsKKwkJcGVycm9yIChOVUxMKTsKKwkJZXhpdCAoRVJSX1NURE9VVF9M
 T0dGSUxFX09QRU4pOworCX0KKwlsc2VlayAoc3Rkb3V0TG9nRmlsZSwgKG9mZl90KSAwLCBTRUVL
 X0VORCk7CisKKwkvKiBPcGVuIHRoZSBzdGRlcnIgbG9nIGZpbGUgKi8KKwlzdGRlcnJMb2dGaWxl
 ID0gb3BlbiAoIiUlU1RERVJSX0xPRyUlIiwgT19XUk9OTFkpOworCWlmIChzdGRlcnJMb2dGaWxl
 IDwgMCkgeworCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7CisJCWZwcmludGYgKHN0ZGVy
 ciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBVbmFibGUgdG8gb3BlbiAlJVNUREVSUl9MT0cl
 JSBmb3Igd3JpdGluZzogIik7CisJCXBlcnJvciAoTlVMTCk7CisJCWV4aXQgKEVSUl9TVERFUlJf
 TE9HRklMRV9PUEVOKTsKKwl9CisJbHNlZWsgKHN0ZGVyckxvZ0ZpbGUsIChvZmZfdCkgMCwgU0VF
 S19FTkQpOworCisJLyogU3BsaXQgdGhpcyBwcm9jZXNzIGluIHR3byAqLworCXN3aXRjaCAocGlk
 ID0gZm9yayAoKSkKKwl7CisJY2FzZSAtMToKKwkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIp
 OworCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxlIHRv
 IGZvcms6ICIpOworCQlwZXJyb3IgKE5VTEwpOworCQlleGl0IChFUlJfRk9SS19GQUlMRUQpOwor
 CQlicmVhazsKKworCWNhc2UgMDoKKwkJLyogUmVkaXJlY3Qgc3Rkb3V0IHRvIGxvZyBmaWxlICov
 CisJCWR1cDIgKHN0ZG91dExvZ0ZpbGUsIFNURE9VVF9GSUxFTk8pOworCisJCS8qIFJlZGlyZWN0
 IHN0ZGVyciB0byBsb2cgZmlsZSAqLworCQlkdXAyIChzdGRlcnJMb2dGaWxlLCBTVERFUlJfRklM
 RU5PKTsKKworCQkvKiBUT0RPOiBTdXBwb3J0IHJlZGlyZWN0aW9uIG9mIGJvdGggc3Rkb3V0IGFu
 ZCBzdGRlcnIgdG8gdGhlIHNhbWUKKwkJCQkgZmlsZSB1c2luZyBwaXBlICgyKSAqLworCisJCS8q
 CisJCQlCdWlsZCB0aGUgYXJndW1lbnQgdmVjdG9yLCB3aXRoIHRoZSBqYXZhL2pib3NzIG9wdGlv
 bnMgaWYgYW55LgorCQkgKi8KKwkJYXJndiA9IG1hbGxvYyAoc2l6ZW9mIChjaGFyICopICogKGph
 dmFPcHQgKyBqYm9zc09wdCArIDUpKTsKKwkJYXJnYyA9IDA7CisJCWFyZ3YgW2FyZ2MrK10gPSAi
 JSVKQVZBJSUiOworCQlmb3IgKGkgPSAwOyBpIDwgamF2YU9wdDsgaSsrKQorCQkJYXJndiBbYXJn
 YysrXSA9IGphdmFBcmdzIFtpXTsKKwkJYXJndiBbYXJnYysrXSA9ICItY3AiOworCQlhcmd2IFth
 cmdjKytdID0gIiUlSkFWQV9DUCUlIjsKKwkJYXJndiBbYXJnYysrXSA9ICIlJUpBVkFfTUFJTiUl
 IjsKKwkJZm9yIChpID0gMDsgaSA8IGpib3NzT3B0OyBpKyspCisJCQlhcmd2IFthcmdjKytdID0g
 amJvc3NBcmdzIFtpXTsKKwkJYXJndiBbYXJnYysrXSA9IE5VTEw7CisKKwkJLyogRXhlY3V0ZSB0
 aGUgY29tbWFuZCAqLworCQlleGVjdiAoYXJndiBbMF0sIGFyZ3YpOworCQlwZXJyb3IgKE5VTEwp
 OworCQlicmVhazsKKworCWRlZmF1bHQ6CisJCWxvZ091dHB1dCAoIiBbIERPTkUgXVxuIik7CisJ
 CXdyaXRlUElEIChwaWQpOworCX0KK30KKworLyoqCisgKiBTdG9wcyB0aGUgZGFlbW9uLgorICov
 CitzdGF0aWMgdm9pZAorc3RvcCAodm9pZCkKK3sKKwlpbnQgcGlkOworCisJcGlkID0gcmVhZFBJ
 RCAoKTsKKworCWxvZ091dHB1dCAoIj4+IENoZWNraW5nIGlmICUlQVBQX1RJVExFJSUgJSVQT1JU
 VkVSU0lPTiUlIGlzIHJ1bm5pbmcuLi4iKTsKKworCS8qIElmIHRoZXJlIGlzIGEgUElELCBzZWUg
 aWYgdGhlIHByb2Nlc3Mgc3RpbGwgZXhpc3RzICovCisJaWYgKHBpZCAhPSAtMSkKKwl7CisJCWlu
 dCByZXN1bHQgPSBraWxsIChwaWQsIDApOworCQlpZiAocmVzdWx0ICE9IDAgJiYgZXJybm8gPT0g
 RVNSQ0gpCisJCXsKKwkJCWNsZWFyUElEICgpOworCQkJcGlkID0gLTE7CisJCX0KKwl9CisKKwkv
 KiBJZiB0aGVyZSBpcyBubyBydW5uaW5nIHByb2Nlc3MsIHByb2R1Y2UgYW4gZXJyb3IgKi8KKwlp
 ZiAocGlkID09IC0xKQorCXsKKwkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOworCQlmcHJp
 bnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogJSVBUFBfVElUTEUlJSAlJVBP
 UlRWRVJTSU9OJSUgaXMgY3VycmVudGx5IG5vdCBydW5uaW5nLlxuIik7CisJCWV4aXQgKEVSUl9O
 T1RfUlVOTklORyk7CisJfQorCWxvZ091dHB1dCAoIiBbIERPTkUgXVxuIik7CisKKwkvKiBUZXJt
 aW5hdGUgdGhlIHByb2Nlc3MgKi8KKwlraWxsUHJvY2VzcyAocGlkKTsKKwljbGVhclBJRCAoKTsK
 K30KKworCisvKioKKyAqIFJlc3RhcnRzIHRoZSBwcm9jZXNzLiBJZiBpdCBub3QgY3VycmVudGx5
 IHJ1bm5pbmcsIHRoZW4gaXQgd2lsbCBmYWlsLgorICovCitzdGF0aWMgdm9pZAorcmVzdGFydCAo
 CisgaW50IGphdmFPcHQsCisgY2hhciAqIGphdmFBcmdzIFtdLAorIGludCBqYm9zc09wdCwKKyBj
 aGFyICogamJvc3NBcmdzIFtdKQoreworCXN0b3AgKCk7CisJc3RhcnQgKGphdmFPcHQsIGphdmFB
 cmdzLCBqYm9zc09wdCwgamJvc3NBcmdzKTsKK30KKworLyoqCisJT3V0cHV0IGxvZyB0byBzdGRv
 dXQuCisgKi8KK3N0YXRpYyB2b2lkCitsb2dPdXRwdXQgKAorIGNoYXIgKiBzdHJpbmcpCit7CisJ
 aWYgKCFpc1F1aWV0KQorCQlwcmludGYgKHN0cmluZyk7Cit9CkluZGV4OiBmaWxlcy9qYm9zczQu
 c2guaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogZmlsZXMvamJvc3M0LnNoLmluCmRpZmYgLU4gZmls
 ZXMvamJvc3M0LnNoLmluCi0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAor
 KysgZmlsZXMvamJvc3M0LnNoLmluCTEzIEp1biAyMDA2IDE3OjQzOjE0IC0wMDAwCkBAIC0wLDAg
 KzEsNjEgQEAKKyMhL2Jpbi9zaAorIworIyAlJUFQUF9USVRMRSUlIHN0YXJ0dXAgc2NyaXB0Lgor
 IworIyAkRnJlZUJTRDogcG9ydHMvamF2YS9qYm9zczQvZmlsZXMvc3RhcnR1cC5zaCx2IDEuNCAy
 MDA2LzA2LzEzIDE3OjQzOjE0IGdsZXdpcyBFeHAgJAorIworCisjIFBST1ZJREU6ICUlQVBQX1NI
 T1JUTkFNRSUlCisjIFJFUVVJUkU6IE5FVFdPUktJTkcgU0VSVkVSUworCisjIEFkZCB0aGUgZm9s
 bG93aW5nIGxpbmVzIHRvIC9ldGMvcmMuY29uZiB0byBlbmFibGUgJSVBUFBfU0hPUlROQU1FJSU6
 CisjICUlQVBQX1NIT1JUTkFNRSUlX2VuYWJsZSAoYm9vbCk6CQlTZXQgdG8gIk5PIiBieSBkZWZh
 dWx0LgorIwkJCQlTZXQgaXQgdG8gIllFUyIgdG8gZW5hYmxlICUlQVBQX1NIT1JUTkFNRSUlCisj
 ICUlQVBQX1NIT1JUTkFNRSUlX2ZsYWdzIChzdHIpOgkJU2V0IHRvICItc2VydmVyIiBieSBkZWZh
 dWx0LgorIwkJCQlFeHRyYSBKVk0gZmxhZ3MuCisjICUlQVBQX1NIT1JUTkFNRSUlX2NvbmZpZyAo
 c3RyKToJCVNldCB0byAiIiBieSBkZWZhdWx0CisjCQkJCUpCb3NzIHNlcnZlciBjb25maWcsIGVn
 IHthbGx8ZGVmYXVsdHxtaW5pbWFsfHN0YW5kYXJkfQorIworLiAlJVJDX1NVQlIlJQorCituYW1l
 PSIlJUFQUF9TSE9SVE5BTUUlJSIKK3JjdmFyPWBzZXRfcmN2YXJgCisKK3N0YXJ0X2NtZD0iJSVB
 UFBfU0hPUlROQU1FJSVfc3RhcnQiCityZXN0YXJ0X2NtZD0iJSVBUFBfU0hPUlROQU1FJSVfcmVz
 dGFydCIKK3BpZGZpbGU9IiUlUElEX0ZJTEUlJSIKK3Byb2NuYW1lPSIlJUpBVkElJSIKKworWyAt
 eiAiJCUlQVBQX1NIT1JUTkFNRSUlX2VuYWJsZSIgXQkmJiAlJUFQUF9TSE9SVE5BTUUlJV9lbmFi
 bGU9Ik5PIgorWyAteiAiJCUlQVBQX1NIT1JUTkFNRSUlX2ZsYWdzIiBdCSYmICUlQVBQX1NIT1JU
 TkFNRSUlX2ZsYWdzPSItc2VydmVyIgorWyAteiAiJCUlQVBQX1NIT1JUTkFNRSUlX2NvbmZpZyIg
 XQkmJiAlJUFQUF9TSE9SVE5BTUUlJV9jb25maWc9IiIKKworJSVBUFBfU0hPUlROQU1FJSVfc3Rh
 cnQgKCkKK3sKKwljaGVja3llc25vICUlQVBQX1NIT1JUTkFNRSUlX2VuYWJsZSAmJgorCXsKKwkJ
 aWYgWyAhIC1mICR7cGlkZmlsZX0gXQorCQl0aGVuCisJCQl0b3VjaCAke3BpZGZpbGV9CisJCQlj
 aG93biAlJVVTRVIlJTolJUdST1VQJSUgJHtwaWRmaWxlfQorCQlmaQorCisJCWVjaG8gIlN0YXJ0
 aW5nICUlQVBQX1NIT1JUTkFNRSUlLiIKKwkJJSVDT05UUk9MX1NDUklQVCUlIC1xICR7JSVBUFBf
 U0hPUlROQU1FJSVfZmxhZ3N9ICR7JSVBUFBfU0hPUlROQU1FJSVfY29uZmlnZmxhZ30gJHslJUFQ
 UF9TSE9SVE5BTUUlJV9jb25maWd9IHN0YXJ0CisJfQorfQorCislJUFQUF9TSE9SVE5BTUUlJV9y
 ZXN0YXJ0ICgpCit7CisJY2hlY2t5ZXNubyAlJUFQUF9TSE9SVE5BTUUlJV9lbmFibGUgJiYKKwl7
 CisJCWVjaG8gIlJlc3RhcnRpbmcgJSVBUFBfU0hPUlROQU1FJSUuIgorCQklJUNPTlRST0xfU0NS
 SVBUJSUgLXEgJHslJUFQUF9TSE9SVE5BTUUlJV9mbGFnc30gJHslJUFQUF9TSE9SVE5BTUUlJV9j
 b25maWdmbGFnfSAkeyUlQVBQX1NIT1JUTkFNRSUlX2NvbmZpZ30gcmVzdGFydAorCX0KK30KKwor
 bG9hZF9yY19jb25maWcgJG5hbWUKKworWyAtbiAiJHslJUFQUF9TSE9SVE5BTUUlJV9jb25maWd9
 IiBdICYmICUlQVBQX1NIT1JUTkFNRSUlX2NvbmZpZ2ZsYWc9Ii1jb25maWciCisKK3J1bl9yY19j
 b21tYW5kICIkMSIKSW5kZXg6IGZpbGVzL3BhdGNoLWJ1aWxkLnhtbAo9PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
 aWxlOiBmaWxlcy9wYXRjaC1idWlsZC54bWwKZGlmZiAtTiBmaWxlcy9wYXRjaC1idWlsZC54bWwK
 LS0tIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBmaWxlcy9wYXRjaC1i
 dWlsZC54bWwJMjUgTWFyIDIwMDcgMTU6MDk6NTMgLTAwMDAKQEAgLTAsMCArMSwzOCBAQAorLS0t
 IC4vYnVpbGQvYnVpbGQueG1sLm9yaWcJU3VuIE1hciAyNSAyMzowNzoxNyAyMDA3CisrKysgLi9i
 dWlsZC9idWlsZC54bWwJU3VuIE1hciAyNSAyMzowNzo0NCAyMDA3CitAQCAtNDAsNiArNDAsMzUg
 QEAKKyAgICAtLT4KKyAKKyAgIDx0YXJnZXQgbmFtZT0iaW5pdCIgdW5sZXNzPSJpbml0LmRpc2Fi
 bGUiIGRlcGVuZHM9Il9idWlsZG1hZ2ljOmluaXQiPgorKzwhLS0gTWFrZSBzdXJlIHdlIGhhdmUg
 dGhlIHJpZ2h0IHZlcnNpb24gb2YgQW50IC0tPgorKyAgPHByb3BlcnR5IG5hbWU9ImJ1aWxkbWFn
 aWMuYW50MTUuYmFzZXZlcnNpb24iIHZhbHVlPSIxLjUiLz4KKysgIDxwcm9wZXJ0eSBuYW1lPSJi
 dWlsZG1hZ2ljLmFudDE2LmJhc2V2ZXJzaW9uIiB2YWx1ZT0iMS42Ii8+CisrICA8cHJvcGVydHkg
 bmFtZT0iYnVpbGRtYWdpYy5hbnQxNi5iYXNldmVyc2lvbiIgdmFsdWU9IjEuNyIvPgorKyAgPCEt
 LQorKyAgICAgfCBBZGQgbmV3IGNvbmRpdGlvbnMgZm9yIG90aGVyIHN1cHBvcnRlZCBBbnQgdmVy
 c2lvbnMgd2hlbiB0aGV5CisrICAgICB8IGJlY29tZSBhdmFpYWxibGUuCisrICAgLS0+CisrCisr
 ICA8Y29uZGl0aW9uIHByb3BlcnR5PSJidWlsZG1hZ2ljLmFudC5jb21wYXRpYmxlIj4KKysgICAg
 PG9yPgorKyAgICAgIDxjb250YWlucyBzdHJpbmc9IiR7YW50LnZlcnNpb259IgorKyAgICAgICAg
 c3Vic3RyaW5nPSJBbnQgdmVyc2lvbiAke2J1aWxkbWFnaWMuYW50MTUuYmFzZXZlcnNpb259Ii8+
 CisrICAgICAgPGNvbnRhaW5zIHN0cmluZz0iJHthbnQudmVyc2lvbn0iCisrICAgICAgICBzdWJz
 dHJpbmc9IkFudCB2ZXJzaW9uICR7YnVpbGRtYWdpYy5hbnQxNi5iYXNldmVyc2lvbn0iLz4KKysg
 ICAgICA8Y29udGFpbnMgc3RyaW5nPSIke2FudC52ZXJzaW9ufSIKKysgICAgICAgIHN1YnN0cmlu
 Zz0iQW50IHZlcnNpb24gJHtidWlsZG1hZ2ljLmFudDE3LmJhc2V2ZXJzaW9ufSIvPgorKyAgICA8
 L29yPgorKyAgPC9jb25kaXRpb24+CisrCisrICA8ZmFpbCB1bmxlc3M9ImJ1aWxkbWFnaWMuYW50
 LmNvbXBhdGlibGUiPgorKworKyAgVW5zdXBwb3J0ZWQgQW50IHZlcnNpb246CisrCisrICAgICR7
 YW50LnZlcnNpb259CisrCisrICBQbGVhc2UgaW5zdGFsbCBhIHZlcnNpb24gd2hpY2ggaXMgY29t
 cGF0aWJsZSB3aXRoIEFudCAke2J1aWxkbWFnaWMuYW50MTUuYmFzZXZlcnNpb259IG9yICR7YnVp
 bGRtYWdpYy5hbnQxNi5iYXNldmVyc2lvbn0gb3IgJHtidWlsZG1hZ2ljLmFudDE3LmJhc2V2ZXJz
 aW9ufS4KKysKKysgIDwvZmFpbD4KKyAgIDwvdGFyZ2V0PgorIAorIApJbmRleDogZmlsZXMvcGF0
 Y2gtYnVpbGRtYWdpYy5lbnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogZmlsZXMvcGF0Y2gtYnVpbGRt
 YWdpYy5lbnQKZGlmZiAtTiBmaWxlcy9wYXRjaC1idWlsZG1hZ2ljLmVudAotLS0gL2Rldi9udWxs
 CTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIGZpbGVzL3BhdGNoLWJ1aWxkbWFnaWMuZW50
 CTI1IE1hciAyMDA3IDE1OjEwOjQ1IC0wMDAwCkBAIC0wLDAgKzEsMzcgQEAKKy0tLSAuL3Rvb2xz
 L2V0Yy9idWlsZG1hZ2ljL2J1aWxkbWFnaWMuZW50Lm9yaWcJU3VuIE1hciAyNSAyMzowNTo1NSAy
 MDA3CisrKysgLi90b29scy9ldGMvYnVpbGRtYWdpYy9idWlsZG1hZ2ljLmVudAlTdW4gTWFyIDI1
 IDIzOjA2OjE1IDIwMDcKK0BAIC03LDM0ICs3LDYgQEAKKyA8IS0tIEluaXRpYWxpemUgdGhlIGJ1
 aWxkIHN5c3RlbS4gLS0+CisgPHRhcmdldCBuYW1lPSJfYnVpbGRtYWdpYzppbml0IiB1bmxlc3M9
 ImluaXQuZGlzYWJsZSI+CisgCistICA8IS0tIE1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSByaWdodCB2
 ZXJzaW9uIG9mIEFudCAtLT4KKy0gIDxwcm9wZXJ0eSBuYW1lPSJidWlsZG1hZ2ljLmFudDE1LmJh
 c2V2ZXJzaW9uIiB2YWx1ZT0iMS41Ii8+CistICA8cHJvcGVydHkgbmFtZT0iYnVpbGRtYWdpYy5h
 bnQxNi5iYXNldmVyc2lvbiIgdmFsdWU9IjEuNiIvPgorLSAgCistICA8IS0tCistICAgICB8IEFk
 ZCBuZXcgY29uZGl0aW9ucyBmb3Igb3RoZXIgc3VwcG9ydGVkIEFudCB2ZXJzaW9ucyB3aGVuIHRo
 ZXkKKy0gICAgIHwgYmVjb21lIGF2YWlhbGJsZS4KKy0gICAtLT4KKy0KKy0gIDxjb25kaXRpb24g
 cHJvcGVydHk9ImJ1aWxkbWFnaWMuYW50LmNvbXBhdGlibGUiPgorLSAgICA8b3I+CistICAgICAg
 PGNvbnRhaW5zIHN0cmluZz0iJHthbnQudmVyc2lvbn0iCistICAgICAgICBzdWJzdHJpbmc9IkFu
 dCB2ZXJzaW9uICR7YnVpbGRtYWdpYy5hbnQxNS5iYXNldmVyc2lvbn0iLz4KKy0gICAgICA8Y29u
 dGFpbnMgc3RyaW5nPSIke2FudC52ZXJzaW9ufSIKKy0gICAgICAgIHN1YnN0cmluZz0iQW50IHZl
 cnNpb24gJHtidWlsZG1hZ2ljLmFudDE2LmJhc2V2ZXJzaW9ufSIvPgorLSAgICA8L29yPgorLSAg
 PC9jb25kaXRpb24+CistCistICA8ZmFpbCB1bmxlc3M9ImJ1aWxkbWFnaWMuYW50LmNvbXBhdGli
 bGUiPgorLQorLSAgVW5zdXBwb3J0ZWQgQW50IHZlcnNpb246CistCistICAgICR7YW50LnZlcnNp
 b259CistCistICBQbGVhc2UgaW5zdGFsbCBhIHZlcnNpb24gd2hpY2ggaXMgY29tcGF0aWJsZSB3
 aXRoIEFudCAke2J1aWxkbWFnaWMuYW50MTUuYmFzZXZlcnNpb259IG9yICR7YnVpbGRtYWdpYy5h
 bnQxNi5iYXNldmVyc2lvbn0uCistCistICA8L2ZhaWw+CistCisgICA8IS0tIEpESyBEZXRlY3Rp
 b24gLS0+CisgICA8YXZhaWxhYmxlIGNsYXNzbmFtZT0iamF2YS5sYW5nLlN0YWNrVHJhY2VFbGVt
 ZW50IiBwcm9wZXJ0eT0iSEFWRV9KREtfMS40Ii8+CisgICA8YXZhaWxhYmxlIGNsYXNzbmFtZT0i
 amF2YS5sYW5nLkVudW0iIHByb3BlcnR5PSJIQVZFX0pES18xLjUiLz4KSW5kZXg6IGZpbGVzL3Br
 Zy1kZWluc3RhbGwuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogZmlsZXMvcGtnLWRlaW5zdGFsbC5p
 bgpkaWZmIC1OIGZpbGVzL3BrZy1kZWluc3RhbGwuaW4KLS0tIC9kZXYvbnVsbAkxIEphbiAxOTcw
 IDAwOjAwOjAwIC0wMDAwCisrKyBmaWxlcy9wa2ctZGVpbnN0YWxsLmluCTE0IEp1bCAyMDAzIDEw
 OjAzOjEzIC0wMDAwCkBAIC0wLDAgKzEsMzUgQEAKKyMhL2Jpbi9zaAorIworIyBUaGlzIHNjcmlw
 dCBkb2VzIHRoZSBmb2xsb3dpbmcuCisjCisjICogQ2hlY2tzIGlmIHRoZSBKQm9zcyBQSUQgZmls
 ZSBleGlzdHMuIElmIGl0IGRvZXMsIGl0IGtpbGxzIHRoZQorIyAgIEpCb3NzIHByb2Nlc3MgYW5k
 IHJlbW92ZXMgdGhlIFBJRCBmaWxlLgorIworIyAkRnJlZUJTRDogcG9ydHMvamF2YS9qYm9zczQv
 cGtnLWRlaW5zdGFsbCx2IDEuMiAyMDAzLzA3LzE0IDEwOjAzOjEzIGRlcyBFeHAgJAorIworCisj
 IE1ha2Ugc3VyZSB3ZSdyZSBpbiB0aGUgcmlnaHQgc3RhZ2Ugb2YgdGhlIHByb2Nlc3MKK2lmIFsg
 IiQyIiA9ICJERUlOU1RBTEwiIF07IHRoZW4KKworCSMgS2lsbCBKQm9zcyBpZiBpdCBpcyBzdGls
 bCBydW5uaW5nCisJUElEX0ZJTEU9L3Zhci9ydW4vamJvc3MucGlkCisJaWYgWyAtcyAke1BJRF9G
 SUxFfSBdOyB0aGVuCisJCVBJRD1gY2F0ICR7UElEX0ZJTEV9YAorCQllY2hvIC1uICI+PiBLaWxs
 aW5nIEpCb3NzIFNlcnZlciBwcm9jZXNzICgke1BJRH0pLi4uIgorCQkvYmluL2tpbGwgJHtQSUR9
 ID4gL2Rldi9udWxsIDI+IC9kZXYvbnVsbAorCQlpZiBbICQ/IC1lcSAwIF07IHRoZW4KKwkJCWVj
 aG8gIiBbIERPTkUgXSIKKwkJZWxzZQorCQkJZWNobyAiIFsgRkFJTEVEIF0iCisJCWZpCisJCWVj
 aG8gLW4gIj4+IFJlbW92aW5nIFBJRCBmaWxlICgke1BJRF9GSUxFfSkuLi4iCisJCXJtICR7UElE
 X0ZJTEV9ID4gL2Rldi9udWxsIDI+IC9kZXYvbnVsbAorCQlpZiBbICQ/IC1lcSAwIF07IHRoZW4K
 KwkJCWVjaG8gIiBbIERPTkUgXSIKKwkJZWxzZQorCQkJZWNobyAiIFsgRkFJTEVEIF0iCisJCWZp
 CisJZmkKK2ZpCisKK2V4aXQgMApJbmRleDogZmlsZXMvcGtnLWluc3RhbGwuaW4KPT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PQpSQ1MgZmlsZTogZmlsZXMvcGtnLWluc3RhbGwuaW4KZGlmZiAtTiBmaWxlcy9wa2ctaW5zdGFs
 bC5pbgotLS0gL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIGZpbGVzL3Br
 Zy1pbnN0YWxsLmluCTI2IEFwciAyMDAyIDIxOjU0OjE1IC0wMDAwCkBAIC0wLDAgKzEsNDYgQEAK
 KyMhL2Jpbi9zaAorIworIyBDaGVja3MgaWYgdGhlICd3d3cnIHVzZXIgYW5kIGdyb3VwIGV4aXN0
 LiBJZiB0aGV5IGRvbid0LCB0aGVuCisjIGFuIGF0dGVtcHQgaXMgbWFkZSB0byBjcmVhdGUgYm90
 aC4KKyMKKyMgJEZyZWVCU0Q6IHBvcnRzL2phdmEvamJvc3M0L3BrZy1pbnN0YWxsLHYgMS4xIDIw
 MDIvMDQvMjYgMjE6NTQ6MTUgem5lcmQgRXhwICQKKyMKKworIyBNYWtlIHN1cmUgd2UncmUgY2Fs
 bGVkIGR1cmluZyB0aGUgJ21ha2UgaW5zdGFsbCcgcHJvY2VzcworaWYgWyAiJDIiICE9ICJQUkUt
 SU5TVEFMTCIgXTsgdGhlbgorICAgIGV4aXQgMAorZmkKKworIyBTZXQgc29tZSBjb25zdGFudHMK
 K1VTRVI9d3d3CitHUk9VUD0ke1VTRVJ9CitVSUQ9ODAKK0dJRD0ke1VJRH0KKworIyBTZWUgaWYg
 dGhlIGdyb3VwIGFscmVhZHkgZXhpc3RzCitpZiAhIHB3IGdyb3Vwc2hvdyAiJHtHUk9VUH0iIDI+
 L2Rldi9udWxsIDE+JjI7IHRoZW4KKworCSMgSWYgbm90LCB0cnkgdG8gY3JlYXRlIGl0CisJaWYg
 cHcgZ3JvdXBhZGQgJHtHUk9VUH0gLWcgJHtHSUR9OyB0aGVuCisJCWVjaG8gIkFkZGVkIGdyb3Vw
 IFwiJHtHUk9VUH1cIi4iCisJZWxzZQorCQllY2hvICJBZGRpbmcgZ3JvdXAgXCIke0dST1VQfVwi
 IGZhaWxlZC4uLiIKKwkJZXhpdCAxCisJZmkKK2ZpCisKKyMgU2VlIGlmIHRoZSB1c2VyIGFscmVh
 ZHkgZXhpc3RzCitpZiAhIHB3IHVzZXJzaG93ICIke1VTRVJ9IiAyPi9kZXYvbnVsbCAxPiYyOyB0
 aGVuCisKKwkjIElmIG5vdCwgdHJ5IHRvIGNyZWF0ZSBpdAorCWlmIHB3IHVzZXJhZGQgJHtVU0VS
 fSAtdSAke1VJRH0gLWcgJHtHUk9VUH0gLWggLSBcCisJCS1zICIvc2Jpbi9ub2xvZ2luIiAtZCAi
 L25vbmV4aXN0ZW50IiBcCisJCS1jICJXb3JsZCBXaWRlIFdlYiBPd25lciI7IFwKKwl0aGVuCisJ
 CWVjaG8gIkFkZGVkIHVzZXIgXCIke1VTRVJ9XCIuIgorCWVsc2UKKwkJZWNobyAiQWRkaW5nIHVz
 ZXIgXCIke1VTRVJ9XCIgZmFpbGVkLi4uIgorCQlleGl0IDEKKwlmaQorZmkKK2V4aXQgMApJbmRl
 eDogZmlsZXMvcGtnLW1lc3NhZ2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogZmlsZXMvcGtnLW1lc3Nh
 Z2UKZGlmZiAtTiBmaWxlcy9wa2ctbWVzc2FnZQotLS0gZmlsZXMvcGtnLW1lc3NhZ2UJMjIgRGVj
 IDIwMDQgMjA6NDQ6MjMgLTAwMDAJMS4xCisrKyAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDow
 MCAtMDAwMApAQCAtMSw3ICswLDAgQEAKLSUlUEtHTkFNRSUlIGhhcyBiZWVuIGluc3RhbGxlZCBp
 biAlJUFQUF9IT01FJSUuCi0KLUlmIGEgdXNlciBzaG91bGQgYmUgYWJsZSB0byB1c2UgJSVDT05U
 Uk9MX1NDUklQVF9OQU1FJSUsIHB1dCBpdCBpbiB0aGUgZ3JvdXAgJyUlR1JPVVAlJScuCi0KLVVz
 ZSAnbWFuICUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlJyBmb3IgaW5mb3JtYXRpb24gYWJvdXQgc3Rh
 cnRpbmcgYW5kIHN0b3BwaW5nICUlQVBQX1RJVExFJSUuCi0KLVRvIHJ1biB0aGUgJSVBUFBfVElU
 TEUlJSBzZXJ2ZXIgZnJvbSBzdGFydHVwLCBhZGQgJSVBUFBfU0hPUlROQU1FJSVfZW5hYmxlPSJZ
 RVMiIGluIHlvdXIgL2V0Yy9yYy5jb25mLiBFeHRyYSBvcHRpb25zIGNhbiBiZSBmb3VuZCBpbiB0
 aGUgc3RhcnR1cCBzY3JpcHQuCkluZGV4OiBmaWxlcy9wa2ctbWVzc2FnZS5pbgo9PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 ClJDUyBmaWxlOiBmaWxlcy9wa2ctbWVzc2FnZS5pbgpkaWZmIC1OIGZpbGVzL3BrZy1tZXNzYWdl
 LmluCi0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgZmlsZXMvcGtn
 LW1lc3NhZ2UuaW4JMjIgRGVjIDIwMDQgMjA6NDQ6MjMgLTAwMDAKQEAgLTAsMCArMSw3IEBACisl
 JVBLR05BTUUlJSBoYXMgYmVlbiBpbnN0YWxsZWQgaW4gJSVBUFBfSE9NRSUlLgorCitJZiBhIHVz
 ZXIgc2hvdWxkIGJlIGFibGUgdG8gdXNlICUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlLCBwdXQgaXQg
 aW4gdGhlIGdyb3VwICclJUdST1VQJSUnLgorCitVc2UgJ21hbiAlJUNPTlRST0xfU0NSSVBUX05B
 TUUlJScgZm9yIGluZm9ybWF0aW9uIGFib3V0IHN0YXJ0aW5nIGFuZCBzdG9wcGluZyAlJUFQUF9U
 SVRMRSUlLgorCitUbyBydW4gdGhlICUlQVBQX1RJVExFJSUgc2VydmVyIGZyb20gc3RhcnR1cCwg
 YWRkICUlQVBQX1NIT1JUTkFNRSUlX2VuYWJsZT0iWUVTIiBpbiB5b3VyIC9ldGMvcmMuY29uZi4g
 RXh0cmEgb3B0aW9ucyBjYW4gYmUgZm91bmQgaW4gdGhlIHN0YXJ0dXAgc2NyaXB0LgpJbmRleDog
 ZmlsZXMvc3RhcnR1cC5zaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBmaWxlcy9zdGFydHVwLnNoCmRp
 ZmYgLU4gZmlsZXMvc3RhcnR1cC5zaAotLS0gZmlsZXMvc3RhcnR1cC5zaAkxMyBKdW4gMjAwNiAx
 Nzo0MzoxNCAtMDAwMAkxLjQKKysrIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAw
 CkBAIC0xLDYxICswLDAgQEAKLSMhL2Jpbi9zaAotIwotIyAlJUFQUF9USVRMRSUlIHN0YXJ0dXAg
 c2NyaXB0LgotIwotIyAkRnJlZUJTRDogcG9ydHMvamF2YS9qYm9zczQvZmlsZXMvc3RhcnR1cC5z
 aCx2IDEuNCAyMDA2LzA2LzEzIDE3OjQzOjE0IGdsZXdpcyBFeHAgJAotIwotCi0jIFBST1ZJREU6
 ICUlQVBQX1NIT1JUTkFNRSUlCi0jIFJFUVVJUkU6IE5FVFdPUktJTkcgU0VSVkVSUwotCi0jIEFk
 ZCB0aGUgZm9sbG93aW5nIGxpbmVzIHRvIC9ldGMvcmMuY29uZiB0byBlbmFibGUgJSVBUFBfU0hP
 UlROQU1FJSU6Ci0jICUlQVBQX1NIT1JUTkFNRSUlX2VuYWJsZSAoYm9vbCk6CQlTZXQgdG8gIk5P
 IiBieSBkZWZhdWx0LgotIwkJCQlTZXQgaXQgdG8gIllFUyIgdG8gZW5hYmxlICUlQVBQX1NIT1JU
 TkFNRSUlCi0jICUlQVBQX1NIT1JUTkFNRSUlX2ZsYWdzIChzdHIpOgkJU2V0IHRvICItc2VydmVy
 IiBieSBkZWZhdWx0LgotIwkJCQlFeHRyYSBKVk0gZmxhZ3MuCi0jICUlQVBQX1NIT1JUTkFNRSUl
 X2NvbmZpZyAoc3RyKToJCVNldCB0byAiIiBieSBkZWZhdWx0Ci0jCQkJCUpCb3NzIHNlcnZlciBj
 b25maWcsIGVnIHthbGx8ZGVmYXVsdHxtaW5pbWFsfHN0YW5kYXJkfQotIwotLiAlJVJDX1NVQlIl
 JQotCi1uYW1lPSIlJUFQUF9TSE9SVE5BTUUlJSIKLXJjdmFyPWBzZXRfcmN2YXJgCi0KLXN0YXJ0
 X2NtZD0iJSVBUFBfU0hPUlROQU1FJSVfc3RhcnQiCi1yZXN0YXJ0X2NtZD0iJSVBUFBfU0hPUlRO
 QU1FJSVfcmVzdGFydCIKLXBpZGZpbGU9IiUlUElEX0ZJTEUlJSIKLXByb2NuYW1lPSIlJUpBVkEl
 JSIKLQotWyAteiAiJCUlQVBQX1NIT1JUTkFNRSUlX2VuYWJsZSIgXQkmJiAlJUFQUF9TSE9SVE5B
 TUUlJV9lbmFibGU9Ik5PIgotWyAteiAiJCUlQVBQX1NIT1JUTkFNRSUlX2ZsYWdzIiBdCSYmICUl
 QVBQX1NIT1JUTkFNRSUlX2ZsYWdzPSItc2VydmVyIgotWyAteiAiJCUlQVBQX1NIT1JUTkFNRSUl
 X2NvbmZpZyIgXQkmJiAlJUFQUF9TSE9SVE5BTUUlJV9jb25maWc9IiIKLQotJSVBUFBfU0hPUlRO
 QU1FJSVfc3RhcnQgKCkKLXsKLQljaGVja3llc25vICUlQVBQX1NIT1JUTkFNRSUlX2VuYWJsZSAm
 JgotCXsKLQkJaWYgWyAhIC1mICR7cGlkZmlsZX0gXQotCQl0aGVuCi0JCQl0b3VjaCAke3BpZGZp
 bGV9Ci0JCQljaG93biAlJVVTRVIlJTolJUdST1VQJSUgJHtwaWRmaWxlfQotCQlmaQotCi0JCWVj
 aG8gIlN0YXJ0aW5nICUlQVBQX1NIT1JUTkFNRSUlLiIKLQkJJSVDT05UUk9MX1NDUklQVCUlIC1x
 ICR7JSVBUFBfU0hPUlROQU1FJSVfZmxhZ3N9ICR7JSVBUFBfU0hPUlROQU1FJSVfY29uZmlnZmxh
 Z30gJHslJUFQUF9TSE9SVE5BTUUlJV9jb25maWd9IHN0YXJ0Ci0JfQotfQotCi0lJUFQUF9TSE9S
 VE5BTUUlJV9yZXN0YXJ0ICgpCi17Ci0JY2hlY2t5ZXNubyAlJUFQUF9TSE9SVE5BTUUlJV9lbmFi
 bGUgJiYKLQl7Ci0JCWVjaG8gIlJlc3RhcnRpbmcgJSVBUFBfU0hPUlROQU1FJSUuIgotCQklJUNP
 TlRST0xfU0NSSVBUJSUgLXEgJHslJUFQUF9TSE9SVE5BTUUlJV9mbGFnc30gJHslJUFQUF9TSE9S
 VE5BTUUlJV9jb25maWdmbGFnfSAkeyUlQVBQX1NIT1JUTkFNRSUlX2NvbmZpZ30gcmVzdGFydAot
 CX0KLX0KLQotbG9hZF9yY19jb25maWcgJG5hbWUKLQotWyAtbiAiJHslJUFQUF9TSE9SVE5BTUUl
 JV9jb25maWd9IiBdICYmICUlQVBQX1NIT1JUTkFNRSUlX2NvbmZpZ2ZsYWc9Ii1jb25maWciCi0K
 LXJ1bl9yY19jb21tYW5kICIkMSIK
 ------=_Part_225929_4138004.1174837395459--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200703251550.l2PFoCF6079774>