<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "http://bugs.gentoo.org/bugzilla.dtd">

<bugzilla version="2.22.7"
          urlbase="http://bugs.gentoo.org/"
          maintainer="bugzilla@gentoo.org"
>

    <bug>
          <bug_id>218016</bug_id>
          
          <creation_ts>2008-04-16 20:52 0000</creation_ts>
          <short_desc>media-sound/alsa-patch-bay-1.0.0-r2 will not compile with my GCC 4.3 toolchain on amd64</short_desc>
          <delta_ts>2008-06-09 10:38:09 0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>Gentoo Linux</product>
          <component>GCC Porting</component>
          <version>unspecified</version>
          <rep_platform>AMD64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>198121</blocked>
          
          <everconfirmed>1</everconfirmed>
          <reporter>hackablecrap@hotmail.com</reporter>
          <assigned_to>proaudio@gentoo.org</assigned_to>
          <cc>esigra@gmail.com</cc>

      

      
          <long_desc isprivate="0">
            <who>hackablecrap@hotmail.com</who>
            <bug_when>2008-04-16 20:52:13 0000</bug_when>
            <thetext>Trying to get my system completely rebuilt with GCC 4.3 (to take advantage of the march=core2 setting), this is one of the last packages that I can&apos;t build on my toolchain. One of the others is gtkmm, so I tried to build this with fltk instead.
Got an error about something not being defined in the current scope. Tried it again with a -jack USE flag, got another error during compile.



Reproducible: Always

Steps to Reproduce:
1.emerge alsa-patch-bay with the fltk, jack, and alsa USE flags, and WITHOUT the gtkmm USE flag(the gtkmm package required for alsa-patch-bay doesn&apos;t compile with gcc 4.3 either, so you have to use fltk)
2.
3.

Actual Results:  

jack-addr.cpp: In member function ‘std::string APB::Jack::Addr::client() const’:
jack-addr.cpp:41: error: ‘strdup’ was not declared in this scope
jack-addr.cpp:43: error: ‘strchr’ was not declared in this scope
jack-addr.cpp:49: error: ‘free’ was not declared in this scope
jack-addr.cpp: In member function ‘std::string APB::Jack::Addr::port() const’:
jack-addr.cpp:59: error: ‘strchr’ was not declared in this scope
make[4]: *** [jack_so-jack-addr.o] Error 1
make[4]: *** Waiting for unfinished jobs....
jack-driver.cpp: In function ‘int APB::Jack::jackGraphOrderCallback(void*)’:
jack-driver.cpp:36: error: ‘strerror’ was not declared in this scope
jack-driver.cpp: In constructor ‘APB::Jack::Driver::Driver(const std::string&amp;, int*, char***)’:
jack-driver.cpp:49: error: ‘strdup’ was not declared in this scope
jack-driver.cpp:51: error: ‘strchr’ was not declared in this scope
jack-driver.cpp:60: error: ‘abort’ was not declared in this scope
jack-driver.cpp:63: error: ‘free’ was not declared in this scope
jack-driver.cpp: In member function ‘void APB::Jack::Driver::refreshPortList(std::list&lt;APB::Addr*, std::allocator&lt;APB::Addr*&gt; &gt;&amp;, JackPortFlags)’:
jack-driver.cpp:157: error: ‘free’ was not declared in this scope
jack-driver.cpp: In member function ‘virtual void APB::Jack::Driver::refreshSubscriptions()’:
jack-driver.cpp:226: error: ‘free’ was not declared in this scope
make[4]: *** [jack_so-jack-driver.o] Error 1


my system: 
x86_64 2.6.24.4
GCC 4.3.0
binutils 2.18
linux-headers 2.6.24
glibc 2.7

app-shells/bash:     3.2_p33
dev-java/java-config: 1.3.7, 2.1.5
dev-lang/python:     2.5.1-r5
sys-apps/baselayout: 1.12.12
sys-apps/sandbox:    1.2.18.1-r2
sys-devel/autoconf:  2.13, 2.61-r1
sys-devel/automake:  1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10.1
sys-devel/binutils:  2.16.1-r3, 2.18-r1
sys-devel/gcc-config: 1.4.0-r4
sys-devel/libtool:   1.5.26
virtual/os-headers:  2.6.24

when i compile without jack support i get this error:
driver.cpp: In constructor ‘APB::Driver::Driver()’:
driver.cpp:34: error: ‘exit’ was not declared in this scope
driver.cpp:45: error: ‘exit’ was not declared in this scope
make[3]: *** [alsa_patch_bay-driver.o] Error 1
make[3]: *** Waiting for unfinished jobs....
misc.cpp: In function ‘int APB::randomNumber(double, double)’:
misc.cpp:37: error: ‘rand’ was not declared in this scope
misc.cpp:37: error: ‘RAND_MAX’ was not declared in this scope
make[3]: *** [alsa_patch_bay-misc.o] Error 1

Expected Results:  
The application should compile correctly with gcc 4.3</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>hackablecrap@hotmail.com</who>
            <bug_when>2008-04-17 22:57:19 0000</bug_when>
            <thetext>Created an attachment (id=150113)
media-sounsd/alsa-patch-bay-1.0.0-gcc43.patch

I&apos;m a noob who doesn&apos;t know how to program, use at your own risk.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>flameeyes@gentoo.org</who>
            <bug_when>2008-04-18 04:48:51 0000</bug_when>
            <thetext>When you prepare patches you should probably use -x &apos;*~&apos; to avoid patching in backup files :)

Moving this to proaudio, I&apos;ll update metadata, as this is less desktop-sound stuff.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>loki_val@gentoo.org</who>
            <bug_when>2008-06-09 10:38:09 0000</bug_when>
            <thetext>+  09 Jun 2008; Peter Alfredsen &lt;loki_val@gentoo.org&gt;
+  +files/alsa-patch-bay-1.0.0-gcc43.patch, alsa-patch-bay-1.0.0-r2.ebuild:
+  Gcc-4.3.0 fix; bug 218016; Thanks to terry lava &lt;hackablecrap@hotmail.com&gt;
+
</thetext>
          </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150113</attachid>
            <date>2008-04-17 22:57 0000</date>
            <desc>media-sounsd/alsa-patch-bay-1.0.0-gcc43.patch</desc>
            <filename>alsa-patch-bay-1.0.0-gcc43.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">ZGlmZiAtTmF1ciBhbHNhLXBhdGNoLWJheS0xLjAuMC1vcmlnL3NyYy9kcml2ZXIvamFjay9qYWNr
LWFkZHIuY3BwIGFsc2EtcGF0Y2gtYmF5LTEuMC4wL3NyYy9kcml2ZXIvamFjay9qYWNrLWFkZHIu
Y3BwCi0tLSBhbHNhLXBhdGNoLWJheS0xLjAuMC1vcmlnL3NyYy9kcml2ZXIvamFjay9qYWNrLWFk
ZHIuY3BwICAgICAyMDAzLTAyLTA3IDEzOjA2OjI1LjAwMDAwMDAwMCAtMDgwMAorKysgYWxzYS1w
YXRjaC1iYXktMS4wLjAvc3JjL2RyaXZlci9qYWNrL2phY2stYWRkci5jcHAgIDIwMDgtMDQtMTYg
MjA6MDI6MDAuMDAwMDAwMDAwIC0wNzAwCkBAIC0xMCw3ICsxMCw4IEBACiAgKi8KCiAjaW5jbHVk
ZSA8aW9zdHJlYW0+Ci0KKyNpbmNsdWRlIDxjc3RyaW5nPgorI2luY2x1ZGUgPGNzdGRsaWI+CiAj
aW5jbHVkZSAiamFjay1hZGRyLmgiCgogbmFtZXNwYWNlIEFQQiB7CmRpZmYgLU5hdXIgYWxzYS1w
YXRjaC1iYXktMS4wLjAtb3JpZy9zcmMvZHJpdmVyL2phY2svamFjay1hZGRyLmNwcH4gYWxzYS1w
YXRjaC1iYXktMS4wLjAvc3JjL2RyaXZlci9qYWNrL2phY2stYWRkci5jcHB+Ci0tLSBhbHNhLXBh
dGNoLWJheS0xLjAuMC1vcmlnL3NyYy9kcml2ZXIvamFjay9qYWNrLWFkZHIuY3BwfiAgICAxOTY5
LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAorKysgYWxzYS1wYXRjaC1iYXktMS4wLjAv
c3JjL2RyaXZlci9qYWNrL2phY2stYWRkci5jcHB+IDIwMDMtMDItMDcgMTM6MDY6MjUuMDAwMDAw
MDAwIC0wODAwCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBBTFNBIFBhdGNoIEJheQorICoKKyAq
IENvcHlyaWdodCAoQykgMjAwMiBSb2JlcnQgSGFtIChub2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5l
dCkKKyAqCisgKiBZb3UgaGF2ZSBwZXJtaXNzaW9uIHRvIHVzZSB0aGlzIGZpbGUgdW5kZXIgdGhl
IEdOVSBHZW5lcmFsCisgKiBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyIG9yIGxhdGVyLiAgU2Vl
IHRoZSBmaWxlIENPUFlJTkcKKyAqIGZvciB0aGUgZnVsbCB0ZXh0LgorICoKKyAqLworCisjaW5j
bHVkZSA8aW9zdHJlYW0+CisKKyNpbmNsdWRlICJqYWNrLWFkZHIuaCIKKworbmFtZXNwYWNlIEFQ
QiB7CituYW1lc3BhY2UgSmFjayB7CisKK0FkZHI6OiBBZGRyIChjb25zdCBzdGQ6OnN0cmluZyAm
cG9ydE5hbWUsIERyaXZlciAqIGRyaXZlcikKKzogX3BvcnROYW1lIChwb3J0TmFtZSksCisgIF9k
cml2ZXIgKGRyaXZlcikKK3sKK30KKworQWRkcjo6IEFkZHIgKGNvbnN0IEFkZHImIGFkZHIpCis6
IF9wb3J0TmFtZSAoYWRkci5fcG9ydE5hbWUpLAorICBfZHJpdmVyIChhZGRyLl9kcml2ZXIpCit7
Cit9CisKK0FkZHI6OiB+QWRkciAoKQoreworfQorCitzdGQ6OnN0cmluZworQWRkcjo6IGNsaWVu
dCAoKSBjb25zdAoreworICBjaGFyICogY2xpZW50OworICBjaGFyICogcHRyOworCisgIGNsaWVu
dCA9IHN0cmR1cCAoX3BvcnROYW1lLmNfc3RyKCkpOworCisgIHB0ciA9IHN0cmNociAoY2xpZW50
LCAnOicpOworICBpZiAocHRyKQorICAgICpwdHIgPSAnXDAnOworCisKKyAgc3RkOjpzdHJpbmcg
Y2xpZW50cyAoY2xpZW50KTsKKyAgZnJlZSAoY2xpZW50KTsKKworICByZXR1cm4gY2xpZW50czsK
K30KKworc3RkOjpzdHJpbmcKK0FkZHI6OiBwb3J0ICgpIGNvbnN0Cit7CisgIGNoYXIgKiBwdHI7
CisKKyAgcHRyID0gc3RyY2hyIChfcG9ydE5hbWUuY19zdHIoKSwgJzonKTsKKyAgcHRyKys7CisK
KyAgc3RkOjpzdHJpbmcgcG9ydHMgKHB0cik7CisKKyAgcmV0dXJuIHBvcnRzOworfQorCitjb25z
dCBjaGFyICoKK0FkZHI6OiBwb3J0TmFtZSAoKSBjb25zdAoreworICByZXR1cm4gX3BvcnROYW1l
LmNfc3RyICgpOworfQorCitib29sCitBZGRyOjogZXF1YWxzIChjb25zdCBBUEI6OkFkZHIgKiBh
ZGRyKSBjb25zdAoreworICBjb25zdCBBZGRyICogYSA9IChjb25zdCBBZGRyICopIGFkZHI7CisK
KyAgcmV0dXJuIF9wb3J0TmFtZSA9PSBhLT5fcG9ydE5hbWU7Cit9CisKK2Jvb2wKK0FkZHI6OiBj
bGllbnRFcXVhbHMgKGNvbnN0IEFQQjo6QWRkciAqIGFkZHIpIGNvbnN0Cit7CisgIGNvbnN0IEFk
ZHIgKiBhID0gKGNvbnN0IEFkZHIgKikgYWRkcjsKKworICByZXR1cm4gY2xpZW50KCkgPT0gYS0+
Y2xpZW50KCk7Cit9CisKK3N0ZDo6c3RyaW5nCitBZGRyOjogZ2V0TmFtZSAoKSBjb25zdAorewor
ICByZXR1cm4gX3BvcnROYW1lOworfQorCit9IC8qIG5hbWVzcGFjZSBKYWNrICovCit9IC8qIG5h
bWVzcGFjZSBBUEIgKi8KKworLyogRU9GICovCisKZGlmZiAtTmF1ciBhbHNhLXBhdGNoLWJheS0x
LjAuMC1vcmlnL3NyYy9kcml2ZXIvamFjay9qYWNrLWRyaXZlci5jcHAgYWxzYS1wYXRjaC1iYXkt
MS4wLjAvc3JjL2RyaXZlci9qYWNrL2phY2stZHJpdmVyLmNwcAotLS0gYWxzYS1wYXRjaC1iYXkt
MS4wLjAtb3JpZy9zcmMvZHJpdmVyL2phY2svamFjay1kcml2ZXIuY3BwICAgMjAwMy0wMi0wOCAw
Mjo1MDozNC4wMDAwMDAwMDAgLTA4MDAKKysrIGFsc2EtcGF0Y2gtYmF5LTEuMC4wL3NyYy9kcml2
ZXIvamFjay9qYWNrLWRyaXZlci5jcHAgICAgICAgIDIwMDgtMDQtMTYgMjA6MDA6MzMuMDAwMDAw
MDAwIC0wNzAwCkBAIC0xOCw3ICsxOCw4IEBACiAjaW5jbHVkZSAibWlzYy5oIgogI2luY2x1ZGUg
InBsdWdpbi5oIgogI2luY2x1ZGUgInVpLmgiCi0KKyNpbmNsdWRlIDxjc3RkbGliPgorI2luY2x1
ZGUgPGNzdHJpbmc+CiBuYW1lc3BhY2UgQVBCIHsKIG5hbWVzcGFjZSBKYWNrIHsKCmRpZmYgLU5h
dXIgYWxzYS1wYXRjaC1iYXktMS4wLjAtb3JpZy9zcmMvZHJpdmVyL2phY2svamFjay1kcml2ZXIu
Y3BwfiBhbHNhLXBhdGNoLWJheS0xLjAuMC9zcmMvZHJpdmVyL2phY2svamFjay1kcml2ZXIuY3Bw
fgotLS0gYWxzYS1wYXRjaC1iYXktMS4wLjAtb3JpZy9zcmMvZHJpdmVyL2phY2svamFjay1kcml2
ZXIuY3BwfiAgMTk2OS0xMi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAKKysrIGFsc2EtcGF0
Y2gtYmF5LTEuMC4wL3NyYy9kcml2ZXIvamFjay9qYWNrLWRyaXZlci5jcHB+ICAgICAgIDIwMDgt
MDQtMTYgMTk6NTY6NTAuMDAwMDAwMDAwIC0wNzAwCkBAIC0wLDAgKzEsMzMwIEBACisvKgorICog
QUxTQSBQYXRjaCBCYXkKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDIgUm9iZXJ0IEhhbSAobm9k
ZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQpCisgKgorICogWW91IGhhdmUgcGVybWlzc2lvbiB0byB1
c2UgdGhpcyBmaWxlIHVuZGVyIHRoZSBHTlUgR2VuZXJhbAorICogUHVibGljIExpY2Vuc2UsIHZl
cnNpb24gMiBvciBsYXRlci4gIFNlZSB0aGUgZmlsZSBDT1BZSU5HCisgKiBmb3IgdGhlIGZ1bGwg
dGV4dC4KKyAqCisgKi8KKworI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+
CisjaW5jbHVkZSA8ZXJybm8uaD4KKworI2luY2x1ZGUgImphY2stZHJpdmVyLmgiCisjaW5jbHVk
ZSAiamFjay1hZGRyLmgiCisjaW5jbHVkZSAibWlzYy5oIgorI2luY2x1ZGUgInBsdWdpbi5oIgor
I2luY2x1ZGUgInVpLmgiCisKKyNpbmNsdWRlIDxjc3RyaW5nPgorbmFtZXNwYWNlIEFQQiB7Citu
YW1lc3BhY2UgSmFjayB7CisKK3N0YXRpYyBpbnQKK2phY2tHcmFwaE9yZGVyQ2FsbGJhY2sgKHZv
aWQgKiBkYXRhKQoreworICBjaGFyIHJlZnJlc2ggPSAxOworICBzc2l6ZV90IGVycjsKKyAgaW50
IHJlZnJlc2hXcml0ZUZpbGUgPSAqKGludCAqKWRhdGE7CisKKyAgZXJyID0gd3JpdGUgKHJlZnJl
c2hXcml0ZUZpbGUsICZyZWZyZXNoLCBzaXplb2YgKHJlZnJlc2gpKTsKKyAgaWYgKGVyciA9PSAt
MSkKKyAgICB7CisgICAgICBzdGQ6OmNlcnIgPDwgImVycm9yIHdyaXRpbmcgdG8gcmVmcmVzaCBw
aXBlOiAiCisgICAgICAgICAgICAgICAgPDwgc3RyZXJyb3IgKGVycm5vKQorICAgICAgICAgICAg
ICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICAgIHJldHVybiAxOworICAgIH0KKworICByZXR1cm4gMDsK
K30KKworRHJpdmVyOjogRHJpdmVyIChjb25zdCBzdGQ6OnN0cmluZyYgdGl0bGUsIGludCAqIGFy
Z2MsIGNoYXIgKioqIGFyZ3YpCit7CisgIGNoYXIgKiBjbGllbnRfbmFtZTsKKyAgY2hhciAqIHB0
cjsKKworICBjbGllbnRfbmFtZSA9IHN0cmR1cCAodGl0bGUuY19zdHIgKCkpOworICBwdHIgPSBj
bGllbnRfbmFtZTsKKyAgd2hpbGUgKCAocHRyID0gc3RyY2hyIChwdHIsICcgJykpICkKKyAgICAq
cHRyID0gJ18nOworCisgIF9qYWNrQ2xpZW50ID0gamFja19jbGllbnRfbmV3IChjbGllbnRfbmFt
ZSk7CisgIGlmICghX2phY2tDbGllbnQpCisgICAgeworICAgICAgc3RkOjpjZXJyIDw8IF9fRlVO
Q1RJT05fXworICAgICAgICAgICAgICAgIDw8ICI6IGNvdWxkIG5vdCBjb25uZWN0IHRvIGphY2tk
IgorICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICAgIGFib3J0ICgpOworICAgIH0K
KworICBmcmVlIChjbGllbnRfbmFtZSk7CisKKyAgamFja19zZXRfZ3JhcGhfb3JkZXJfY2FsbGJh
Y2sgKF9qYWNrQ2xpZW50LCAmamFja0dyYXBoT3JkZXJDYWxsYmFjaywgJl9yZWZyZXNoV3JpdGVG
aWxlKTsKKworICBqYWNrX2FjdGl2YXRlIChfamFja0NsaWVudCk7Cit9CisKK0RyaXZlcjo6IH5E
cml2ZXIgKCkKK3sKKyAgamFja19kZWFjdGl2YXRlIChfamFja0NsaWVudCk7CisKKyAgamFja19j
bGllbnRfY2xvc2UgKF9qYWNrQ2xpZW50KTsKK30KKworc3RkOjpzdHJpbmcKK0RyaXZlcjo6IGZp
bmRDbGllbnROYW1lIChjb25zdCBBUEI6OkFkZHIgKiBhZGRyKSBjb25zdAoreworICBjb25zdCBB
ZGRyICogYSA9IChjb25zdCBBZGRyICopIGFkZHI7CisKKyAgcmV0dXJuIHN0ZDo6c3RyaW5nIChh
LT5jbGllbnQgKCkpOworfQorCitzdGQ6OnN0cmluZworRHJpdmVyOjogZmluZFBvcnROYW1lIChj
b25zdCBBUEI6OkFkZHIgKiBhZGRyKSBjb25zdAoreworICBjb25zdCBBZGRyICogYSA9IChjb25z
dCBBZGRyICopIGFkZHI7CisKKyAgcmV0dXJuIHN0ZDo6c3RyaW5nIChhLT5wb3J0ICgpKTsKK30K
KworY29uc3Qgc3RkOjpsaXN0PEFQQjo6QWRkciAqPiYKK0RyaXZlcjo6IGdldFJlYWRQb3J0cyAo
KQoreworICByZXR1cm4gX3JlYWRQb3J0czsKK30KKworY29uc3Qgc3RkOjpsaXN0PEFQQjo6QWRk
ciAqPiYKK0RyaXZlcjo6IGdldFdyaXRlUG9ydHMgKCkKK3sKKyAgcmV0dXJuIF93cml0ZVBvcnRz
OworfQorCitjb25zdCBzdGQ6Omxpc3Q8Y29uc3QgQVBCOjpTdWJzY3JpcHRpb24gKj4mCitEcml2
ZXI6OiBnZXRTdWJzY3JpcHRpb25zICgpCit7CisgIHN0YXRpYyBzdGQ6Omxpc3Q8Y29uc3QgQVBC
OjpTdWJzY3JpcHRpb24gKj4gc3ViczsKKworICBzdWJzLmNsZWFyICgpOworICBmb3IgKHN0ZDo6
bGlzdDxBUEI6OlN1YnNjcmlwdGlvbiAqPjo6aXRlcmF0b3IgaSA9IF9zdWJzY3JpcHRpb25zLmJl
Z2luICgpOworICAgICAgIGkgIT0gX3N1YnNjcmlwdGlvbnMuZW5kKCk7CisgICAgICAgKytpKQor
ICAgIHsKKyAgICAgIGlmICgoKmkpLT5mcm9tICgpID09IDApCisgICAgICAgIHN0ZDo6Y2VyciA8
PCBERUJVR19TVFJJTkcgPDwgIm51bGwgZnJvbSgpIiA8PCBzdGQ6OmVuZGw7CisgICAgICBpZiAo
KCppKS0+dG8gKCkgPT0gMCkKKyAgICAgICAgc3RkOjpjZXJyIDw8IERFQlVHX1NUUklORyA8PCAi
bnVsbCB0bygpIiA8PCBzdGQ6OmVuZGw7CisgICAgICBzdWJzLnB1c2hfYmFjayAoKmkpOworICAg
IH0KKworICByZXR1cm4gc3ViczsKK30KKwordm9pZAorRHJpdmVyOjogcmVmcmVzaFBvcnRzICgp
Cit7CisgIHJlZnJlc2hQb3J0TGlzdCAoX3JlYWRQb3J0cywgSmFja1BvcnRJc091dHB1dCk7Cisg
IHJlZnJlc2hQb3J0TGlzdCAoX3dyaXRlUG9ydHMsIEphY2tQb3J0SXNJbnB1dCk7CisgIHJlZnJl
c2hTdWJzY3JpcHRpb25zICgpOworfQorCit2b2lkCitEcml2ZXI6OiByZWZyZXNoUG9ydExpc3Qg
KHN0ZDo6bGlzdDxBUEI6OkFkZHIgKj4mIHBvcnRMaXN0LCBlbnVtIEphY2tQb3J0RmxhZ3MgZmxh
Z3MpCit7CisgIGZvciAoc3RkOjpsaXN0PEFQQjo6QWRkciAqPjo6aXRlcmF0b3IgYWQgPSBwb3J0
TGlzdC5iZWdpbigpOworICAgICAgIGFkICE9IHBvcnRMaXN0LmVuZCAoKTsKKyAgICAgICArK2Fk
KQorICAgIHsKKy8qICAgICAgZGVsZXRlICphZDsgKi8KKyAgICB9CisgIHBvcnRMaXN0LmNsZWFy
ICgpOworCisgIGNvbnN0IGNoYXIgKiogamFja19wb3J0cyA9IGphY2tfZ2V0X3BvcnRzIChfamFj
a0NsaWVudCwgTlVMTCwgTlVMTCwgZmxhZ3MpOworCisgIGlmICghamFja19wb3J0cykKKyAgICBy
ZXR1cm47CisKKyAgQWRkciAqIGFkZHI7CisgIGZvciAodW5zaWduZWQgbG9uZyBpID0gMDsgamFj
a19wb3J0c1tpXTsgKytpKQorICAgIHsKKyAgICAgIGFkZHIgPSBuZXcgQWRkciAoc3RkOjpzdHJp
bmcgKGphY2tfcG9ydHNbaV0pLCB0aGlzKTsKKworICAgICAgcG9ydExpc3QucHVzaF9iYWNrIChh
ZGRyKTsKKyAgICB9CisKKyAgZnJlZSAoamFja19wb3J0cyk7Cit9CisKK0FkZHIgKgorRHJpdmVy
OjogZmluZFdyaXRlUG9ydCAoY29uc3QgY2hhciAqIHBvcnROYW1lKQoreworICBBZGRyICogYWRk
cjsKKyAgc3RkOjpzdHJpbmcgcG9ydF9uYW1lIChwb3J0TmFtZSk7CisgIGZvciAoc3RkOjpsaXN0
PEFQQjo6QWRkciAqPjo6Y29uc3RfaXRlcmF0b3Igd3JpdGVBZGRySXRlciA9IF93cml0ZVBvcnRz
LmJlZ2luICgpOworICAgICAgIHdyaXRlQWRkckl0ZXIgIT0gX3dyaXRlUG9ydHMuZW5kICgpOwor
ICAgICAgIHdyaXRlQWRkckl0ZXIrKykKKyAgICB7CisgICAgICBhZGRyID0gKEFkZHIgKikgKndy
aXRlQWRkckl0ZXI7CisKKyAgICAgIGlmIChwb3J0X25hbWUgPT0gYWRkci0+Z2V0TmFtZSAoKSkK
KyAgICAgICAgcmV0dXJuIGFkZHI7CisgICAgfQorCisgIHJldHVybiAwOworfQorCit2b2lkCitE
cml2ZXI6OiByZWZyZXNoU3Vic2NyaXB0aW9ucyAoKQoreworICBmb3IgKHN0ZDo6bGlzdDxBUEI6
OlN1YnNjcmlwdGlvbiAqPjo6aXRlcmF0b3IgcyA9IF9zdWJzY3JpcHRpb25zLmJlZ2luICgpOwor
ICAgICAgIHMgIT0gX3N1YnNjcmlwdGlvbnMuZW5kICgpOworICAgICAgICsrcykKKyAgICB7Cisg
ICAgICBkZWxldGUgKnM7CisgICAgfQorICBfc3Vic2NyaXB0aW9ucy5jbGVhciAoKTsKKworICBq
YWNrX3BvcnRfdCAqIHBvcnQ7CisgIEFkZHIgKiBhZGRyOworICBjb25zdCBjaGFyICoqIGNvbm5l
Y3Rpb25zOworCisgIGZvciAoc3RkOjpsaXN0PEFQQjo6QWRkciAqPjo6Y29uc3RfaXRlcmF0b3Ig
cmVhZEFkZHJJdGVyID0gX3JlYWRQb3J0cy5iZWdpbiAoKTsKKyAgICAgICByZWFkQWRkckl0ZXIg
IT0gX3JlYWRQb3J0cy5lbmQgKCk7CisgICAgICAgKytyZWFkQWRkckl0ZXIpCisgICAgeworICAg
ICAgYWRkciA9IChBZGRyICopICpyZWFkQWRkckl0ZXI7CisgICAgICBwb3J0ID0gamFja19wb3J0
X2J5X25hbWUgKF9qYWNrQ2xpZW50LCBhZGRyLT5wb3J0TmFtZSAoKSk7CisKKyAgICAgIGlmICgh
cG9ydCkKKyAgICAgICAgeworICAgICAgICAgIHN0ZDo6Y2VyciA8PCBfX0ZVTkNUSU9OX18KKyAg
ICAgICAgICAgICAgICAgICAgPDwgIjogY291bGQgbm90IGZpbmQgcG9ydCAnIgorICAgICAgICAg
ICAgICAgICAgICA8PCBhZGRyLT5wb3J0TmFtZSAoKQorICAgICAgICAgICAgICAgICAgICA8PCAi
JyIKKyAgICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisKKyAgICAgIGNvbm5lY3Rpb25zID0gamFja19wb3J0X2dldF9hbGxfY29u
bmVjdGlvbnMgKF9qYWNrQ2xpZW50LCBwb3J0KTsKKworICAgICAgaWYgKCFjb25uZWN0aW9ucykK
KyAgICAgICAgY29udGludWU7CisKKyAgICAgIGZvciAodW5zaWduZWQgbG9uZyBpID0gMDsgY29u
bmVjdGlvbnNbaV07ICsraSkKKyAgICAgICAgeworICAgICAgICAgIEFkZHIgKiB3YWRkciA9IGZp
bmRXcml0ZVBvcnQgKGNvbm5lY3Rpb25zW2ldKTsKKworICAgICAgICAgIGlmICghd2FkZHIpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgIFN1YnNjcmlwdGlvbiAqIHN1YiA9IG5l
dyBTdWJzY3JpcHRpb24gKGFkZHIsIHdhZGRyKTsKKyAgICAgICAgICBfc3Vic2NyaXB0aW9ucy5w
dXNoX2JhY2sgKHN1Yik7CisgICAgICAgIH0KKworICAgICAgZnJlZSAoY29ubmVjdGlvbnMpOwor
ICAgIH0KK30KKwordm9pZAorRHJpdmVyOjogc3Vic2NyaWJlUG9ydHMgKGNvbnN0IEFQQjo6QWRk
ciAqIHJlYWRBZGRyLCBjb25zdCBBUEI6OkFkZHIgKiB3cml0ZUFkZHIpCit7CisgIEFkZHIgKiBy
YWRkciA9IChBZGRyICopIHJlYWRBZGRyOworICBBZGRyICogd2FkZHIgPSAoQWRkciAqKSB3cml0
ZUFkZHI7CisKKyAgaW50IGVyciA9IGphY2tfY29ubmVjdCAoX2phY2tDbGllbnQsIHJhZGRyLT5w
b3J0TmFtZSAoKSwgd2FkZHItPnBvcnROYW1lICgpKTsKKworICBpZiAoZXJyKQorICAgIHsKKyAg
ICAgIHRocm93IEV4Y2VwdGlvbiAoIkphY2sgc2VydmVyIGNvdWxkIG5vdCBjb25uZWN0IHBvcnRz
Iik7CisgICAgfQorCisgIF91aS0+bG9nIChzdGQ6OnN0cmluZyAoIlN1YnNjcmliZWQgcG9ydHMg
JyIpICsgcmFkZHItPnBvcnROYW1lICgpICsgIicgYW5kICciCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgd2FkZHItPnBvcnROYW1lICgpICsgIiciKTsK
K30KKwordm9pZAorRHJpdmVyOjogc3Vic2NyaWJlQ2xpZW50cyAoY29uc3QgQVBCOjpBZGRyICog
cmVhZEFkZHIsIGNvbnN0IEFQQjo6QWRkciAqIHdyaXRlQWRkcikKK3sKKyAgQWRkciAqIHJhZGRy
OworICBBZGRyICogd2FkZHIgPSBOVUxMOworICBzdGQ6OnN0cmluZyByY2xpZW50ICgoKGNvbnN0
IEFkZHIgKilyZWFkQWRkciktPmNsaWVudCAoKSk7CisgIHN0ZDo6c3RyaW5nIHdjbGllbnQgKCgo
Y29uc3QgQWRkciAqKXdyaXRlQWRkciktPmNsaWVudCAoKSk7CisKKyAgdW5zaWduZWQgbG9uZyBy
Y291bnQgPSAwOworICBmb3IgKHN0ZDo6bGlzdDxBUEI6OkFkZHIgKj46Oml0ZXJhdG9yIHJpdGVy
ID0gX3JlYWRQb3J0cy5iZWdpbiAoKTsKKyAgICAgICByaXRlciAhPSBfcmVhZFBvcnRzLmVuZCAo
KTsKKyAgICAgICArK3JpdGVyKQorICAgIHsKKyAgICAgIHJhZGRyID0gKEFkZHIgKikgKnJpdGVy
OworICAgICAgaWYgKHJhZGRyLT5jbGllbnQoKSA9PSByY2xpZW50KQorICAgICAgICB7CisgICAg
ICAgICAgdW5zaWduZWQgbG9uZyB3Y291bnQgPSAwOworICAgICAgICAgIHN0ZDo6bGlzdDxBUEI6
OkFkZHIgKj46Oml0ZXJhdG9yIHdpdGVyOworICAgICAgICAgIGZvciAod2l0ZXIgPSBfd3JpdGVQ
b3J0cy5iZWdpbiAoKTsKKyAgICAgICAgICAgICAgIHdpdGVyICE9IF93cml0ZVBvcnRzLmVuZCAo
KTsKKyAgICAgICAgICAgICAgICsrd2l0ZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
IHdhZGRyID0gKEFkZHIgKikgKndpdGVyOworICAgICAgICAgICAgICBpZiAod2FkZHItPmNsaWVu
dCgpID09IHdjbGllbnQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgaWYg
KHdjb3VudCA9PSByY291bnQpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICAgICAgICArK3djb3VudDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICBpZiAod2l0ZXIgPT0gX3dyaXRlUG9ydHMuZW5kICgpIHx8IHdjb3VudCAhPSBy
Y291bnQpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgIHN1YnNjcmliZVBvcnRz
IChyYWRkciwgd2FkZHIpOworCisgICAgICAgICAgcmNvdW50Kys7CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3ZvaWQKK0RyaXZlcjo6IHJlbW92ZVN1YnNjcmlwdGlvbiAoY29uc3QgU3Vic2NyaXB0
aW9uICogc3ViKQoreworICBBZGRyICogcmFkZHIgPSAoQWRkciAqKSBzdWItPmZyb20gKCk7Cisg
IEFkZHIgKiB3YWRkciA9IChBZGRyICopIHN1Yi0+dG8gKCk7CisKKyAgaW50IGVyciA9IGphY2tf
ZGlzY29ubmVjdCAoX2phY2tDbGllbnQsIHJhZGRyLT5wb3J0TmFtZSAoKSwgd2FkZHItPnBvcnRO
YW1lICgpKTsKKworICBpZiAoZXJyKQorICAgIHsKKyAgICAgIHRocm93IEV4Y2VwdGlvbiAoIkph
Y2sgc2VydmVyIGNvdWxkIG5vdCBkaXNjb25uZWN0IHBvcnRzIik7CisgICAgfQorCisgIF91aS0+
bG9nIChzdGQ6OnN0cmluZyAoIlJlbW92ZWQgc3Vic2NyaXB0aW9uICIpICsgc3ViLT5nZXROYW1l
ICgpKTsKK30KKworfSAvKiBuYW1lc3BhY2UgSmFjayAqLworCitjbGFzcyBKYWNrUGx1Z2luIDog
cHVibGljIERyaXZlclBsdWdpbgoreworICBwdWJsaWM6CisgICAgdmlydHVhbCBEcml2ZXIgKiAg
IGdldERyaXZlciAgICAgICAoY29uc3Qgc3RkOjpzdHJpbmcmIHRpdGxlLCBpbnQgKiBhcmdjLCBj
aGFyICoqKiBhcmd2KTsKK307CisKKworRHJpdmVyICoKK0phY2tQbHVnaW46OiBnZXREcml2ZXIg
KGNvbnN0IHN0ZDo6c3RyaW5nJiB0aXRsZSwgaW50ICogYXJnYywgY2hhciAqKiogYXJndikKK3sK
KyAgcmV0dXJuIG5ldyBKYWNrOjpEcml2ZXIgKHRpdGxlLCBhcmdjLCBhcmd2KTsKK30KKworfSAv
KiBuYW1lc3BhY2UgQVBCICovCisKK0FQQjo6RHJpdmVyUGx1Z2luICoKK2dldERyaXZlclBsdWdp
biAoKQoreworICByZXR1cm4gbmV3IEFQQjo6SmFja1BsdWdpbiAoKTsKK30KKworLyogRU9GICov
CisKZGlmZiAtTmF1ciBhbHNhLXBhdGNoLWJheS0xLjAuMC1vcmlnL3NyYy9kcml2ZXIuY3BwIGFs
c2EtcGF0Y2gtYmF5LTEuMC4wL3NyYy9kcml2ZXIuY3BwCi0tLSBhbHNhLXBhdGNoLWJheS0xLjAu
MC1vcmlnL3NyYy9kcml2ZXIuY3BwICAgIDIwMDMtMDEtMDQgMDA6NDI6NDQuMDAwMDAwMDAwIC0w
ODAwCisrKyBhbHNhLXBhdGNoLWJheS0xLjAuMC9zcmMvZHJpdmVyLmNwcCAyMDA4LTA0LTE2IDIw
OjAzOjA3LjAwMDAwMDAwMCAtMDcwMApAQCAtMTUsNyArMTUsNyBAQAogI2luY2x1ZGUgPGVycm5v
Lmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KLQorI2luY2x1ZGUg
PGNzdGRsaWI+CiAjaW5jbHVkZSAiZHJpdmVyLmgiCgogbmFtZXNwYWNlIEFQQiB7CmRpZmYgLU5h
dXIgYWxzYS1wYXRjaC1iYXktMS4wLjAtb3JpZy9zcmMvZHJpdmVyLmNwcH4gYWxzYS1wYXRjaC1i
YXktMS4wLjAvc3JjL2RyaXZlci5jcHB+Ci0tLSBhbHNhLXBhdGNoLWJheS0xLjAuMC1vcmlnL3Ny
Yy9kcml2ZXIuY3BwfiAgIDE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCisrKyBh
bHNhLXBhdGNoLWJheS0xLjAuMC9zcmMvZHJpdmVyLmNwcH4gICAgICAgIDIwMDMtMDEtMDQgMDA6
NDI6NDQuMDAwMDAwMDAwIC0wODAwCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBBTFNBIFBhdGNo
IEJheQorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMiBSb2JlcnQgSGFtIChub2RlQHVzZXJzLnNv
dXJjZWZvcmdlLm5ldCkKKyAqCisgKiBZb3UgaGF2ZSBwZXJtaXNzaW9uIHRvIHVzZSB0aGlzIGZp
bGUgdW5kZXIgdGhlIEdOVSBHZW5lcmFsCisgKiBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyIG9y
IGxhdGVyLiAgU2VlIHRoZSBmaWxlIENPUFlJTkcKKyAqIGZvciB0aGUgZnVsbCB0ZXh0LgorICoK
KyAqLworCisjaW5jbHVkZSA8aW9zdHJlYW0+CisKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNs
dWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisK
KyNpbmNsdWRlICJkcml2ZXIuaCIKKworbmFtZXNwYWNlIEFQQiB7CisKK0RyaXZlcjo6IERyaXZl
ciAoKQorICA6IF91aSAoMCksCisgICAgX2pmZCAodHJ1ZSkKK3sKKyAgaW50IGVycjsKKyAgaW50
IGZpbGVzWzJdOworCisgIGVyciA9IHBpcGUgKGZpbGVzKTsKKyAgaWYgKGVycikKKyAgICB7Cisg
ICAgICBzdGQ6OmNlcnIgPDwgImVycm9yIGNyZWF0aW5nIHBpcGUsIGV4aXRpbmc6ICIgPDwgc3Ry
ZXJyb3IgKGVycm5vKSA8PCBzdGQ6OmVuZGw7CisgICAgICBleGl0ICgxKTsKKyAgICB9CisKKyAg
X3JlZnJlc2hSZWFkRmlsZSA9IGZpbGVzWzBdOworICBfcmVmcmVzaFdyaXRlRmlsZSA9IGZpbGVz
WzFdOworCisgIC8qIHNldCB0aGUgcmVhZCBmaWxlIHRvIG5vdCBibG9jayAqLworICBlcnIgPSBm
Y250bCAoX3JlZnJlc2hSZWFkRmlsZSwgRl9TRVRGTCwgT19OT05CTE9DSyk7CisgIGlmIChlcnIp
CisgICAgeworICAgICAgc3RkOjpjZXJyIDw8ICJlcnJvciBzZXR0aW5nIHJlYWQgZW5kIG9mIHBp
cGUgdG8gbm9uLWJsb2NraW5nIG1vZGUsIGV4aXRpbmc6ICIgPDwgc3RyZXJyb3IgKGVycm5vKSA8
PCBzdGQ6OmVuZGw7CisgICAgICBleGl0ICgxKTsKKyAgICB9Cit9CisKK3ZvaWQKK0RyaXZlcjo6
IHNldEpGRCAoYm9vbCBqZmQpCit7CisgIF9qZmQgPSBqZmQ7Cit9CisKK3ZvaWQKK0RyaXZlcjo6
IHNldFVJIChVSSAqIHVpKQoreworICBfdWkgPSB1aTsKK30KKworaW50CitEcml2ZXI6OiBnZXRS
ZWZyZXNoUmVhZEZpbGUgKCkKK3sKKyAgcmV0dXJuIF9yZWZyZXNoUmVhZEZpbGU7Cit9CisKKyNp
ZmRlZiBIQVZFX0xBRENDQQordm9pZAorRHJpdmVyOjogc2V0Q0NBQ2xpZW50IChjY2FfY2xpZW50
X3QgKiBjbGllbnQpCit7CisgIF9jY2FDbGllbnQgPSBjbGllbnQ7Cit9CisKK2NjYV9jbGllbnRf
dCAqCitEcml2ZXI6OiBnZXRDQ0FDbGllbnQgKCkKK3sKKyAgcmV0dXJuIF9jY2FDbGllbnQ7Cit9
CisjZW5kaWYgLyogSEFWRV9MQURDQ0EgKi8KKworCisKK30gLyogbmFtZXNwYWNlIEFQQiAqLwpk
aWZmIC1OYXVyIGFsc2EtcGF0Y2gtYmF5LTEuMC4wLW9yaWcvc3JjL21pc2MuY3BwIGFsc2EtcGF0
Y2gtYmF5LTEuMC4wL3NyYy9taXNjLmNwcAotLS0gYWxzYS1wYXRjaC1iYXktMS4wLjAtb3JpZy9z
cmMvbWlzYy5jcHAgICAgICAyMDAyLTExLTI1IDExOjQ4OjEwLjAwMDAwMDAwMCAtMDgwMAorKysg
YWxzYS1wYXRjaC1iYXktMS4wLjAvc3JjL21pc2MuY3BwICAgMjAwOC0wNC0xNiAyMDowMzo1Mi4w
MDAwMDAwMDAgLTA3MDAKQEAgLTEwLDcgKzEwLDcgQEAKICAqLwoKICNpbmNsdWRlIDxzc3RyZWFt
PgotCisjaW5jbHVkZSA8Y3N0ZGxpYj4KICNpbmNsdWRlICJtaXNjLmgiCgogbmFtZXNwYWNlIEFQ
QiB7CmRpZmYgLU5hdXIgYWxzYS1wYXRjaC1iYXktMS4wLjAtb3JpZy9zcmMvbWlzYy5jcHB+IGFs
c2EtcGF0Y2gtYmF5LTEuMC4wL3NyYy9taXNjLmNwcH4KLS0tIGFsc2EtcGF0Y2gtYmF5LTEuMC4w
LW9yaWcvc3JjL21pc2MuY3BwfiAgICAgMTk2OS0xMi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4
MDAKKysrIGFsc2EtcGF0Y2gtYmF5LTEuMC4wL3NyYy9taXNjLmNwcH4gIDIwMDItMTEtMjUgMTE6
NDg6MTAuMDAwMDAwMDAwIC0wODAwCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBBTFNBIFBhdGNo
IEJheQorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMiBSb2JlcnQgSGFtIChub2RlQHVzZXJzLnNv
dXJjZWZvcmdlLm5ldCkKKyAqCisgKiBZb3UgaGF2ZSBwZXJtaXNzaW9uIHRvIHVzZSB0aGlzIGZp
bGUgdW5kZXIgdGhlIEdOVSBHZW5lcmFsCisgKiBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyIG9y
IGxhdGVyLiAgU2VlIHRoZSBmaWxlIENPUFlJTkcKKyAqIGZvciB0aGUgZnVsbCB0ZXh0LgorICoK
KyAqLworCisjaW5jbHVkZSA8c3N0cmVhbT4KKworI2luY2x1ZGUgIm1pc2MuaCIKKworbmFtZXNw
YWNlIEFQQiB7CisKK0V4Y2VwdGlvbjo6IEV4Y2VwdGlvbiAoY29uc3Qgc3RkOjpzdHJpbmcmIGQs
IGludCBlKQorOiBkZXNjIChkKSwKKyAgZXJyIChlKQoreworfQorCitzdGQ6OnN0cmluZyBpbnQy
c3RyaW5nIChpbnQgaSkgeworICBzdGF0aWMgc3RkOjpzdHJpbmcgc3RyOworCisgIHN0ZDo6b3N0
cmluZ3N0cmVhbSBzczsKKworICBzcyA8PCBpOworCisgIHN0ciA9IHNzLnN0cigpOworCisgIHJl
dHVybiBzdHI7Cit9CisKK2ludCByYW5kb21OdW1iZXIgKGRvdWJsZSBsb3dlciwgZG91YmxlIHVw
cGVyKSB7CisgIHJldHVybiAoaW50KSAoKGxvd2VyLTEpKyhpbnQpICgodXBwZXIrMSkqcmFuZCgp
LyhSQU5EX01BWCsxLjApKSk7Cit9CisKK30gLyogbmFtZXNwYWNlIEFQQiAqLwpkaWZmIC1OYXVy
IGFsc2EtcGF0Y2gtYmF5LTEuMC4wLW9yaWcvc3JjL3BsdWdpbnMuY3BwIGFsc2EtcGF0Y2gtYmF5
LTEuMC4wL3NyYy9wbHVnaW5zLmNwcAotLS0gYWxzYS1wYXRjaC1iYXktMS4wLjAtb3JpZy9zcmMv
cGx1Z2lucy5jcHAgICAyMDAzLTAxLTA0IDAwOjQzOjE1LjAwMDAwMDAwMCAtMDgwMAorKysgYWxz
YS1wYXRjaC1iYXktMS4wLjAvc3JjL3BsdWdpbnMuY3BwICAgICAgICAyMDA4LTA0LTE2IDIwOjA0
OjMyLjAwMDAwMDAwMCAtMDcwMApAQCAtMTQsNyArMTQsNyBAQAogI2luY2x1ZGUgPGRpcmVudC5o
PgogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0KKyNpbmNsdWRlIDxj
c3RkbGliPgogI2luY2x1ZGUgPGlvc3RyZWFtPgogI2luY2x1ZGUgPGxpc3Q+CiAjaW5jbHVkZSA8
c3RyaW5nPgpkaWZmIC1OYXVyIGFsc2EtcGF0Y2gtYmF5LTEuMC4wLW9yaWcvc3JjL3BsdWdpbnMu
Y3BwfiBhbHNhLXBhdGNoLWJheS0xLjAuMC9zcmMvcGx1Z2lucy5jcHB+Ci0tLSBhbHNhLXBhdGNo
LWJheS0xLjAuMC1vcmlnL3NyYy9wbHVnaW5zLmNwcH4gIDE5NjktMTItMzEgMTY6MDA6MDAuMDAw
MDAwMDAwIC0wODAwCisrKyBhbHNhLXBhdGNoLWJheS0xLjAuMC9zcmMvcGx1Z2lucy5jcHB+ICAg
ICAgIDIwMDMtMDEtMDQgMDA6NDM6MTUuMDAwMDAwMDAwIC0wODAwCkBAIC0wLDAgKzEsMjIwIEBA
CisvKgorICogQUxTQSBQYXRjaCBCYXkKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDIgUm9iZXJ0
IEhhbSAobm9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQpCisgKgorICogWW91IGhhdmUgcGVybWlz
c2lvbiB0byB1c2UgdGhpcyBmaWxlIHVuZGVyIHRoZSBHTlUgR2VuZXJhbAorICogUHVibGljIExp
Y2Vuc2UsIHZlcnNpb24gMiBvciBsYXRlci4gIFNlZSB0aGUgZmlsZSBDT1BZSU5HCisgKiBmb3Ig
dGhlIGZ1bGwgdGV4dC4KKyAqCisgKi8KKworI2luY2x1ZGUgPGRsZmNuLmg+CisjaW5jbHVkZSA8
c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8ZGlyZW50Lmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNp
bmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgPGlvc3RyZWFtPgorI2luY2x1ZGUgPGxpc3Q+
CisjaW5jbHVkZSA8c3RyaW5nPgorCisjaW5jbHVkZSAicGx1Z2luLmgiCisjaW5jbHVkZSAicGx1
Z2lucy5oIgorCituYW1lc3BhY2UgQVBCIHsKKworc3RhdGljIHZvaWQgKiB1aVBsdWdpbkhhbmRs
ZTsKK3N0YXRpYyB2b2lkICogZHJpdmVyUGx1Z2luSGFuZGxlOworCitQbHVnaW5TZXQgKgorZ2V0
UGx1Z2luU2V0ICgpCit7CisgIHN0YXRpYyBQbHVnaW5TZXQgcGx1Z3M7CisgIHJldHVybiAmcGx1
Z3M7Cit9CisKK1VJUGx1Z2luICoKK29wZW5VSVBsdWdpbiAoc3RkOjpzdHJpbmcgcGx1Z2luTmFt
ZSkKK3sKKyAgc3RkOjpzdHJpbmcgZnFuOworICB2b2lkICogZGxoYW5kbGU7CisgIEdldFVJUGx1
Z2luRnVuYyBnZXRVSVBsdWdpbjsKKyAgVUlQbHVnaW4gKiBwbHVnaW47CisgIGNvbnN0IGNoYXIg
KiBlcnJvcjsKKworICBmcW4gPSBzdGQ6OnN0cmluZyAoUEtHTElCRElSKSArICIvdWkvIiArIHBs
dWdpbk5hbWUgKyAiLnNvIjsKKworICBkbGhhbmRsZSA9IGRsb3BlbiAoZnFuLmNfc3RyKCksIFJU
TERfTEFaWXxSVExEX0dMT0JBTCk7CisKKyAgaWYgKCFkbGhhbmRsZSkKKyAgICB7CisgICAgICBz
dGQ6OmNlcnIgPDwgX19GVU5DVElPTl9fCisgICAgICAgICAgICAgICAgPDwgIjogY291bGQgbm90
IG9wZW4gdWkgcGx1Z2luICciCisgICAgICAgICAgICAgICAgPDwgZnFuCisgICAgICAgICAgICAg
ICAgPDwgIic6ICIKKyAgICAgICAgICAgICAgICA8PCBkbGVycm9yICgpCisgICAgICAgICAgICAg
ICAgPDwgc3RkOjplbmRsOworICAgICAgZXhpdCAoMSk7CisgICAgfQorCisgIGRsZXJyb3IoKTsK
KworICAvKiBnY2MgMy54ICovCisgIGdldFVJUGx1Z2luID0gKEdldFVJUGx1Z2luRnVuYykgZGxz
eW0gKGRsaGFuZGxlLCAiX1oxMWdldFVJUGx1Z2ludiIpOworICBlcnJvciA9IGRsZXJyb3IgKCk7
CisgIGlmIChlcnJvcikKKyAgICB7CisgICAgICAvKiBnY2MgMi45NS54ICovCisgICAgICBnZXRV
SVBsdWdpbiA9IChHZXRVSVBsdWdpbkZ1bmMpIGRsc3ltIChkbGhhbmRsZSwgImdldFVJUGx1Z2lu
X19GdiIpOworICAgICAgZXJyb3IgPSBkbGVycm9yICgpOworICAgICAgaWYgKGVycm9yKQorICAg
ICAgICB7CisgICAgICAgICAgc3RkOjpjZXJyIDw8IF9fRlVOQ1RJT05fXworICAgICAgICAgICAg
ICAgICAgICA8PCAiOiBjb3VsZCBub3QgZmluZCBnZXRVSVBsdWdpbiBmdW5jdGlvbiBpbiBwbHVn
aW4gJyIKKyAgICAgICAgICAgICAgICAgICAgPDwgZnFuCisgICAgICAgICAgICAgICAgICAgIDw8
ICInOiAiCisgICAgICAgICAgICAgICAgICAgIDw8IGVycm9yCisgICAgICAgICAgICAgICAgICAg
IDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgICBkbGNsb3NlIChkbGhhbmRsZSk7CisgICAgICAgICAg
ZXhpdCAoMSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgcGx1Z2luID0gZ2V0VUlQbHVnaW4gKCk7
CisKKyAgdWlQbHVnaW5IYW5kbGUgPSBkbGhhbmRsZTsKKworICByZXR1cm4gcGx1Z2luOworfQor
CitEcml2ZXJQbHVnaW4gKgorb3BlbkRyaXZlclBsdWdpbiAoc3RkOjpzdHJpbmcgcGx1Z2luTmFt
ZSkKK3sKKyAgc3RkOjpzdHJpbmcgZnFuOworICB2b2lkICogZGxoYW5kbGU7CisgIEdldERyaXZl
clBsdWdpbkZ1bmMgZ2V0RHJpdmVyUGx1Z2luOworICBEcml2ZXJQbHVnaW4gKiBwbHVnaW47Cisg
IGNvbnN0IGNoYXIgKiBlcnJvcjsKKworICBmcW4gPSBzdGQ6OnN0cmluZyAoUEtHTElCRElSKSAr
ICIvZHJpdmVyLyIgKyBwbHVnaW5OYW1lICsgIi5zbyI7CisKKyAgZGxoYW5kbGUgPSBkbG9wZW4g
KGZxbi5jX3N0cigpLCBSVExEX0xBWll8UlRMRF9HTE9CQUwpOworCisgIGlmICghZGxoYW5kbGUp
CisgICAgeworICAgICAgc3RkOjpjZXJyIDw8IF9fRlVOQ1RJT05fXworICAgICAgICAgICAgICAg
IDw8ICI6IGNvdWxkIG5vdCBvcGVuIGRyaXZlciBwbHVnaW4gJyIKKyAgICAgICAgICAgICAgICA8
PCBmcW4KKyAgICAgICAgICAgICAgICA8PCAiJzogIgorICAgICAgICAgICAgICAgIDw8IGRsZXJy
b3IgKCkKKyAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICBleGl0ICgxKTsKKyAg
ICB9CisKKyAgZGxlcnJvcigpOworCisgIGdldERyaXZlclBsdWdpbiA9IChHZXREcml2ZXJQbHVn
aW5GdW5jKSBkbHN5bSAoZGxoYW5kbGUsICJfWjE1Z2V0RHJpdmVyUGx1Z2ludiIpOworICBlcnJv
ciA9IGRsZXJyb3IgKCk7CisgIGlmIChlcnJvcikKKyAgICB7CisgICAgICBnZXREcml2ZXJQbHVn
aW4gPSAoR2V0RHJpdmVyUGx1Z2luRnVuYykgZGxzeW0gKGRsaGFuZGxlLCAiZ2V0RHJpdmVyUGx1
Z2luX19GdiIpOworICAgICAgZXJyb3IgPSBkbGVycm9yICgpOworICAgICAgaWYgKGVycm9yKQor
ICAgICAgICB7CisgICAgICAgICAgc3RkOjpjZXJyIDw8IF9fRlVOQ1RJT05fXworICAgICAgICAg
ICAgICAgICAgICA8PCAiOiBjb3VsZCBub3QgZmluZCBnZXREcml2ZXJQbHVnaW4gZnVuY3Rpb24g
aW4gcGx1Z2luICciCisgICAgICAgICAgICAgICAgICAgIDw8IGZxbgorICAgICAgICAgICAgICAg
ICAgICA8PCAiJzogIgorICAgICAgICAgICAgICAgICAgICA8PCBlcnJvcgorICAgICAgICAgICAg
ICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgICAgZGxjbG9zZSAoZGxoYW5kbGUpOworICAg
ICAgICAgIGV4aXQgKDEpOworICAgICAgICB9CisgICAgfQorCisgIHBsdWdpbiA9IGdldERyaXZl
clBsdWdpbiAoKTsKKworICBkcml2ZXJQbHVnaW5IYW5kbGUgPSBkbGhhbmRsZTsKKworICByZXR1
cm4gcGx1Z2luOworfQorCit2b2lkCityZWFkRGlyIChzdGQ6OnN0cmluZyBkaXJuYW1lLCBzdGQ6
Omxpc3Q8c3RkOjpzdHJpbmc+JiBwbHVnaW5zKQoreworICBzdHJ1Y3QgZGlyZW50ICogZGlyX2Vu
dHJ5OworICBESVIgKiBkaXI7CisgIGNoYXIgKiBwbHVnaW4sICogcHRyOworCisgIGRpciA9IG9w
ZW5kaXIgKGRpcm5hbWUuY19zdHIoKSk7CisKKyAgaWYgKCFkaXIpCisgICAgeworICAgICAgc3Rk
OjpjZXJyIDw8IF9fRlVOQ1RJT05fXworICAgICAgICAgICAgICAgIDw8ICI6IGNvdWxkIG5vdCBv
cGVuIHBsdWdpbiBkaXJlY3RvcnkgJyIKKyAgICAgICAgICAgICAgICA8PCBkaXJuYW1lCisgICAg
ICAgICAgICAgICAgPDwgIic6ICIKKyAgICAgICAgICAgICAgICA8PCBzdHJlcnJvciAoZXJybm8p
CisgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAgZXhpdCAoMSk7CisgICAgfQor
CisgIHdoaWxlICggKGRpcl9lbnRyeSA9IHJlYWRkaXIgKGRpcikpICkKKyAgICB7CisgICAgICBw
bHVnaW4gPSBzdHJkdXAgKGRpcl9lbnRyeS0+ZF9uYW1lKTsKKyAgICAgIGRpcm5hbWUgPSBwbHVn
aW47CisgICAgICBpZiAoZGlybmFtZSA9PSAiLiIgfHwgZGlybmFtZSA9PSAiLi4iKQorICAgICAg
ICBjb250aW51ZTsKKworICAgICAgcHRyID0gc3RycmNociAocGx1Z2luLCAnLicpOworICAgICAg
aWYgKCFwdHIpIHsKKyAgICAgICAgZnJlZSAocGx1Z2luKTsKKyAgICAgICAgY29udGludWU7Cisg
ICAgICB9CisgICAgICAqcHRyID0gJ1wwJzsKKyAgICAgIHBsdWdpbnMucHVzaF9iYWNrIChwbHVn
aW4pOworICAgICAgZnJlZSAocGx1Z2luKTsKKyAgICB9Cit9CisKK3ZvaWQKK2luaXRQbHVnaW5z
ICgpCit7CisgIHN0ZDo6c3RyaW5nIGRpcjsKKworICBkaXIgPSBzdGQ6OnN0cmluZyAoUEtHTElC
RElSKSArICIvZHJpdmVyIjsKKyAgcmVhZERpciAoZGlyLCBnZXRQbHVnaW5TZXQoKS0+ZHJpdmVy
UGx1Z2lucyk7CisKKyAgZGlyID0gc3RkOjpzdHJpbmcgKFBLR0xJQkRJUikgKyAiL3VpIjsKKyAg
cmVhZERpciAoZGlyLCBnZXRQbHVnaW5TZXQoKS0+dWlQbHVnaW5zKTsKKworCisgIGlmIChnZXRQ
bHVnaW5TZXQoKS0+ZHJpdmVyUGx1Z2lucy5zaXplICgpID09IDApCisgICAgeworICAgICAgc3Rk
OjpjZXJyIDw8IF9fRlVOQ1RJT05fXworICAgICAgICAgICAgICAgIDw8ICI6IG5vIGRyaXZlciBw
bHVnaW5zIgorICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICAgIGV4aXQgKDEpOwor
ICAgIH0KKworICBpZiAoZ2V0UGx1Z2luU2V0KCktPnVpUGx1Z2lucy5zaXplICgpID09IDApCisg
ICAgeworICAgICAgc3RkOjpjZXJyIDw8IF9fRlVOQ1RJT05fXworICAgICAgICAgICAgICAgIDw8
ICI6IG5vIHVpIHBsdWdpbnMiCisgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAg
ZXhpdCAoMSk7CisgICAgfQorfQorCit2b2lkCitjbG9zZVBsdWdpbnMgKCkKK3sKK30KKworfSAv
KiBuYW1lc3BhY2UgQVBCICovCisKKworLyogRU9GICovCisKKwo=
</data>        

          </attachment>
    </bug>

</bugzilla>