<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>122531</bug_id>
          
          <creation_ts>2013-10-08 16:25:38 -0700</creation_ts>
          <short_desc>ObjCCallbackFunctionImpl shouldn&apos;t store a JSContext</short_desc>
          <delta_ts>2013-10-15 14:06:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mrowe</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>937746</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-08 16:25:38 -0700</bug_when>
    <thetext>The m_context field in ObjCCallbackFunctionImpl is vestigial and is only incidentally correct in the common case. It&apos;s also no longer necessary in that we can look up the current JSContext by looking using the globalObject of the callee when the function callback is invoked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937771</commentid>
    <comment_count>1</comment_count>
      <attachid>213737</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-08 17:54:55 -0700</bug_when>
    <thetext>Created attachment 213737
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937816</commentid>
    <comment_count>2</comment_count>
      <attachid>213737</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-10-08 22:15:18 -0700</bug_when>
    <thetext>Comment on attachment 213737
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937851</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2013-10-09 02:23:20 -0700</bug_when>
    <thetext>Adding new API requires a) sending it through API review, and b) tagging the new API with the appropriate availability macro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939786</commentid>
    <comment_count>4</comment_count>
      <attachid>214218</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-14 18:45:09 -0700</bug_when>
    <thetext>Created attachment 214218
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939788</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-14 18:46:27 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=214218) [details]
&gt; Patch

@bdash: Not sure what availability macro to use, so I just winged it. Your input would be valuable!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939789</commentid>
    <comment_count>6</comment_count>
      <attachid>214218</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2013-10-14 18:54:00 -0700</bug_when>
    <thetext>Comment on attachment 214218
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=214218&amp;action=review

&gt; Source/JavaScriptCore/API/JSContextRef.h:136
&gt; +#if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 1070
&gt; +/*!
&gt; +@function
&gt; +@abstract Gets the global context of a JavaScript execution context.
&gt; +@param ctx The JSContext whose global context you want to get.
&gt; +@result ctx&apos;s global context.
&gt; +*/
&gt; +JS_EXPORT JSGlobalContextRef JSContextGetGlobalContext(JSContextRef ctx);
&gt; +#endif

This isn&apos;t how availability macros are used. You use something like NS_AVAILABLE_MAC(10_7) at the end of the method declaration:

 JS_EXPORT JSGlobalContextRef JSContextGetGlobalContext(JSContextRef ctx) NS_AVAILABLE_MAC(10_7);

There&apos;s a slightly different macro to use if this should be exposed on iOS as well.

If this header file is used by non-Mac platforms you may need to add some creative #ifing so that other platforms don&apos;t choke on the availability macros.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939836</commentid>
    <comment_count>7</comment_count>
      <attachid>214230</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-14 21:08:13 -0700</bug_when>
    <thetext>Created attachment 214230
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939843</commentid>
    <comment_count>8</comment_count>
      <attachid>214230</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-10-14 21:20:28 -0700</bug_when>
    <thetext>Comment on attachment 214230
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=214230&amp;action=review

&gt; Source/JavaScriptCore/API/JSContextRef.h:134
&gt; +JS_EXPORT JSGlobalContextRef JSContextGetGlobalContext(JSContextRef ctx) CF_AVAILABLE(10_7, NA);

Does NA mean not available on iOS?

Should we be using AVAILABLE_IN_WEBKIT_VERSION*?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939847</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-14 21:24:32 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 214230 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=214230&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/API/JSContextRef.h:134
&gt; &gt; +JS_EXPORT JSGlobalContextRef JSContextGetGlobalContext(JSContextRef ctx) CF_AVAILABLE(10_7, NA);
&gt; 
&gt; Does NA mean not available on iOS?
NA does mean not available. I wasn&apos;t sure which version of iOS first had the symbol in the binary, but I figured I could go back and fill it in later.

&gt; 
&gt; Should we be using AVAILABLE_IN_WEBKIT_VERSION*?

I think the standard these days is to use OS versions rather than WebKit versions. I spoke with bdash, and he recommended using the OS-provided availability macros (see above). I ended up using the CF_* version rather than the NS_* version due to the fact that this header is typically included in C/C++ compilation units.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939848</commentid>
    <comment_count>10</comment_count>
      <attachid>214230</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-14 21:37:04 -0700</bug_when>
    <thetext>Comment on attachment 214230
Patch

Attachment 214230 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/4068010</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939852</commentid>
    <comment_count>11</comment_count>
      <attachid>214230</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-14 21:50:54 -0700</bug_when>
    <thetext>Comment on attachment 214230
Patch

Attachment 214230 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/4070008</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940055</commentid>
    <comment_count>12</comment_count>
      <attachid>214285</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-15 11:30:02 -0700</bug_when>
    <thetext>Created attachment 214285
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940070</commentid>
    <comment_count>13</comment_count>
      <attachid>214285</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-10-15 11:59:14 -0700</bug_when>
    <thetext>Comment on attachment 214285
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940121</commentid>
    <comment_count>14</comment_count>
      <attachid>214285</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-15 14:06:33 -0700</bug_when>
    <thetext>Comment on attachment 214285
Patch

Clearing flags on attachment: 214285

Committed r157468: &lt;http://trac.webkit.org/changeset/157468&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940122</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-15 14:06:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213737</attachid>
            <date>2013-10-08 17:54:55 -0700</date>
            <delta_ts>2013-10-14 18:45:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122531-20131008175454.patch</filename>
            <type>text/plain</type>
            <size>18715</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3MTUzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBA
CisyMDEzLTEwLTA4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgT2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsIHNob3VsZG4ndCBzdG9yZSBhIEpTQ29u
dGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIy
NTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IG1fY29udGV4dCBmaWVsZCBpbiBPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGwgaXMgdmVzdGlnaWFs
IGFuZCBpcyBvbmx5IGluY2lkZW50YWxseSBjb3JyZWN0IAorICAgICAgICBpbiB0aGUgY29tbW9u
IGNhc2UuIEl0J3MgYWxzbyBubyBsb25nZXIgbmVjZXNzYXJ5IGluIHRoYXQgd2UgY2FuIGxvb2sg
dXAgdGhlIGN1cnJlbnQgSlNDb250ZXh0IAorICAgICAgICBieSBsb29raW5nIHVzaW5nIHRoZSBn
bG9iYWxPYmplY3Qgb2YgdGhlIGNhbGxlZSB3aGVuIHRoZSBmdW5jdGlvbiBjYWxsYmFjayBpcyBp
bnZva2VkLgorCisgICAgICAgIEFsc28gYWRkZWQgYSBuZXcgdGVzdCB0aGF0IHdvdWxkIGNhdXNl
IHVzIHRvIGNyYXNoIHByZXZpb3VzbHkuIFRoZSB0ZXN0IHJlcXVpcmVkIG1ha2luZyAKKyAgICAg
ICAgSlNDb250ZXh0R2V0R2xvYmFsQ29udGV4dCBwdWJsaWMgQVBJIHNvIHRoYXQgY2xpZW50cyBj
YW4gb2J0YWluIGEgSlNDb250ZXh0IGZyb20gdGhlIEpTQ29udGV4dFJlZgorICAgICAgICBpbiBD
IEFQSSBjYWxsYmFja3MuCisKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmg6CisgICAgICAg
ICogQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaDoKKyAgICAgICAgKiBBUEkvT2JqQ0NhbGxiYWNr
RnVuY3Rpb24ubW06CisgICAgICAgIChKU0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbDo6T2Jq
Q0NhbGxiYWNrRnVuY3Rpb25JbXBsKToKKyAgICAgICAgKEpTQzo6b2JqQ0NhbGxiYWNrRnVuY3Rp
b25DYWxsQXNGdW5jdGlvbik6CisgICAgICAgIChvYmpDQ2FsbGJhY2tGdW5jdGlvbkZvckludm9j
YXRpb24pOgorICAgICAgICAqIEFQSS90ZXN0cy9DdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVy
VGVzdC5oOiBBZGRlZC4KKyAgICAgICAgKiBBUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNpZGVCbG9j
a0dldHRlclRlc3QubW06IEFkZGVkLgorICAgICAgICAoQ2FsbEFzQ29uc3RydWN0b3IpOgorICAg
ICAgICAoQ29uc3RydWN0b3JGaW5hbGl6ZSk6CisgICAgICAgIChDb25zdHJ1Y3RvckNsYXNzKToK
KyAgICAgICAgKCtbSlNWYWx1ZSB2YWx1ZVdpdGhDb25zdHJ1Y3RvckRlc2NyaXB0b3I6aW5Db250
ZXh0Ol0pOgorICAgICAgICAoLVtKU0NvbnRleHQgdmFsdWVXaXRoQ29uc3RydWN0b3JEZXNjcmlw
dG9yOl0pOgorICAgICAgICAoY3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QpOgorICAg
ICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLm1tOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTMtMTAtMDggIE9saXZlciBIdW50ICA8b2xp
dmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBDb252ZXJ0IGZvci1vZiBpdGVyYXRpb24gdG8gaW4t
YmFuZCBzaWduYWxsaW5nIHNvIHdlIGNhbiB0cml2aWFsbHkgYXZvaWQgdW5uZWNlc3Nhcnkgb2Jq
ZWN0IGFsbG9jYXRpb24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0
UmVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRS
ZWYuaAkocmV2aXNpb24gMTU3MTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHRSZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDYgKzEyNSwxNSBAQCBKU19FWFBPUlQg
SlNPYmplY3RSZWYgSlNDb250ZXh0R2V0R2xvYmFsCiAqLwogSlNfRVhQT1JUIEpTQ29udGV4dEdy
b3VwUmVmIEpTQ29udGV4dEdldEdyb3VwKEpTQ29udGV4dFJlZiBjdHgpIEFWQUlMQUJMRV9JTl9X
RUJLSVRfVkVSU0lPTl80XzA7CiAKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgR2V0cyB0aGUg
Z2xvYmFsIGNvbnRleHQgb2YgYSBKYXZhU2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0LgorQHBhcmFt
IGN0eCBUaGUgSlNDb250ZXh0IHdob3NlIGdsb2JhbCBjb250ZXh0IHlvdSB3YW50IHRvIGdldC4K
K0ByZXN1bHQgY3R4J3MgZ2xvYmFsIGNvbnRleHQuCisqLworSlNfRVhQT1JUIEpTR2xvYmFsQ29u
dGV4dFJlZiBKU0NvbnRleHRHZXRHbG9iYWxDb250ZXh0KEpTQ29udGV4dFJlZiBjdHgpOworCisg
ICAgCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NvbnRleHRSZWZQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWZQcml2YXRlLmgJKHJldmlzaW9uIDE1NzEyMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmUHJpdmF0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCwxNSArNDAsNiBAQCBleHRlcm4gIkMiIHsKIAogLyohCiBAZnVuY3Rp
b24KLUBhYnN0cmFjdCBHZXRzIHRoZSBnbG9iYWwgY29udGV4dCBvZiBhIEphdmFTY3JpcHQgZXhl
Y3V0aW9uIGNvbnRleHQuCi1AcGFyYW0gY3R4IFRoZSBKU0NvbnRleHQgd2hvc2UgZ2xvYmFsIGNv
bnRleHQgeW91IHdhbnQgdG8gZ2V0LgotQHJlc3VsdCBjdHgncyBnbG9iYWwgY29udGV4dC4KLSov
Ci1KU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpTQ29udGV4dEdldEdsb2JhbENvbnRleHQo
SlNDb250ZXh0UmVmIGN0eCk7Ci0KLSAgICAKLS8qIQotQGZ1bmN0aW9uCiBAYWJzdHJhY3QgR2V0
cyBhIEJhY2t0cmFjZSBmb3IgdGhlIGV4aXN0aW5nIGNvbnRleHQKIEBwYXJhbSBjdHggVGhlIEpT
Q29udGV4dCB3aG9zZSBiYWNrdHJhY2UgeW91IHdhbnQgdG8gZ2V0CiBAcmVzdWx0IEEgc3RyaW5n
IGNvbnRhaW5pbmcgdGhlIGJhY2t0cmFjZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCShyZXZpc2lvbiAxNTcxMjApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zOTQsOSArMzk0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIE9iakND
YWxsYmFja0Z1bmN0aW9uSW1wbCB7CiBwdWJsaWM6Ci0gICAgT2JqQ0NhbGxiYWNrRnVuY3Rpb25J
bXBsKEpTQ29udGV4dCAqY29udGV4dCwgTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uLCBDYWxsYmFj
a1R5cGUgdHlwZSwgQ2xhc3MgaW5zdGFuY2VDbGFzcywgUGFzc093blB0cjxDYWxsYmFja0FyZ3Vt
ZW50PiBhcmd1bWVudHMsIFBhc3NPd25QdHI8Q2FsbGJhY2tSZXN1bHQ+IHJlc3VsdCkKLSAgICAg
ICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAgICAgLCBtX3R5cGUodHlwZSkKKyAgICBPYmpD
Q2FsbGJhY2tGdW5jdGlvbkltcGwoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uLCBDYWxsYmFja1R5
cGUgdHlwZSwgQ2xhc3MgaW5zdGFuY2VDbGFzcywgUGFzc093blB0cjxDYWxsYmFja0FyZ3VtZW50
PiBhcmd1bWVudHMsIFBhc3NPd25QdHI8Q2FsbGJhY2tSZXN1bHQ+IHJlc3VsdCkKKyAgICAgICAg
OiBtX3R5cGUodHlwZSkKICAgICAgICAgLCBtX2luc3RhbmNlQ2xhc3MoW2luc3RhbmNlQ2xhc3Mg
cmV0YWluXSkKICAgICAgICAgLCBtX2ludm9jYXRpb24oaW52b2NhdGlvbikKICAgICAgICAgLCBt
X2FyZ3VtZW50cyhhcmd1bWVudHMpCkBAIC00MTIsMjQgKzQxMSwxMiBAQCBwdWJsaWM6CiAKICAg
ICBKU1ZhbHVlUmVmIGNhbGwoSlNDb250ZXh0ICpjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2Jq
ZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKIAotICAgIEpTQ29udGV4dCAqY29udGV4dCgpCi0gICAg
ewotICAgICAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOwotICAgIH0KLQotICAgIHZvaWQgc2V0
Q29udGV4dChKU0NvbnRleHQgKmNvbnRleHQpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fY29u
dGV4dC5nZXQoKSk7Ci0gICAgICAgIG1fY29udGV4dC5zZXQoY29udGV4dCk7Ci0gICAgfQotCiAg
ICAgaWQgd3JhcHBlZEJsb2NrKCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX3R5cGUgPT0gQ2Fs
bGJhY2tCbG9jayA/IFttX2ludm9jYXRpb24gdGFyZ2V0XSA6IG5pbDsKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgV2Vha0NvbnRleHRSZWYgbV9jb250ZXh0OwogICAgIENhbGxiYWNrVHlwZSBtX3R5
cGU7CiAgICAgQ2xhc3MgbV9pbnN0YW5jZUNsYXNzOwogICAgIFJldGFpblB0cjxOU0ludm9jYXRp
b24+IG1faW52b2NhdGlvbjsKQEAgLTQ0NywxMSArNDM0LDcgQEAgc3RhdGljIEpTVmFsdWVSZWYg
b2JqQ0NhbGxiYWNrRnVuY3Rpb25DYQogCiAgICAgT2JqQ0NhbGxiYWNrRnVuY3Rpb24qIGNhbGxi
YWNrID0gc3RhdGljX2Nhc3Q8T2JqQ0NhbGxiYWNrRnVuY3Rpb24qPih0b0pTKGZ1bmN0aW9uKSk7
CiAgICAgT2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsKiBpbXBsID0gY2FsbGJhY2stPmltcGwoKTsK
LSAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBpbXBsLT5jb250ZXh0KCk7Ci0gICAgaWYgKCFjb250
ZXh0KSB7Ci0gICAgICAgIGNvbnRleHQgPSBbSlNDb250ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxD
b250ZXh0UmVmOnRvR2xvYmFsUmVmKHRvSlMoY2FsbGVyQ29udGV4dCktPmxleGljYWxHbG9iYWxP
YmplY3QoKS0+Z2xvYmFsRXhlYygpKV07Ci0gICAgICAgIGltcGwtPnNldENvbnRleHQoY29udGV4
dCk7Ci0gICAgfQorICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtKU0NvbnRleHQgY29udGV4dFdp
dGhKU0dsb2JhbENvbnRleHRSZWY6dG9HbG9iYWxSZWYoY2FsbGJhY2stPmdsb2JhbE9iamVjdCgp
LT5nbG9iYWxFeGVjKCkpXTsKIAogICAgIENhbGxiYWNrRGF0YSBjYWxsYmFja0RhdGE7CiAgICAg
SlNWYWx1ZVJlZiByZXN1bHQ7CkBAIC01ODcsNyArNTcwLDcgQEAgc3RhdGljIEpTT2JqZWN0UmVm
IG9iakNDYWxsYmFja0Z1bmN0aW9uRgogCiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pT
KFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwogICAgIEpTQzo6QVBJRW50cnlTaGltIHNo
aW0oZXhlYyk7Ci0gICAgT3duUHRyPEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsPiBpbXBs
ID0gYWRvcHRQdHIobmV3IEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsKGNvbnRleHQsIGlu
dm9jYXRpb24sIHR5cGUsIGluc3RhbmNlQ2xhc3MsIGFyZ3VtZW50cy5yZWxlYXNlKCksIHJlc3Vs
dC5yZWxlYXNlKCkpKTsKKyAgICBPd25QdHI8SlNDOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGw+
IGltcGwgPSBhZG9wdFB0cihuZXcgSlNDOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGwoaW52b2Nh
dGlvbiwgdHlwZSwgaW5zdGFuY2VDbGFzcywgYXJndW1lbnRzLnJlbGVhc2UoKSwgcmVzdWx0LnJl
bGVhc2UoKSkpOwogICAgIC8vIEZJWE1FOiBNYXliZSB3ZSBjb3VsZCBzdXBwb3J0IGhhdmluZyB0
aGUgc2VsZWN0b3IgYXMgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIHRvIG1ha2UgaXQgYSBiaXQg
bW9yZSB1c2VyLWZyaWVuZGx5IGZyb20gdGhlIEpTIHNpZGU/CiAgICAgcmV0dXJuIHRvUmVmKEpT
Qzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShleGVjLT52bSgpLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksICIiLCBpbXBsLnJlbGVhc2UoKSkpOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9DdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VycmVudFRo
aXNJbnNpZGVCbG9ja0dldHRlclRlc3QuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDdXJyZW50
VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdF9oCisjZGVmaW5lIEN1cnJlbnRUaGlzSW5zaWRlQmxv
Y2tHZXR0ZXJUZXN0X2gKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lmg+CisKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRCAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwOTAKKwordm9pZCBjdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVz
dCgpOworCisjZW5kaWYgLy8gSlNDX09CSkNfQVBJX0VOQUJMRUQgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCisKKworI2VuZGlmIC8vIEN1cnJlbnRUaGlzSW5zaWRl
QmxvY2tHZXR0ZXJUZXN0X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
Q3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9DdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVz
dC5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3Vy
cmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dl
dHRlclRlc3QuaCIKKworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVEICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRp
b24uaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+CisKK3N0YXRp
YyBKU09iamVjdFJlZiBDYWxsQXNDb25zdHJ1Y3RvcihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVj
dFJlZiBjb25zdHJ1Y3Rvciwgc2l6ZV90LCBjb25zdCBKU1ZhbHVlUmVmW10sIEpTVmFsdWVSZWYq
KQoreworICAgIEpTT2JqZWN0UmVmIG5ld09iamVjdFJlZiA9IE5VTEw7CisgICAgTlNNdXRhYmxl
RGljdGlvbmFyeSAqY29uc3RydWN0b3JQcml2YXRlUHJvcGVydGllcyA9IChfX2JyaWRnZSBOU011
dGFibGVEaWN0aW9uYXJ5ICopKEpTT2JqZWN0R2V0UHJpdmF0ZShjb25zdHJ1Y3RvcikpOworICAg
IE5TRGljdGlvbmFyeSAqY29uc3RydWN0b3JEZXNjcmlwdG9yID0gY29uc3RydWN0b3JQcml2YXRl
UHJvcGVydGllc1tAImNvbnN0cnVjdG9yRGVzY3JpcHRvciJdOworICAgIG5ld09iamVjdFJlZiA9
IEpTT2JqZWN0TWFrZShjdHgsIE5VTEwsIE5VTEwpOworICAgIE5TRGljdGlvbmFyeSAqb2JqZWN0
UHJvcGVydGllcyA9IGNvbnN0cnVjdG9yRGVzY3JpcHRvcltAIm9iamVjdFByb3BlcnRpZXMiXTsK
KyAgICAKKyAgICBpZiAob2JqZWN0UHJvcGVydGllcykgeworICAgICAgICBKU1ZhbHVlICpuZXdP
YmplY3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOm5ld09iamVjdFJlZiBpbkNvbnRl
eHQ6W0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29udGV4dFJlZjpKU0NvbnRleHRHZXRH
bG9iYWxDb250ZXh0KGN0eCldXTsKKyAgICAgICAgZm9yIChOU1N0cmluZyAqb2JqZWN0UHJvcGVy
dHkgaW4gb2JqZWN0UHJvcGVydGllcykgeworICAgICAgICAgICAgW25ld09iamVjdCBkZWZpbmVQ
cm9wZXJ0eTpvYmplY3RQcm9wZXJ0eSBkZXNjcmlwdG9yOm9iamVjdFByb3BlcnRpZXNbb2JqZWN0
UHJvcGVydHldXTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gbmV3T2JqZWN0
UmVmOworfQorCitzdGF0aWMgdm9pZCBDb25zdHJ1Y3RvckZpbmFsaXplKEpTT2JqZWN0UmVmIG9i
amVjdCkKK3sKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpwcml2YXRlUHJvcGVydGllcyA9IChf
X2JyaWRnZSBOU011dGFibGVEaWN0aW9uYXJ5ICopKEpTT2JqZWN0R2V0UHJpdmF0ZShvYmplY3Qp
KTsKKyAgICBDRkJyaWRnaW5nUmVsZWFzZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKShwcml2YXRlUHJv
cGVydGllcykpOworICAgIEpTT2JqZWN0U2V0UHJpdmF0ZShvYmplY3QsIE5VTEwpOworfQorCitz
dGF0aWMgSlNDbGFzc1JlZiBDb25zdHJ1Y3RvckNsYXNzKHZvaWQpCit7CisgICAgc3RhdGljIEpT
Q2xhc3NSZWYgY29uc3RydWN0b3JDbGFzcyA9IE5VTEw7CisgICAgCisgICAgaWYgKGNvbnN0cnVj
dG9yQ2xhc3MgPT0gTlVMTCkgeworICAgICAgICBKU0NsYXNzRGVmaW5pdGlvbiBjbGFzc0RlZmlu
aXRpb24gPSBrSlNDbGFzc0RlZmluaXRpb25FbXB0eTsKKyAgICAgICAgY2xhc3NEZWZpbml0aW9u
LmNsYXNzTmFtZSA9ICJDb25zdHJ1Y3RvciI7CisgICAgICAgIGNsYXNzRGVmaW5pdGlvbi5jYWxs
QXNDb25zdHJ1Y3RvciA9IENhbGxBc0NvbnN0cnVjdG9yOworICAgICAgICBjbGFzc0RlZmluaXRp
b24uZmluYWxpemUgPSBDb25zdHJ1Y3RvckZpbmFsaXplOworICAgICAgICBjb25zdHJ1Y3RvckNs
YXNzID0gSlNDbGFzc0NyZWF0ZSgmY2xhc3NEZWZpbml0aW9uKTsKKyAgICB9CisgICAgCisgICAg
cmV0dXJuIGNvbnN0cnVjdG9yQ2xhc3M7Cit9CisKK0BpbnRlcmZhY2UgSlNWYWx1ZSAoQ29uc3Ry
dWN0b3JDcmVhdGlvbikKKworKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aENvbnN0cnVjdG9yRGVzY3Jp
cHRvcjooTlNEaWN0aW9uYXJ5ICopY29uc3RydWN0b3JEZXNjcmlwdG9yIGluQ29udGV4dDooSlND
b250ZXh0ICopY29udGV4dDsKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gSlNWYWx1ZSAoQ29u
c3RydWN0b3JDcmVhdGlvbikKKworKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aENvbnN0cnVjdG9yRGVz
Y3JpcHRvcjooaWQpY29uc3RydWN0b3JEZXNjcmlwdG9yIGluQ29udGV4dDooSlNDb250ZXh0ICop
Y29udGV4dAoreworICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnByaXZhdGVQcm9wZXJ0aWVzID0g
W0B7IEAiY29uc3RydWN0b3JEZXNjcmlwdG9yIiA6IGNvbnN0cnVjdG9yRGVzY3JpcHRvciB9IG11
dGFibGVDb3B5XTsKKyAgICBKU0dsb2JhbENvbnRleHRSZWYgY3R4ID0gW2NvbnRleHQgSlNHbG9i
YWxDb250ZXh0UmVmXTsKKyAgICBKU09iamVjdFJlZiBjb25zdHJ1Y3RvclJlZiA9IEpTT2JqZWN0
TWFrZShjdHgsIENvbnN0cnVjdG9yQ2xhc3MoKSwgKHZvaWQgKilDRkJyaWRnaW5nUmV0YWluKHBy
aXZhdGVQcm9wZXJ0aWVzKSk7CisgICAgSlNWYWx1ZSAqY29uc3RydWN0b3IgPSBbSlNWYWx1ZSB2
YWx1ZVdpdGhKU1ZhbHVlUmVmOmNvbnN0cnVjdG9yUmVmIGluQ29udGV4dDpjb250ZXh0XTsKKyAg
ICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK0BlbmQKKworQGludGVyZmFjZSBKU0NvbnRleHQg
KENvbnN0cnVjdG9yQ3JlYXRpb24pCisKKy0gKEpTVmFsdWUgKil2YWx1ZVdpdGhDb25zdHJ1Y3Rv
ckRlc2NyaXB0b3I6KE5TRGljdGlvbmFyeSAqKWNvbnN0cnVjdG9yRGVzY3JpcHRvcjsKKworQGVu
ZAorCitAaW1wbGVtZW50YXRpb24gSlNDb250ZXh0IChDb25zdHJ1Y3RvckNyZWF0aW9uKQorCist
IChKU1ZhbHVlICopdmFsdWVXaXRoQ29uc3RydWN0b3JEZXNjcmlwdG9yOihpZCljb25zdHJ1Y3Rv
ckRlc2NyaXB0b3IKK3sKKyAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoQ29uc3RydWN0b3JE
ZXNjcmlwdG9yOmNvbnN0cnVjdG9yRGVzY3JpcHRvciBpbkNvbnRleHQ6c2VsZl07Cit9CisKK0Bl
bmQKKwordm9pZCBjdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdCgpCit7CisgICAgQGF1
dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0
IGFsbG9jXSBpbml0XTsKKyAgICAgICAgCisgICAgICAgIEpTVmFsdWUgKm15Q29uc3RydWN0b3Ig
PSBbY29udGV4dCB2YWx1ZVdpdGhDb25zdHJ1Y3RvckRlc2NyaXB0b3I6QHsKKyAgICAgICAgICAg
IEAib2JqZWN0UHJvcGVydGllcyIgOiBAeworICAgICAgICAgICAgICAgIEAiY3VycmVudFRoaXMi
IDogQHsgSlNQcm9wZXJ0eURlc2NyaXB0b3JHZXRLZXkgOiBeeyByZXR1cm4gSlNDb250ZXh0LmN1
cnJlbnRUaGlzOyB9IH0sCisgICAgICAgICAgICB9LAorICAgICAgICB9XTsKKyAgICAgICAgCisg
ICAgICAgIEpTVmFsdWUgKm15T2JqMSA9IFtteUNvbnN0cnVjdG9yIGNvbnN0cnVjdFdpdGhBcmd1
bWVudHM6bmlsXTsKKyAgICAgICAgTlNMb2coQCJteU9iajEuY3VycmVudFRoaXM6ICVAIiwgbXlP
YmoxW0AiY3VycmVudFRoaXMiXSk7CisgICAgICAgIEpTVmFsdWUgKm15T2JqMiA9IFtteUNvbnN0
cnVjdG9yIGNvbnN0cnVjdFdpdGhBcmd1bWVudHM6QFsgQCJiYXIiIF1dOworICAgICAgICBOU0xv
ZyhAIm15T2JqMi5jdXJyZW50VGhpczogJUAiLCBteU9iajJbQCJjdXJyZW50VGhpcyJdKTsKKyAg
ICB9Cit9CisKKyNlbmRpZiAvLyBKU0NfT0JKQ19BUElfRU5BQkxFRCAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvdGVzdGFwaS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL3Rlc3RhcGkubW0JKHJldmlzaW9uIDE1NzEyMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUs
OCBAQAogCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgogCisjaW1w
b3J0ICJDdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5oIgorCiBleHRlcm4gIkMiIHZv
aWQgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKEpTQ29udGV4dFJlZik7
CiAKIGV4dGVybiAiQyIgYm9vbCBfQmxvY2tfaGFzX3NpZ25hdHVyZShpZCk7CkBAIC05MDYsNiAr
OTA4LDggQEAgdm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSSgpCiAgICAgICAgICAgICBbY29udGV4dC52
aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOm1hbmFnZWRUZXN0T2JqZWN0IHdpdGhP
d25lcjp0ZXN0T2JqZWN0XTsKICAgICAgICAgfQogICAgIH0KKworICAgIGN1cnJlbnRUaGlzSW5z
aWRlQmxvY2tHZXR0ZXJUZXN0KCk7CiB9CiAKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMTU3MTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTExMzcsNiArMTEzNyw3IEBACiAJCUMyOTgxRkQ5MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNp
cmVkV2Vha1JlZmVyZW5jZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMyOTgxRkQ3MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVy
ZW5jZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDMjk4MUZEQzE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVzaXJlZFdyaXRlQmFycmllcnMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI5ODFGREEx
N0JBRkY0NDAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmNwcCAqLzsgfTsKIAkJ
QzI5ODFGREQxN0JBRkY0NDAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjk4MUZEQjE3QkFG
RjQ0MDBBM0JDOTggLyogREZHRGVzaXJlZFdyaXRlQmFycmllcnMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDMjlFQ0IwMzE4MDREMEVEMDBEMkNC
QjQgLyogQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjlFQ0IwMTE4MDREMEVEMDBEMkNCQjQg
LyogQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0gKi87IH07CiAJCUMyQTdGNjg4
MTYwNDMyRDQwMEY3NkI5OCAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJBN0Y2ODcxNjA0MzJENDAwRjc2Qjk4
IC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzJCOTE2QzIxNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFs
bG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzJCOTE2QzExNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyQjkxNkM1MTREQTA0MEMw
MENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzJCOTE2QzQxNERBMDQwQzAwQ0JBQzg2IC8qIE1hcmtlZEFs
bG9jYXRvci5jcHAgKi87IH07CkBAIC0yMzUyLDYgKzIzNTMsOCBAQAogCQlDMjk4MUZENzE3QkFF
RTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5oOyBwYXRoID0gZGZn
L0RGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMjk4MUZEQTE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVzaXJlZFdyaXRlQmFycmllcnMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHRGVzaXJlZFdyaXRlQmFy
cmllcnMuY3BwOyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI5ODFGREIxN0JBRkY0NDAwQTNCQzk4IC8qIERGR0Rl
c2lyZWRXcml0ZUJhcnJpZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERG
R0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmg7IHBhdGggPSBkZmcvREZHRGVzaXJlZFdyaXRlQmFycmll
cnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI5RUNCMDExODA0RDBFRDAwRDJD
QkI0IC8qIEN1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRl
c3QubW07IHBhdGggPSBBUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3Qu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyOUVDQjAyMTgwNEQwRUQwMEQyQ0JC
NCAvKiBDdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBDdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5oOyBwYXRo
ID0gQVBJL3Rlc3RzL0N1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQTdGNjg3MTYwNDMyRDQwMEY3NkI5OCAvKiBKU0Rlc3Ry
dWN0aWJsZU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Rlc3Ry
dWN0aWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkI5MTZDMTE0
REEwMTRFMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1hcmtlZEFsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDMkI5MTZDNDE0REEwNDBDMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcmtlZEFsbG9jYXRvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzAxLDYgKzI3MDQsOCBAQAogCQkJCTE0RDg1
Nzc0MEE0Njk2QzgwMDMyMTQ2QyAvKiB0ZXN0YXBpLmpzICovLAogCQkJCTg2RDIyMjE5MTY3RUY5
NDQwMDI0QzgwNCAvKiB0ZXN0YXBpLm1tICovLAogCQkJCTY1MTEyMkU1MTQwNDY5QkEwMDJCMTAx
RCAvKiB0ZXN0UmVnRXhwLmNwcCAqLywKKwkJCQlDMjlFQ0IwMTE4MDREMEVEMDBEMkNCQjQgLyog
Q3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0gKi8sCisJCQkJQzI5RUNCMDIxODA0
RDBFRDAwRDJDQkI0IC8qIEN1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0LmggKi8sCiAJ
CQkpOwogCQkJbmFtZSA9IHRlc3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTQ4
OTksNiArNDkwNCw3IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxk
QWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQlDMjlFQ0IwMzE4MDRE
MEVEMDBEMkNCQjQgLyogQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0gaW4gU291
cmNlcyAqLywKIAkJCQkxNDQwRjYxMDBBNEY4NTY3MDAwNUYwNjEgLyogdGVzdGFwaS5jIGluIFNv
dXJjZXMgKi8sCiAJCQkJODZEMjIyMUExNjdFRjk0NDAwMjRDODA0IC8qIHRlc3RhcGkubW0gaW4g
U291cmNlcyAqLywKIAkJCSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214218</attachid>
            <date>2013-10-14 18:45:09 -0700</date>
            <delta_ts>2013-10-14 21:08:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122531-20131014184503.patch</filename>
            <type>text/plain</type>
            <size>18936</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3NDM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBA
CisyMDEzLTEwLTA4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgT2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsIHNob3VsZG4ndCBzdG9yZSBhIEpTQ29u
dGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIy
NTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IG1fY29udGV4dCBmaWVsZCBpbiBPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGwgaXMgdmVzdGlnaWFs
IGFuZCBpcyBvbmx5IGluY2lkZW50YWxseSBjb3JyZWN0IAorICAgICAgICBpbiB0aGUgY29tbW9u
IGNhc2UuIEl0J3MgYWxzbyBubyBsb25nZXIgbmVjZXNzYXJ5IGluIHRoYXQgd2UgY2FuIGxvb2sg
dXAgdGhlIGN1cnJlbnQgSlNDb250ZXh0IAorICAgICAgICBieSBsb29raW5nIHVzaW5nIHRoZSBn
bG9iYWxPYmplY3Qgb2YgdGhlIGNhbGxlZSB3aGVuIHRoZSBmdW5jdGlvbiBjYWxsYmFjayBpcyBp
bnZva2VkLgorCisgICAgICAgIEFsc28gYWRkZWQgYSBuZXcgdGVzdCB0aGF0IHdvdWxkIGNhdXNl
IHVzIHRvIGNyYXNoIHByZXZpb3VzbHkuIFRoZSB0ZXN0IHJlcXVpcmVkIG1ha2luZyAKKyAgICAg
ICAgSlNDb250ZXh0R2V0R2xvYmFsQ29udGV4dCBwdWJsaWMgQVBJIHNvIHRoYXQgY2xpZW50cyBj
YW4gb2J0YWluIGEgSlNDb250ZXh0IGZyb20gdGhlIEpTQ29udGV4dFJlZgorICAgICAgICBpbiBD
IEFQSSBjYWxsYmFja3MuCisKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmg6CisgICAgICAg
ICogQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaDoKKyAgICAgICAgKiBBUEkvT2JqQ0NhbGxiYWNr
RnVuY3Rpb24ubW06CisgICAgICAgIChKU0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbDo6T2Jq
Q0NhbGxiYWNrRnVuY3Rpb25JbXBsKToKKyAgICAgICAgKEpTQzo6b2JqQ0NhbGxiYWNrRnVuY3Rp
b25DYWxsQXNGdW5jdGlvbik6CisgICAgICAgIChvYmpDQ2FsbGJhY2tGdW5jdGlvbkZvckludm9j
YXRpb24pOgorICAgICAgICAqIEFQSS90ZXN0cy9DdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVy
VGVzdC5oOiBBZGRlZC4KKyAgICAgICAgKiBBUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNpZGVCbG9j
a0dldHRlclRlc3QubW06IEFkZGVkLgorICAgICAgICAoQ2FsbEFzQ29uc3RydWN0b3IpOgorICAg
ICAgICAoQ29uc3RydWN0b3JGaW5hbGl6ZSk6CisgICAgICAgIChDb25zdHJ1Y3RvckNsYXNzKToK
KyAgICAgICAgKCtbSlNWYWx1ZSB2YWx1ZVdpdGhDb25zdHJ1Y3RvckRlc2NyaXB0b3I6aW5Db250
ZXh0Ol0pOgorICAgICAgICAoLVtKU0NvbnRleHQgdmFsdWVXaXRoQ29uc3RydWN0b3JEZXNjcmlw
dG9yOl0pOgorICAgICAgICAoY3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QpOgorICAg
ICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLm1tOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTMtMTAtMTQgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgUHV0QnlJZCBJQyBzaG91bGQgdXNlIHRoZSBD
b25jdXJyZW50SklUTG9ja2VyIHNpbmNlIGl0J3Mgbm93IGRlYWxpbmcgd2l0aCBJQydzIHRoYXQg
Z2V0IHJlYWQgYnkgdGhlIGNvbXBpbGVyIHRocmVhZApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NvbnRleHRSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ29udGV4dFJlZi5oCShyZXZpc2lvbiAxNTc0MzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiArMTI1
LDE3IEBAIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU0NvbnRleHRHZXRHbG9iYWwKICovCiBKU19F
WFBPUlQgSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R2V0R3JvdXAoSlNDb250ZXh0UmVmIGN0
eCkgQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKIAorI2lmIGRlZmluZWQoX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDcwCisvKiEKK0BmdW5jdGlvbgorQGFic3RyYWN0IEdldHMgdGhlIGdsb2JhbCBj
b250ZXh0IG9mIGEgSmF2YVNjcmlwdCBleGVjdXRpb24gY29udGV4dC4KK0BwYXJhbSBjdHggVGhl
IEpTQ29udGV4dCB3aG9zZSBnbG9iYWwgY29udGV4dCB5b3Ugd2FudCB0byBnZXQuCitAcmVzdWx0
IGN0eCdzIGdsb2JhbCBjb250ZXh0LgorKi8KK0pTX0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYg
SlNDb250ZXh0R2V0R2xvYmFsQ29udGV4dChKU0NvbnRleHRSZWYgY3R4KTsKKyNlbmRpZgorCisg
ICAgCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NvbnRleHRSZWZQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWZQcml2YXRlLmgJKHJldmlzaW9uIDE1NzQzNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmUHJpdmF0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCwxNSArNDAsNiBAQCBleHRlcm4gIkMiIHsKIAogLyohCiBAZnVuY3Rp
b24KLUBhYnN0cmFjdCBHZXRzIHRoZSBnbG9iYWwgY29udGV4dCBvZiBhIEphdmFTY3JpcHQgZXhl
Y3V0aW9uIGNvbnRleHQuCi1AcGFyYW0gY3R4IFRoZSBKU0NvbnRleHQgd2hvc2UgZ2xvYmFsIGNv
bnRleHQgeW91IHdhbnQgdG8gZ2V0LgotQHJlc3VsdCBjdHgncyBnbG9iYWwgY29udGV4dC4KLSov
Ci1KU19FWFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpTQ29udGV4dEdldEdsb2JhbENvbnRleHQo
SlNDb250ZXh0UmVmIGN0eCk7Ci0KLSAgICAKLS8qIQotQGZ1bmN0aW9uCiBAYWJzdHJhY3QgR2V0
cyBhIEJhY2t0cmFjZSBmb3IgdGhlIGV4aXN0aW5nIGNvbnRleHQKIEBwYXJhbSBjdHggVGhlIEpT
Q29udGV4dCB3aG9zZSBiYWNrdHJhY2UgeW91IHdhbnQgdG8gZ2V0CiBAcmVzdWx0IEEgc3RyaW5n
IGNvbnRhaW5pbmcgdGhlIGJhY2t0cmFjZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCShyZXZpc2lvbiAxNTc0MzcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zOTQsOSArMzk0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIE9iakND
YWxsYmFja0Z1bmN0aW9uSW1wbCB7CiBwdWJsaWM6Ci0gICAgT2JqQ0NhbGxiYWNrRnVuY3Rpb25J
bXBsKEpTQ29udGV4dCAqY29udGV4dCwgTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uLCBDYWxsYmFj
a1R5cGUgdHlwZSwgQ2xhc3MgaW5zdGFuY2VDbGFzcywgUGFzc093blB0cjxDYWxsYmFja0FyZ3Vt
ZW50PiBhcmd1bWVudHMsIFBhc3NPd25QdHI8Q2FsbGJhY2tSZXN1bHQ+IHJlc3VsdCkKLSAgICAg
ICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAgICAgLCBtX3R5cGUodHlwZSkKKyAgICBPYmpD
Q2FsbGJhY2tGdW5jdGlvbkltcGwoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uLCBDYWxsYmFja1R5
cGUgdHlwZSwgQ2xhc3MgaW5zdGFuY2VDbGFzcywgUGFzc093blB0cjxDYWxsYmFja0FyZ3VtZW50
PiBhcmd1bWVudHMsIFBhc3NPd25QdHI8Q2FsbGJhY2tSZXN1bHQ+IHJlc3VsdCkKKyAgICAgICAg
OiBtX3R5cGUodHlwZSkKICAgICAgICAgLCBtX2luc3RhbmNlQ2xhc3MoW2luc3RhbmNlQ2xhc3Mg
cmV0YWluXSkKICAgICAgICAgLCBtX2ludm9jYXRpb24oaW52b2NhdGlvbikKICAgICAgICAgLCBt
X2FyZ3VtZW50cyhhcmd1bWVudHMpCkBAIC00MTIsMjQgKzQxMSwxMiBAQCBwdWJsaWM6CiAKICAg
ICBKU1ZhbHVlUmVmIGNhbGwoSlNDb250ZXh0ICpjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2Jq
ZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKIAotICAgIEpTQ29udGV4dCAqY29udGV4dCgpCi0gICAg
ewotICAgICAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOwotICAgIH0KLQotICAgIHZvaWQgc2V0
Q29udGV4dChKU0NvbnRleHQgKmNvbnRleHQpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fY29u
dGV4dC5nZXQoKSk7Ci0gICAgICAgIG1fY29udGV4dC5zZXQoY29udGV4dCk7Ci0gICAgfQotCiAg
ICAgaWQgd3JhcHBlZEJsb2NrKCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX3R5cGUgPT0gQ2Fs
bGJhY2tCbG9jayA/IFttX2ludm9jYXRpb24gdGFyZ2V0XSA6IG5pbDsKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgV2Vha0NvbnRleHRSZWYgbV9jb250ZXh0OwogICAgIENhbGxiYWNrVHlwZSBtX3R5
cGU7CiAgICAgQ2xhc3MgbV9pbnN0YW5jZUNsYXNzOwogICAgIFJldGFpblB0cjxOU0ludm9jYXRp
b24+IG1faW52b2NhdGlvbjsKQEAgLTQ0NywxMSArNDM0LDcgQEAgc3RhdGljIEpTVmFsdWVSZWYg
b2JqQ0NhbGxiYWNrRnVuY3Rpb25DYQogCiAgICAgT2JqQ0NhbGxiYWNrRnVuY3Rpb24qIGNhbGxi
YWNrID0gc3RhdGljX2Nhc3Q8T2JqQ0NhbGxiYWNrRnVuY3Rpb24qPih0b0pTKGZ1bmN0aW9uKSk7
CiAgICAgT2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsKiBpbXBsID0gY2FsbGJhY2stPmltcGwoKTsK
LSAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBpbXBsLT5jb250ZXh0KCk7Ci0gICAgaWYgKCFjb250
ZXh0KSB7Ci0gICAgICAgIGNvbnRleHQgPSBbSlNDb250ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxD
b250ZXh0UmVmOnRvR2xvYmFsUmVmKHRvSlMoY2FsbGVyQ29udGV4dCktPmxleGljYWxHbG9iYWxP
YmplY3QoKS0+Z2xvYmFsRXhlYygpKV07Ci0gICAgICAgIGltcGwtPnNldENvbnRleHQoY29udGV4
dCk7Ci0gICAgfQorICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtKU0NvbnRleHQgY29udGV4dFdp
dGhKU0dsb2JhbENvbnRleHRSZWY6dG9HbG9iYWxSZWYoY2FsbGJhY2stPmdsb2JhbE9iamVjdCgp
LT5nbG9iYWxFeGVjKCkpXTsKIAogICAgIENhbGxiYWNrRGF0YSBjYWxsYmFja0RhdGE7CiAgICAg
SlNWYWx1ZVJlZiByZXN1bHQ7CkBAIC02MjYsNyArNjA5LDcgQEAgc3RhdGljIEpTT2JqZWN0UmVm
IG9iakNDYWxsYmFja0Z1bmN0aW9uRgogCiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pT
KFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwogICAgIEpTQzo6QVBJRW50cnlTaGltIHNo
aW0oZXhlYyk7Ci0gICAgT3duUHRyPEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsPiBpbXBs
ID0gYWRvcHRQdHIobmV3IEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsKGNvbnRleHQsIGlu
dm9jYXRpb24sIHR5cGUsIGluc3RhbmNlQ2xhc3MsIGFyZ3VtZW50cy5yZWxlYXNlKCksIHJlc3Vs
dC5yZWxlYXNlKCkpKTsKKyAgICBPd25QdHI8SlNDOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGw+
IGltcGwgPSBhZG9wdFB0cihuZXcgSlNDOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGwoaW52b2Nh
dGlvbiwgdHlwZSwgaW5zdGFuY2VDbGFzcywgYXJndW1lbnRzLnJlbGVhc2UoKSwgcmVzdWx0LnJl
bGVhc2UoKSkpOwogICAgIC8vIEZJWE1FOiBNYXliZSB3ZSBjb3VsZCBzdXBwb3J0IGhhdmluZyB0
aGUgc2VsZWN0b3IgYXMgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIHRvIG1ha2UgaXQgYSBiaXQg
bW9yZSB1c2VyLWZyaWVuZGx5IGZyb20gdGhlIEpTIHNpZGU/CiAgICAgcmV0dXJuIHRvUmVmKEpT
Qzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShleGVjLT52bSgpLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksICIiLCBpbXBsLnJlbGVhc2UoKSkpOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9DdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VycmVudFRo
aXNJbnNpZGVCbG9ja0dldHRlclRlc3QuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDdXJyZW50
VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdF9oCisjZGVmaW5lIEN1cnJlbnRUaGlzSW5zaWRlQmxv
Y2tHZXR0ZXJUZXN0X2gKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lmg+CisKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRCAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwOTAKKwordm9pZCBjdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVz
dCgpOworCisjZW5kaWYgLy8gSlNDX09CSkNfQVBJX0VOQUJMRUQgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCisKKworI2VuZGlmIC8vIEN1cnJlbnRUaGlzSW5zaWRl
QmxvY2tHZXR0ZXJUZXN0X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
Q3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9DdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVz
dC5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3Vy
cmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dl
dHRlclRlc3QuaCIKKworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVEICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRp
b24uaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+CisKK3N0YXRp
YyBKU09iamVjdFJlZiBDYWxsQXNDb25zdHJ1Y3RvcihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVj
dFJlZiBjb25zdHJ1Y3Rvciwgc2l6ZV90LCBjb25zdCBKU1ZhbHVlUmVmW10sIEpTVmFsdWVSZWYq
KQoreworICAgIEpTT2JqZWN0UmVmIG5ld09iamVjdFJlZiA9IE5VTEw7CisgICAgTlNNdXRhYmxl
RGljdGlvbmFyeSAqY29uc3RydWN0b3JQcml2YXRlUHJvcGVydGllcyA9IChfX2JyaWRnZSBOU011
dGFibGVEaWN0aW9uYXJ5ICopKEpTT2JqZWN0R2V0UHJpdmF0ZShjb25zdHJ1Y3RvcikpOworICAg
IE5TRGljdGlvbmFyeSAqY29uc3RydWN0b3JEZXNjcmlwdG9yID0gY29uc3RydWN0b3JQcml2YXRl
UHJvcGVydGllc1tAImNvbnN0cnVjdG9yRGVzY3JpcHRvciJdOworICAgIG5ld09iamVjdFJlZiA9
IEpTT2JqZWN0TWFrZShjdHgsIE5VTEwsIE5VTEwpOworICAgIE5TRGljdGlvbmFyeSAqb2JqZWN0
UHJvcGVydGllcyA9IGNvbnN0cnVjdG9yRGVzY3JpcHRvcltAIm9iamVjdFByb3BlcnRpZXMiXTsK
KyAgICAKKyAgICBpZiAob2JqZWN0UHJvcGVydGllcykgeworICAgICAgICBKU1ZhbHVlICpuZXdP
YmplY3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOm5ld09iamVjdFJlZiBpbkNvbnRl
eHQ6W0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29udGV4dFJlZjpKU0NvbnRleHRHZXRH
bG9iYWxDb250ZXh0KGN0eCldXTsKKyAgICAgICAgZm9yIChOU1N0cmluZyAqb2JqZWN0UHJvcGVy
dHkgaW4gb2JqZWN0UHJvcGVydGllcykgeworICAgICAgICAgICAgW25ld09iamVjdCBkZWZpbmVQ
cm9wZXJ0eTpvYmplY3RQcm9wZXJ0eSBkZXNjcmlwdG9yOm9iamVjdFByb3BlcnRpZXNbb2JqZWN0
UHJvcGVydHldXTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gbmV3T2JqZWN0
UmVmOworfQorCitzdGF0aWMgdm9pZCBDb25zdHJ1Y3RvckZpbmFsaXplKEpTT2JqZWN0UmVmIG9i
amVjdCkKK3sKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpwcml2YXRlUHJvcGVydGllcyA9IChf
X2JyaWRnZSBOU011dGFibGVEaWN0aW9uYXJ5ICopKEpTT2JqZWN0R2V0UHJpdmF0ZShvYmplY3Qp
KTsKKyAgICBDRkJyaWRnaW5nUmVsZWFzZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKShwcml2YXRlUHJv
cGVydGllcykpOworICAgIEpTT2JqZWN0U2V0UHJpdmF0ZShvYmplY3QsIE5VTEwpOworfQorCitz
dGF0aWMgSlNDbGFzc1JlZiBDb25zdHJ1Y3RvckNsYXNzKHZvaWQpCit7CisgICAgc3RhdGljIEpT
Q2xhc3NSZWYgY29uc3RydWN0b3JDbGFzcyA9IE5VTEw7CisgICAgCisgICAgaWYgKGNvbnN0cnVj
dG9yQ2xhc3MgPT0gTlVMTCkgeworICAgICAgICBKU0NsYXNzRGVmaW5pdGlvbiBjbGFzc0RlZmlu
aXRpb24gPSBrSlNDbGFzc0RlZmluaXRpb25FbXB0eTsKKyAgICAgICAgY2xhc3NEZWZpbml0aW9u
LmNsYXNzTmFtZSA9ICJDb25zdHJ1Y3RvciI7CisgICAgICAgIGNsYXNzRGVmaW5pdGlvbi5jYWxs
QXNDb25zdHJ1Y3RvciA9IENhbGxBc0NvbnN0cnVjdG9yOworICAgICAgICBjbGFzc0RlZmluaXRp
b24uZmluYWxpemUgPSBDb25zdHJ1Y3RvckZpbmFsaXplOworICAgICAgICBjb25zdHJ1Y3RvckNs
YXNzID0gSlNDbGFzc0NyZWF0ZSgmY2xhc3NEZWZpbml0aW9uKTsKKyAgICB9CisgICAgCisgICAg
cmV0dXJuIGNvbnN0cnVjdG9yQ2xhc3M7Cit9CisKK0BpbnRlcmZhY2UgSlNWYWx1ZSAoQ29uc3Ry
dWN0b3JDcmVhdGlvbikKKworKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aENvbnN0cnVjdG9yRGVzY3Jp
cHRvcjooTlNEaWN0aW9uYXJ5ICopY29uc3RydWN0b3JEZXNjcmlwdG9yIGluQ29udGV4dDooSlND
b250ZXh0ICopY29udGV4dDsKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gSlNWYWx1ZSAoQ29u
c3RydWN0b3JDcmVhdGlvbikKKworKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aENvbnN0cnVjdG9yRGVz
Y3JpcHRvcjooaWQpY29uc3RydWN0b3JEZXNjcmlwdG9yIGluQ29udGV4dDooSlNDb250ZXh0ICop
Y29udGV4dAoreworICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnByaXZhdGVQcm9wZXJ0aWVzID0g
W0B7IEAiY29uc3RydWN0b3JEZXNjcmlwdG9yIiA6IGNvbnN0cnVjdG9yRGVzY3JpcHRvciB9IG11
dGFibGVDb3B5XTsKKyAgICBKU0dsb2JhbENvbnRleHRSZWYgY3R4ID0gW2NvbnRleHQgSlNHbG9i
YWxDb250ZXh0UmVmXTsKKyAgICBKU09iamVjdFJlZiBjb25zdHJ1Y3RvclJlZiA9IEpTT2JqZWN0
TWFrZShjdHgsIENvbnN0cnVjdG9yQ2xhc3MoKSwgKHZvaWQgKilDRkJyaWRnaW5nUmV0YWluKHBy
aXZhdGVQcm9wZXJ0aWVzKSk7CisgICAgSlNWYWx1ZSAqY29uc3RydWN0b3IgPSBbSlNWYWx1ZSB2
YWx1ZVdpdGhKU1ZhbHVlUmVmOmNvbnN0cnVjdG9yUmVmIGluQ29udGV4dDpjb250ZXh0XTsKKyAg
ICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK0BlbmQKKworQGludGVyZmFjZSBKU0NvbnRleHQg
KENvbnN0cnVjdG9yQ3JlYXRpb24pCisKKy0gKEpTVmFsdWUgKil2YWx1ZVdpdGhDb25zdHJ1Y3Rv
ckRlc2NyaXB0b3I6KE5TRGljdGlvbmFyeSAqKWNvbnN0cnVjdG9yRGVzY3JpcHRvcjsKKworQGVu
ZAorCitAaW1wbGVtZW50YXRpb24gSlNDb250ZXh0IChDb25zdHJ1Y3RvckNyZWF0aW9uKQorCist
IChKU1ZhbHVlICopdmFsdWVXaXRoQ29uc3RydWN0b3JEZXNjcmlwdG9yOihpZCljb25zdHJ1Y3Rv
ckRlc2NyaXB0b3IKK3sKKyAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoQ29uc3RydWN0b3JE
ZXNjcmlwdG9yOmNvbnN0cnVjdG9yRGVzY3JpcHRvciBpbkNvbnRleHQ6c2VsZl07Cit9CisKK0Bl
bmQKKwordm9pZCBjdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdCgpCit7CisgICAgQGF1
dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0
IGFsbG9jXSBpbml0XTsKKyAgICAgICAgCisgICAgICAgIEpTVmFsdWUgKm15Q29uc3RydWN0b3Ig
PSBbY29udGV4dCB2YWx1ZVdpdGhDb25zdHJ1Y3RvckRlc2NyaXB0b3I6QHsKKyAgICAgICAgICAg
IEAib2JqZWN0UHJvcGVydGllcyIgOiBAeworICAgICAgICAgICAgICAgIEAiY3VycmVudFRoaXMi
IDogQHsgSlNQcm9wZXJ0eURlc2NyaXB0b3JHZXRLZXkgOiBeeyByZXR1cm4gSlNDb250ZXh0LmN1
cnJlbnRUaGlzOyB9IH0sCisgICAgICAgICAgICB9LAorICAgICAgICB9XTsKKyAgICAgICAgCisg
ICAgICAgIEpTVmFsdWUgKm15T2JqMSA9IFtteUNvbnN0cnVjdG9yIGNvbnN0cnVjdFdpdGhBcmd1
bWVudHM6bmlsXTsKKyAgICAgICAgTlNMb2coQCJteU9iajEuY3VycmVudFRoaXM6ICVAIiwgbXlP
YmoxW0AiY3VycmVudFRoaXMiXSk7CisgICAgICAgIEpTVmFsdWUgKm15T2JqMiA9IFtteUNvbnN0
cnVjdG9yIGNvbnN0cnVjdFdpdGhBcmd1bWVudHM6QFsgQCJiYXIiIF1dOworICAgICAgICBOU0xv
ZyhAIm15T2JqMi5jdXJyZW50VGhpczogJUAiLCBteU9iajJbQCJjdXJyZW50VGhpcyJdKTsKKyAg
ICB9Cit9CisKKyNlbmRpZiAvLyBKU0NfT0JKQ19BUElfRU5BQkxFRCAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvdGVzdGFwaS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL3Rlc3RhcGkubW0JKHJldmlzaW9uIDE1NzQzNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUs
OCBAQAogCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgogCisjaW1w
b3J0ICJDdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5oIgorCiBleHRlcm4gIkMiIHZv
aWQgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKEpTQ29udGV4dFJlZik7
CiAKIGV4dGVybiAiQyIgYm9vbCBfQmxvY2tfaGFzX3NpZ25hdHVyZShpZCk7CkBAIC05NjEsNiAr
OTYzLDggQEAgdm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSSgpCiAgICAgICAgIGNoZWNrUmVzdWx0KEAi
W0pTQ29udGV4dCBjdXJyZW50VGhpc10gPT0gbmlsIG91dHNpZGUgb2YgY2FsbGJhY2siLCAhW0pT
Q29udGV4dCBjdXJyZW50VGhpc10pOwogICAgICAgICBjaGVja1Jlc3VsdChAIltKU0NvbnRleHQg
Y3VycmVudEFyZ3VtZW50c10gPT0gbmlsIG91dHNpZGUgb2YgY2FsbGJhY2siLCAhW0pTQ29udGV4
dCBjdXJyZW50QXJndW1lbnRzXSk7CiAgICAgfQorCisgICAgY3VycmVudFRoaXNJbnNpZGVCbG9j
a0dldHRlclRlc3QoKTsKIH0KIAogI2Vsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAxNTc0MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTE1OCw2
ICsxMTU4LDcgQEAKIAkJQzI5ODFGRDkxN0JBRUU0QjAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXZWFr
UmVmZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzI5ODFGRDcxN0JBRUU0QjAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyOTgx
RkRDMTdCQUZGNDQwMEEzQkM5OCAvKiBERkdEZXNpcmVkV3JpdGVCYXJyaWVycy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjk4MUZEQTE3QkFGRjQ0
MDBBM0JDOTggLyogREZHRGVzaXJlZFdyaXRlQmFycmllcnMuY3BwICovOyB9OwogCQlDMjk4MUZE
RDE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVzaXJlZFdyaXRlQmFycmllcnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyOTgxRkRCMTdCQUZGNDQwMEEz
QkM5OCAvKiBERkdEZXNpcmVkV3JpdGVCYXJyaWVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMyOUVDQjAzMTgwNEQwRUQwMEQyQ0JCNCAvKiBD
dXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyOUVDQjAxMTgwNEQwRUQwMEQyQ0JCNCAvKiBDdXJy
ZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5tbSAqLzsgfTsKIAkJQzJBN0Y2ODgxNjA0MzJE
NDAwRjc2Qjk4IC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkE3RjY4NzE2MDQzMkQ0MDBGNzZCOTggLyogSlNE
ZXN0cnVjdGlibGVPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlDMkI5MTZDMjE0REEwMTRFMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkI5MTZD
MTE0REEwMTRFMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzJCOTE2QzUxNERBMDQwQzAwQ0JBQzg2
IC8qIE1hcmtlZEFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMkI5MTZDNDE0REEwNDBDMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9y
LmNwcCAqLzsgfTsKQEAgLTI0MDAsNiArMjQwMSw4IEBACiAJCUMyOTgxRkQ3MTdCQUVFNEIwMEEz
QkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmg7IHBhdGggPSBkZmcvREZHRGVz
aXJlZFdlYWtSZWZlcmVuY2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyOTgx
RkRBMTdCQUZGNDQwMEEzQkM5OCAvKiBERkdEZXNpcmVkV3JpdGVCYXJyaWVycy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdEZXNpcmVkV3JpdGVCYXJyaWVycy5j
cHA7IHBhdGggPSBkZmcvREZHRGVzaXJlZFdyaXRlQmFycmllcnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDMjk4MUZEQjE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVzaXJlZFdy
aXRlQmFycmllcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRGVzaXJl
ZFdyaXRlQmFycmllcnMuaDsgcGF0aCA9IGRmZy9ERkdEZXNpcmVkV3JpdGVCYXJyaWVycy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjlFQ0IwMTE4MDREMEVEMDBEMkNCQjQgLyog
Q3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSBDdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5tbTsg
cGF0aCA9IEFQSS90ZXN0cy9DdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI5RUNCMDIxODA0RDBFRDAwRDJDQkI0IC8qIEN1
cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEN1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lmg7IHBhdGggPSBBUEkv
dGVzdHMvQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzJBN0Y2ODcxNjA0MzJENDAwRjc2Qjk4IC8qIEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQjkxNkMxMTREQTAxNEUw
MENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWFya2VkQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMy
QjkxNkM0MTREQTA0MEMwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFya2VkQWxsb2NhdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3OTIsNiArMjc5NSw4IEBACiAJCQkJMTREODU3NzQwQTQ2
OTZDODAwMzIxNDZDIC8qIHRlc3RhcGkuanMgKi8sCiAJCQkJODZEMjIyMTkxNjdFRjk0NDAwMjRD
ODA0IC8qIHRlc3RhcGkubW0gKi8sCiAJCQkJNjUxMTIyRTUxNDA0NjlCQTAwMkIxMDFEIC8qIHRl
c3RSZWdFeHAuY3BwICovLAorCQkJCUMyOUVDQjAxMTgwNEQwRUQwMEQyQ0JCNCAvKiBDdXJyZW50
VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5tbSAqLywKKwkJCQlDMjlFQ0IwMjE4MDREMEVEMDBE
MkNCQjQgLyogQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QuaCAqLywKIAkJCSk7CiAJ
CQluYW1lID0gdGVzdHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNTA1Niw2ICs1
MDYxLDcgQEAKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCUMyOUVDQjAzMTgwNEQwRUQwMEQy
Q0JCNCAvKiBDdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTE0NDBGNjEwMEE0Rjg1NjcwMDA1RjA2MSAvKiB0ZXN0YXBpLmMgaW4gU291cmNlcyAq
LywKIAkJCQk4NkQyMjIxQTE2N0VGOTQ0MDAyNEM4MDQgLyogdGVzdGFwaS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214230</attachid>
            <date>2013-10-14 21:08:13 -0700</date>
            <delta_ts>2013-10-15 11:30:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122531-20131014210803.patch</filename>
            <type>text/plain</type>
            <size>19333</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3NDM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBA
CisyMDEzLTEwLTA4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgT2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsIHNob3VsZG4ndCBzdG9yZSBhIEpTQ29u
dGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIy
NTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IG1fY29udGV4dCBmaWVsZCBpbiBPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGwgaXMgdmVzdGlnaWFs
IGFuZCBpcyBvbmx5IGluY2lkZW50YWxseSBjb3JyZWN0IAorICAgICAgICBpbiB0aGUgY29tbW9u
IGNhc2UuIEl0J3MgYWxzbyBubyBsb25nZXIgbmVjZXNzYXJ5IGluIHRoYXQgd2UgY2FuIGxvb2sg
dXAgdGhlIGN1cnJlbnQgSlNDb250ZXh0IAorICAgICAgICBieSBsb29raW5nIHVzaW5nIHRoZSBn
bG9iYWxPYmplY3Qgb2YgdGhlIGNhbGxlZSB3aGVuIHRoZSBmdW5jdGlvbiBjYWxsYmFjayBpcyBp
bnZva2VkLgorCisgICAgICAgIEFsc28gYWRkZWQgYSBuZXcgdGVzdCB0aGF0IHdvdWxkIGNhdXNl
IHVzIHRvIGNyYXNoIHByZXZpb3VzbHkuIFRoZSB0ZXN0IHJlcXVpcmVkIG1ha2luZyAKKyAgICAg
ICAgSlNDb250ZXh0R2V0R2xvYmFsQ29udGV4dCBwdWJsaWMgQVBJIHNvIHRoYXQgY2xpZW50cyBj
YW4gb2J0YWluIGEgSlNDb250ZXh0IGZyb20gdGhlIEpTQ29udGV4dFJlZgorICAgICAgICBpbiBD
IEFQSSBjYWxsYmFja3MuCisKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmg6CisgICAgICAg
ICogQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaDoKKyAgICAgICAgKiBBUEkvT2JqQ0NhbGxiYWNr
RnVuY3Rpb24ubW06CisgICAgICAgIChKU0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbDo6T2Jq
Q0NhbGxiYWNrRnVuY3Rpb25JbXBsKToKKyAgICAgICAgKEpTQzo6b2JqQ0NhbGxiYWNrRnVuY3Rp
b25DYWxsQXNGdW5jdGlvbik6CisgICAgICAgIChvYmpDQ2FsbGJhY2tGdW5jdGlvbkZvckludm9j
YXRpb24pOgorICAgICAgICAqIEFQSS90ZXN0cy9DdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVy
VGVzdC5oOiBBZGRlZC4KKyAgICAgICAgKiBBUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNpZGVCbG9j
a0dldHRlclRlc3QubW06IEFkZGVkLgorICAgICAgICAoQ2FsbEFzQ29uc3RydWN0b3IpOgorICAg
ICAgICAoQ29uc3RydWN0b3JGaW5hbGl6ZSk6CisgICAgICAgIChDb25zdHJ1Y3RvckNsYXNzKToK
KyAgICAgICAgKCtbSlNWYWx1ZSB2YWx1ZVdpdGhDb25zdHJ1Y3RvckRlc2NyaXB0b3I6aW5Db250
ZXh0Ol0pOgorICAgICAgICAoLVtKU0NvbnRleHQgdmFsdWVXaXRoQ29uc3RydWN0b3JEZXNjcmlw
dG9yOl0pOgorICAgICAgICAoY3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QpOgorICAg
ICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLm1tOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTMtMTAtMTQgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgUHV0QnlJZCBJQyBzaG91bGQgdXNlIHRoZSBD
b25jdXJyZW50SklUTG9ja2VyIHNpbmNlIGl0J3Mgbm93IGRlYWxpbmcgd2l0aCBJQydzIHRoYXQg
Z2V0IHJlYWQgYnkgdGhlIGNvbXBpbGVyIHRocmVhZApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NvbnRleHRSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ29udGV4dFJlZi5oCShyZXZpc2lvbiAxNTc0MzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiArMTI1
LDE0IEBAIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU0NvbnRleHRHZXRHbG9iYWwKICovCiBKU19F
WFBPUlQgSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R2V0R3JvdXAoSlNDb250ZXh0UmVmIGN0
eCkgQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKIAorLyohCitAZnVuY3Rpb24KK0Bh
YnN0cmFjdCBHZXRzIHRoZSBnbG9iYWwgY29udGV4dCBvZiBhIEphdmFTY3JpcHQgZXhlY3V0aW9u
IGNvbnRleHQuCitAcGFyYW0gY3R4IFRoZSBKU0NvbnRleHQgd2hvc2UgZ2xvYmFsIGNvbnRleHQg
eW91IHdhbnQgdG8gZ2V0LgorQHJlc3VsdCBjdHgncyBnbG9iYWwgY29udGV4dC4KKyovCitKU19F
WFBPUlQgSlNHbG9iYWxDb250ZXh0UmVmIEpTQ29udGV4dEdldEdsb2JhbENvbnRleHQoSlNDb250
ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxFKDEwXzcsIE5BKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVz
CiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVm
UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250
ZXh0UmVmUHJpdmF0ZS5oCShyZXZpc2lvbiAxNTc0MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTUgKzQw
LDYgQEAgZXh0ZXJuICJDIiB7CiAKIC8qIQogQGZ1bmN0aW9uCi1AYWJzdHJhY3QgR2V0cyB0aGUg
Z2xvYmFsIGNvbnRleHQgb2YgYSBKYXZhU2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0LgotQHBhcmFt
IGN0eCBUaGUgSlNDb250ZXh0IHdob3NlIGdsb2JhbCBjb250ZXh0IHlvdSB3YW50IHRvIGdldC4K
LUByZXN1bHQgY3R4J3MgZ2xvYmFsIGNvbnRleHQuCi0qLwotSlNfRVhQT1JUIEpTR2xvYmFsQ29u
dGV4dFJlZiBKU0NvbnRleHRHZXRHbG9iYWxDb250ZXh0KEpTQ29udGV4dFJlZiBjdHgpOwotCi0g
ICAgCi0vKiEKLUBmdW5jdGlvbgogQGFic3RyYWN0IEdldHMgYSBCYWNrdHJhY2UgZm9yIHRoZSBl
eGlzdGluZyBjb250ZXh0CiBAcGFyYW0gY3R4IFRoZSBKU0NvbnRleHQgd2hvc2UgYmFja3RyYWNl
IHlvdSB3YW50IHRvIGdldAogQHJlc3VsdCBBIHN0cmluZyBjb250YWluaW5nIHRoZSBiYWNrdHJh
Y2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24u
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tG
dW5jdGlvbi5tbQkocmV2aXNpb24gMTU3NDM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMzk0LDkgKzM5NCw4
IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGwgewog
cHVibGljOgotICAgIE9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbChKU0NvbnRleHQgKmNvbnRleHQs
IE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiwgQ2FsbGJhY2tUeXBlIHR5cGUsIENsYXNzIGluc3Rh
bmNlQ2xhc3MsIFBhc3NPd25QdHI8Q2FsbGJhY2tBcmd1bWVudD4gYXJndW1lbnRzLCBQYXNzT3du
UHRyPENhbGxiYWNrUmVzdWx0PiByZXN1bHQpCi0gICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQp
Ci0gICAgICAgICwgbV90eXBlKHR5cGUpCisgICAgT2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsKE5T
SW52b2NhdGlvbiAqaW52b2NhdGlvbiwgQ2FsbGJhY2tUeXBlIHR5cGUsIENsYXNzIGluc3RhbmNl
Q2xhc3MsIFBhc3NPd25QdHI8Q2FsbGJhY2tBcmd1bWVudD4gYXJndW1lbnRzLCBQYXNzT3duUHRy
PENhbGxiYWNrUmVzdWx0PiByZXN1bHQpCisgICAgICAgIDogbV90eXBlKHR5cGUpCiAgICAgICAg
ICwgbV9pbnN0YW5jZUNsYXNzKFtpbnN0YW5jZUNsYXNzIHJldGFpbl0pCiAgICAgICAgICwgbV9p
bnZvY2F0aW9uKGludm9jYXRpb24pCiAgICAgICAgICwgbV9hcmd1bWVudHMoYXJndW1lbnRzKQpA
QCAtNDEyLDI0ICs0MTEsMTIgQEAgcHVibGljOgogCiAgICAgSlNWYWx1ZVJlZiBjYWxsKEpTQ29u
dGV4dCAqY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291
bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7
CiAKLSAgICBKU0NvbnRleHQgKmNvbnRleHQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fY29u
dGV4dC5nZXQoKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldENvbnRleHQoSlNDb250ZXh0ICpjb250
ZXh0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2NvbnRleHQuZ2V0KCkpOwotICAgICAgICBt
X2NvbnRleHQuc2V0KGNvbnRleHQpOwotICAgIH0KLQogICAgIGlkIHdyYXBwZWRCbG9jaygpCiAg
ICAgewogICAgICAgICByZXR1cm4gbV90eXBlID09IENhbGxiYWNrQmxvY2sgPyBbbV9pbnZvY2F0
aW9uIHRhcmdldF0gOiBuaWw7CiAgICAgfQogCiBwcml2YXRlOgotICAgIFdlYWtDb250ZXh0UmVm
IG1fY29udGV4dDsKICAgICBDYWxsYmFja1R5cGUgbV90eXBlOwogICAgIENsYXNzIG1faW5zdGFu
Y2VDbGFzczsKICAgICBSZXRhaW5QdHI8TlNJbnZvY2F0aW9uPiBtX2ludm9jYXRpb247CkBAIC00
NDcsMTEgKzQzNCw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG9iakNDYWxsYmFja0Z1bmN0aW9uQ2EK
IAogICAgIE9iakNDYWxsYmFja0Z1bmN0aW9uKiBjYWxsYmFjayA9IHN0YXRpY19jYXN0PE9iakND
YWxsYmFja0Z1bmN0aW9uKj4odG9KUyhmdW5jdGlvbikpOwogICAgIE9iakNDYWxsYmFja0Z1bmN0
aW9uSW1wbCogaW1wbCA9IGNhbGxiYWNrLT5pbXBsKCk7Ci0gICAgSlNDb250ZXh0ICpjb250ZXh0
ID0gaW1wbC0+Y29udGV4dCgpOwotICAgIGlmICghY29udGV4dCkgewotICAgICAgICBjb250ZXh0
ID0gW0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29udGV4dFJlZjp0b0dsb2JhbFJlZih0
b0pTKGNhbGxlckNvbnRleHQpLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSld
OwotICAgICAgICBpbXBsLT5zZXRDb250ZXh0KGNvbnRleHQpOwotICAgIH0KKyAgICBKU0NvbnRl
eHQgKmNvbnRleHQgPSBbSlNDb250ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVmOnRv
R2xvYmFsUmVmKGNhbGxiYWNrLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpKV07CiAKICAg
ICBDYWxsYmFja0RhdGEgY2FsbGJhY2tEYXRhOwogICAgIEpTVmFsdWVSZWYgcmVzdWx0OwpAQCAt
NjI2LDcgKzYwOSw3IEBAIHN0YXRpYyBKU09iamVjdFJlZiBvYmpDQ2FsbGJhY2tGdW5jdGlvbkYK
IAogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhbY29udGV4dCBKU0dsb2JhbENvbnRl
eHRSZWZdKTsKICAgICBKU0M6OkFQSUVudHJ5U2hpbSBzaGltKGV4ZWMpOwotICAgIE93blB0cjxK
U0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbD4gaW1wbCA9IGFkb3B0UHRyKG5ldyBKU0M6Ok9i
akNDYWxsYmFja0Z1bmN0aW9uSW1wbChjb250ZXh0LCBpbnZvY2F0aW9uLCB0eXBlLCBpbnN0YW5j
ZUNsYXNzLCBhcmd1bWVudHMucmVsZWFzZSgpLCByZXN1bHQucmVsZWFzZSgpKSk7CisgICAgT3du
UHRyPEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsPiBpbXBsID0gYWRvcHRQdHIobmV3IEpT
Qzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsKGludm9jYXRpb24sIHR5cGUsIGluc3RhbmNlQ2xh
c3MsIGFyZ3VtZW50cy5yZWxlYXNlKCksIHJlc3VsdC5yZWxlYXNlKCkpKTsKICAgICAvLyBGSVhN
RTogTWF5YmUgd2UgY291bGQgc3VwcG9ydCBoYXZpbmcgdGhlIHNlbGVjdG9yIGFzIHRoZSBuYW1l
IG9mIHRoZSBmdW5jdGlvbiB0byBtYWtlIGl0IGEgYml0IG1vcmUgdXNlci1mcmllbmRseSBmcm9t
IHRoZSBKUyBzaWRlPwogICAgIHJldHVybiB0b1JlZihKU0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9u
OjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAiIiwgaW1w
bC5yZWxlYXNlKCkpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvV2ViS2l0
QXZhaWxhYmlsaXR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9X
ZWJLaXRBdmFpbGFiaWxpdHkuaAkocmV2aXNpb24gMTU3NDM3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9XZWJLaXRBdmFpbGFiaWxpdHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyAr
NDMsOSBAQAogCiAjaWZkZWYgX19BUFBMRV9fCiAjaW5jbHVkZSA8QXZhaWxhYmlsaXR5TWFjcm9z
Lmg+CisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZBdmFpbGFiaWxpdHkuaD4KICNlbHNlCisj
ZGVmaW5lIENGX0FWQUlMQUJMRShfbWFjLCBfaW9zKQogLyoKICAqIEZvciBub24tTWFjIHBsYXRm
b3JtcywgcmVxdWlyZSB0aGUgbmV3ZXN0IHZlcnNpb24uCiAgKi8KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0N1cnJlbnRUaGlz
SW5zaWRlQmxvY2tHZXR0ZXJUZXN0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL0N1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ3VycmVudFRo
aXNJbnNpZGVCbG9ja0dldHRlclRlc3RfaAorI2RlZmluZSBDdXJyZW50VGhpc0luc2lkZUJsb2Nr
R2V0dGVyVGVzdF9oCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5o
PgorCisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDkwCisKK3ZvaWQgY3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3Qo
KTsKKworI2VuZGlmIC8vIEpTQ19PQkpDX0FQSV9FTkFCTEVEICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorCisKKyNlbmRpZiAvLyBDdXJyZW50VGhpc0luc2lkZUJs
b2NrR2V0dGVyVGVzdF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0N1
cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3Qu
bW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0N1cnJl
bnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIkN1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0
ZXJUZXN0LmgiCisKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRCAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwOTAKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
Lmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgorCitzdGF0aWMg
SlNPYmplY3RSZWYgQ2FsbEFzQ29uc3RydWN0b3IoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RS
ZWYgY29uc3RydWN0b3IsIHNpemVfdCwgY29uc3QgSlNWYWx1ZVJlZltdLCBKU1ZhbHVlUmVmKikK
K3sKKyAgICBKU09iamVjdFJlZiBuZXdPYmplY3RSZWYgPSBOVUxMOworICAgIE5TTXV0YWJsZURp
Y3Rpb25hcnkgKmNvbnN0cnVjdG9yUHJpdmF0ZVByb3BlcnRpZXMgPSAoX19icmlkZ2UgTlNNdXRh
YmxlRGljdGlvbmFyeSAqKShKU09iamVjdEdldFByaXZhdGUoY29uc3RydWN0b3IpKTsKKyAgICBO
U0RpY3Rpb25hcnkgKmNvbnN0cnVjdG9yRGVzY3JpcHRvciA9IGNvbnN0cnVjdG9yUHJpdmF0ZVBy
b3BlcnRpZXNbQCJjb25zdHJ1Y3RvckRlc2NyaXB0b3IiXTsKKyAgICBuZXdPYmplY3RSZWYgPSBK
U09iamVjdE1ha2UoY3R4LCBOVUxMLCBOVUxMKTsKKyAgICBOU0RpY3Rpb25hcnkgKm9iamVjdFBy
b3BlcnRpZXMgPSBjb25zdHJ1Y3RvckRlc2NyaXB0b3JbQCJvYmplY3RQcm9wZXJ0aWVzIl07Cisg
ICAgCisgICAgaWYgKG9iamVjdFByb3BlcnRpZXMpIHsKKyAgICAgICAgSlNWYWx1ZSAqbmV3T2Jq
ZWN0ID0gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpuZXdPYmplY3RSZWYgaW5Db250ZXh0
OltKU0NvbnRleHQgY29udGV4dFdpdGhKU0dsb2JhbENvbnRleHRSZWY6SlNDb250ZXh0R2V0R2xv
YmFsQ29udGV4dChjdHgpXV07CisgICAgICAgIGZvciAoTlNTdHJpbmcgKm9iamVjdFByb3BlcnR5
IGluIG9iamVjdFByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgIFtuZXdPYmplY3QgZGVmaW5lUHJv
cGVydHk6b2JqZWN0UHJvcGVydHkgZGVzY3JpcHRvcjpvYmplY3RQcm9wZXJ0aWVzW29iamVjdFBy
b3BlcnR5XV07CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIG5ld09iamVjdFJl
ZjsKK30KKworc3RhdGljIHZvaWQgQ29uc3RydWN0b3JGaW5hbGl6ZShKU09iamVjdFJlZiBvYmpl
Y3QpCit7CisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqcHJpdmF0ZVByb3BlcnRpZXMgPSAoX19i
cmlkZ2UgTlNNdXRhYmxlRGljdGlvbmFyeSAqKShKU09iamVjdEdldFByaXZhdGUob2JqZWN0KSk7
CisgICAgQ0ZCcmlkZ2luZ1JlbGVhc2UoKF9fYnJpZGdlIENGVHlwZVJlZikocHJpdmF0ZVByb3Bl
cnRpZXMpKTsKKyAgICBKU09iamVjdFNldFByaXZhdGUob2JqZWN0LCBOVUxMKTsKK30KKworc3Rh
dGljIEpTQ2xhc3NSZWYgQ29uc3RydWN0b3JDbGFzcyh2b2lkKQoreworICAgIHN0YXRpYyBKU0Ns
YXNzUmVmIGNvbnN0cnVjdG9yQ2xhc3MgPSBOVUxMOworICAgIAorICAgIGlmIChjb25zdHJ1Y3Rv
ckNsYXNzID09IE5VTEwpIHsKKyAgICAgICAgSlNDbGFzc0RlZmluaXRpb24gY2xhc3NEZWZpbml0
aW9uID0ga0pTQ2xhc3NEZWZpbml0aW9uRW1wdHk7CisgICAgICAgIGNsYXNzRGVmaW5pdGlvbi5j
bGFzc05hbWUgPSAiQ29uc3RydWN0b3IiOworICAgICAgICBjbGFzc0RlZmluaXRpb24uY2FsbEFz
Q29uc3RydWN0b3IgPSBDYWxsQXNDb25zdHJ1Y3RvcjsKKyAgICAgICAgY2xhc3NEZWZpbml0aW9u
LmZpbmFsaXplID0gQ29uc3RydWN0b3JGaW5hbGl6ZTsKKyAgICAgICAgY29uc3RydWN0b3JDbGFz
cyA9IEpTQ2xhc3NDcmVhdGUoJmNsYXNzRGVmaW5pdGlvbik7CisgICAgfQorICAgIAorICAgIHJl
dHVybiBjb25zdHJ1Y3RvckNsYXNzOworfQorCitAaW50ZXJmYWNlIEpTVmFsdWUgKENvbnN0cnVj
dG9yQ3JlYXRpb24pCisKKysgKEpTVmFsdWUgKil2YWx1ZVdpdGhDb25zdHJ1Y3RvckRlc2NyaXB0
b3I6KE5TRGljdGlvbmFyeSAqKWNvbnN0cnVjdG9yRGVzY3JpcHRvciBpbkNvbnRleHQ6KEpTQ29u
dGV4dCAqKWNvbnRleHQ7CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIEpTVmFsdWUgKENvbnN0
cnVjdG9yQ3JlYXRpb24pCisKKysgKEpTVmFsdWUgKil2YWx1ZVdpdGhDb25zdHJ1Y3RvckRlc2Ny
aXB0b3I6KGlkKWNvbnN0cnVjdG9yRGVzY3JpcHRvciBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNv
bnRleHQKK3sKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpwcml2YXRlUHJvcGVydGllcyA9IFtA
eyBAImNvbnN0cnVjdG9yRGVzY3JpcHRvciIgOiBjb25zdHJ1Y3RvckRlc2NyaXB0b3IgfSBtdXRh
YmxlQ29weV07CisgICAgSlNHbG9iYWxDb250ZXh0UmVmIGN0eCA9IFtjb250ZXh0IEpTR2xvYmFs
Q29udGV4dFJlZl07CisgICAgSlNPYmplY3RSZWYgY29uc3RydWN0b3JSZWYgPSBKU09iamVjdE1h
a2UoY3R4LCBDb25zdHJ1Y3RvckNsYXNzKCksICh2b2lkICopQ0ZCcmlkZ2luZ1JldGFpbihwcml2
YXRlUHJvcGVydGllcykpOworICAgIEpTVmFsdWUgKmNvbnN0cnVjdG9yID0gW0pTVmFsdWUgdmFs
dWVXaXRoSlNWYWx1ZVJlZjpjb25zdHJ1Y3RvclJlZiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAg
cmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitAZW5kCisKK0BpbnRlcmZhY2UgSlNDb250ZXh0IChD
b25zdHJ1Y3RvckNyZWF0aW9uKQorCistIChKU1ZhbHVlICopdmFsdWVXaXRoQ29uc3RydWN0b3JE
ZXNjcmlwdG9yOihOU0RpY3Rpb25hcnkgKiljb25zdHJ1Y3RvckRlc2NyaXB0b3I7CisKK0BlbmQK
KworQGltcGxlbWVudGF0aW9uIEpTQ29udGV4dCAoQ29uc3RydWN0b3JDcmVhdGlvbikKKworLSAo
SlNWYWx1ZSAqKXZhbHVlV2l0aENvbnN0cnVjdG9yRGVzY3JpcHRvcjooaWQpY29uc3RydWN0b3JE
ZXNjcmlwdG9yCit7CisgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aENvbnN0cnVjdG9yRGVz
Y3JpcHRvcjpjb25zdHJ1Y3RvckRlc2NyaXB0b3IgaW5Db250ZXh0OnNlbGZdOworfQorCitAZW5k
CisKK3ZvaWQgY3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QoKQoreworICAgIEBhdXRv
cmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBh
bGxvY10gaW5pdF07CisgICAgICAgIAorICAgICAgICBKU1ZhbHVlICpteUNvbnN0cnVjdG9yID0g
W2NvbnRleHQgdmFsdWVXaXRoQ29uc3RydWN0b3JEZXNjcmlwdG9yOkB7CisgICAgICAgICAgICBA
Im9iamVjdFByb3BlcnRpZXMiIDogQHsKKyAgICAgICAgICAgICAgICBAImN1cnJlbnRUaGlzIiA6
IEB7IEpTUHJvcGVydHlEZXNjcmlwdG9yR2V0S2V5IDogXnsgcmV0dXJuIEpTQ29udGV4dC5jdXJy
ZW50VGhpczsgfSB9LAorICAgICAgICAgICAgfSwKKyAgICAgICAgfV07CisgICAgICAgIAorICAg
ICAgICBKU1ZhbHVlICpteU9iajEgPSBbbXlDb25zdHJ1Y3RvciBjb25zdHJ1Y3RXaXRoQXJndW1l
bnRzOm5pbF07CisgICAgICAgIE5TTG9nKEAibXlPYmoxLmN1cnJlbnRUaGlzOiAlQCIsIG15T2Jq
MVtAImN1cnJlbnRUaGlzIl0pOworICAgICAgICBKU1ZhbHVlICpteU9iajIgPSBbbXlDb25zdHJ1
Y3RvciBjb25zdHJ1Y3RXaXRoQXJndW1lbnRzOkBbIEAiYmFyIiBdXTsKKyAgICAgICAgTlNMb2co
QCJteU9iajIuY3VycmVudFRoaXM6ICVAIiwgbXlPYmoyW0AiY3VycmVudFRoaXMiXSk7CisgICAg
fQorfQorCisjZW5kaWYgLy8gSlNDX09CSkNfQVBJX0VOQUJMRUQgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL3Rlc3RhcGkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy90ZXN0YXBpLm1tCShyZXZpc2lvbiAxNTc0MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDgg
QEAKIAogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KIAorI2ltcG9y
dCAiQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QuaCIKKwogZXh0ZXJuICJDIiB2b2lk
IEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhKU0NvbnRleHRSZWYpOwog
CiBleHRlcm4gIkMiIGJvb2wgX0Jsb2NrX2hhc19zaWduYXR1cmUoaWQpOwpAQCAtOTYxLDYgKzk2
Myw4IEBAIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkoKQogICAgICAgICBjaGVja1Jlc3VsdChAIltK
U0NvbnRleHQgY3VycmVudFRoaXNdID09IG5pbCBvdXRzaWRlIG9mIGNhbGxiYWNrIiwgIVtKU0Nv
bnRleHQgY3VycmVudFRoaXNdKTsKICAgICAgICAgY2hlY2tSZXN1bHQoQCJbSlNDb250ZXh0IGN1
cnJlbnRBcmd1bWVudHNdID09IG5pbCBvdXRzaWRlIG9mIGNhbGxiYWNrIiwgIVtKU0NvbnRleHQg
Y3VycmVudEFyZ3VtZW50c10pOwogICAgIH0KKworICAgIGN1cnJlbnRUaGlzSW5zaWRlQmxvY2tH
ZXR0ZXJUZXN0KCk7CiB9CiAKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTU3NDM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTExNTgsNiAr
MTE1OCw3IEBACiAJCUMyOTgxRkQ5MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1Jl
ZmVyZW5jZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMyOTgxRkQ3MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMjk4MUZE
QzE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVzaXJlZFdyaXRlQmFycmllcnMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI5ODFGREExN0JBRkY0NDAw
QTNCQzk4IC8qIERGR0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmNwcCAqLzsgfTsKIAkJQzI5ODFGREQx
N0JBRkY0NDAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjk4MUZEQjE3QkFGRjQ0MDBBM0JD
OTggLyogREZHRGVzaXJlZFdyaXRlQmFycmllcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDMjlFQ0IwMzE4MDREMEVEMDBEMkNCQjQgLyogQ3Vy
cmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjlFQ0IwMTE4MDREMEVEMDBEMkNCQjQgLyogQ3VycmVu
dFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0gKi87IH07CiAJCUMyQTdGNjg4MTYwNDMyRDQw
MEY3NkI5OCAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJBN0Y2ODcxNjA0MzJENDAwRjc2Qjk4IC8qIEpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQzJCOTE2QzIxNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJCOTE2QzEx
NERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyQjkxNkM1MTREQTA0MEMwMENCQUM4NiAv
KiBNYXJrZWRBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzJCOTE2QzQxNERBMDQwQzAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5j
cHAgKi87IH07CkBAIC0yNDAwLDYgKzI0MDEsOCBAQAogCQlDMjk4MUZENzE3QkFFRTRCMDBBM0JD
OTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5oOyBwYXRoID0gZGZnL0RGR0Rlc2ly
ZWRXZWFrUmVmZXJlbmNlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjk4MUZE
QTE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVzaXJlZFdyaXRlQmFycmllcnMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHRGVzaXJlZFdyaXRlQmFycmllcnMuY3Bw
OyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzI5ODFGREIxN0JBRkY0NDAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXcml0
ZUJhcnJpZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Rlc2lyZWRX
cml0ZUJhcnJpZXJzLmg7IHBhdGggPSBkZmcvREZHRGVzaXJlZFdyaXRlQmFycmllcnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI5RUNCMDExODA0RDBFRDAwRDJDQkI0IC8qIEN1
cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW07IHBh
dGggPSBBUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyOUVDQjAyMTgwNEQwRUQwMEQyQ0JCNCAvKiBDdXJy
ZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBDdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5oOyBwYXRoID0gQVBJL3Rl
c3RzL0N1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUMyQTdGNjg3MTYwNDMyRDQwMEY3NkI5OCAvKiBKU0Rlc3RydWN0aWJsZU9i
amVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Rlc3RydWN0aWJsZU9i
amVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkI5MTZDMTE0REEwMTRFMDBD
QkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1hcmtlZEFsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkI5
MTZDNDE0REEwNDBDMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcmtlZEFsbG9jYXRvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yNzkyLDYgKzI3OTUsOCBAQAogCQkJCTE0RDg1Nzc0MEE0Njk2
QzgwMDMyMTQ2QyAvKiB0ZXN0YXBpLmpzICovLAogCQkJCTg2RDIyMjE5MTY3RUY5NDQwMDI0Qzgw
NCAvKiB0ZXN0YXBpLm1tICovLAogCQkJCTY1MTEyMkU1MTQwNDY5QkEwMDJCMTAxRCAvKiB0ZXN0
UmVnRXhwLmNwcCAqLywKKwkJCQlDMjlFQ0IwMTE4MDREMEVEMDBEMkNCQjQgLyogQ3VycmVudFRo
aXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0gKi8sCisJCQkJQzI5RUNCMDIxODA0RDBFRDAwRDJD
QkI0IC8qIEN1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0LmggKi8sCiAJCQkpOwogCQkJ
bmFtZSA9IHRlc3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTUwNTYsNiArNTA2
MSw3IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQlDMjlFQ0IwMzE4MDREMEVEMDBEMkNC
QjQgLyogQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0gaW4gU291cmNlcyAqLywK
IAkJCQkxNDQwRjYxMDBBNEY4NTY3MDAwNUYwNjEgLyogdGVzdGFwaS5jIGluIFNvdXJjZXMgKi8s
CiAJCQkJODZEMjIyMUExNjdFRjk0NDAwMjRDODA0IC8qIHRlc3RhcGkubW0gaW4gU291cmNlcyAq
LywKIAkJCSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214285</attachid>
            <date>2013-10-15 11:30:02 -0700</date>
            <delta_ts>2013-10-15 14:06:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122531-20131015113002.patch</filename>
            <type>text/plain</type>
            <size>20344</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3NDU2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBA
CisyMDEzLTEwLTE1ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgT2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsIHNob3VsZG4ndCBzdG9yZSBhIEpTQ29u
dGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIy
NTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IG1fY29udGV4dCBmaWVsZCBpbiBPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGwgaXMgdmVzdGlnaWFs
IGFuZCBpcyBvbmx5IGluY2lkZW50YWxseSBjb3JyZWN0IAorICAgICAgICBpbiB0aGUgY29tbW9u
IGNhc2UuIEl0J3MgYWxzbyBubyBsb25nZXIgbmVjZXNzYXJ5IGluIHRoYXQgd2UgY2FuIGxvb2sg
dXAgdGhlIGN1cnJlbnQgSlNDb250ZXh0IAorICAgICAgICBieSBsb29raW5nIHVzaW5nIHRoZSBn
bG9iYWxPYmplY3Qgb2YgdGhlIGNhbGxlZSB3aGVuIHRoZSBmdW5jdGlvbiBjYWxsYmFjayBpcyBp
bnZva2VkLgorIAorICAgICAgICBBbHNvIGFkZGVkIGEgbmV3IHRlc3QgdGhhdCB3b3VsZCBjYXVz
ZSB1cyB0byBjcmFzaCBwcmV2aW91c2x5LiBUaGUgdGVzdCByZXF1aXJlZCBtYWtpbmcgCisgICAg
ICAgIEpTQ29udGV4dEdldEdsb2JhbENvbnRleHQgcHVibGljIEFQSSBzbyB0aGF0IGNsaWVudHMg
Y2FuIG9idGFpbiBhIEpTQ29udGV4dCBmcm9tIHRoZSBKU0NvbnRleHRSZWYKKyAgICAgICAgaW4g
QyBBUEkgY2FsbGJhY2tzLgorCisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZi5oOgorICAgICAg
ICAqIEFQSS9KU0NvbnRleHRSZWZQcml2YXRlLmg6CisgICAgICAgICogQVBJL09iakNDYWxsYmFj
a0Z1bmN0aW9uLm1tOgorICAgICAgICAoSlNDOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGw6Ok9i
akNDYWxsYmFja0Z1bmN0aW9uSW1wbCk6CisgICAgICAgIChKU0M6Om9iakNDYWxsYmFja0Z1bmN0
aW9uQ2FsbEFzRnVuY3Rpb24pOgorICAgICAgICAob2JqQ0NhbGxiYWNrRnVuY3Rpb25Gb3JJbnZv
Y2F0aW9uKToKKyAgICAgICAgKiBBUEkvV2ViS2l0QXZhaWxhYmlsaXR5Lmg6CisgICAgICAgICog
QVBJL3Rlc3RzL0N1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lmg6IEFkZGVkLgorICAg
ICAgICAqIEFQSS90ZXN0cy9DdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5tbTogQWRk
ZWQuCisgICAgICAgIChDYWxsQXNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChDb25zdHJ1Y3RvckZp
bmFsaXplKToKKyAgICAgICAgKENvbnN0cnVjdG9yQ2xhc3MpOgorICAgICAgICAoK1tKU1ZhbHVl
IHZhbHVlV2l0aENvbnN0cnVjdG9yRGVzY3JpcHRvcjppbkNvbnRleHQ6XSk6CisgICAgICAgICgt
W0pTQ29udGV4dCB2YWx1ZVdpdGhDb25zdHJ1Y3RvckRlc2NyaXB0b3I6XSk6CisgICAgICAgIChj
dXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdCk6CisgICAgICAgICogQVBJL3Rlc3RzL3Rl
c3RhcGkubW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5jcHA6IEhhZCB0byBhZGQgc29tZSBm
dWxseSBxdWFsaWZpZWQgbmFtZXMgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggTWFjIE9TIFggaGVh
ZGVycy4KKwogMjAxMy0xMC0xNSAgSnVsaWVuIEJyaWFuY2VhdSAgPGpicmlhbmNlQGNpc2NvLmNv
bT4KIAogICAgICAgICBbc2g0XSBJbnRyb2R1Y2UgY29uc3QgcG9vbHMgaW4gTExJTlQuCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmgJKHJldmlzaW9uIDE1NzQ1
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNSw2ICsxMjUsMTQgQEAgSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTQ29udGV4
dEdldEdsb2JhbAogKi8KIEpTX0VYUE9SVCBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRHZXRH
cm91cChKU0NvbnRleHRSZWYgY3R4KSBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOwog
CisvKiEKK0BmdW5jdGlvbgorQGFic3RyYWN0IEdldHMgdGhlIGdsb2JhbCBjb250ZXh0IG9mIGEg
SmF2YVNjcmlwdCBleGVjdXRpb24gY29udGV4dC4KK0BwYXJhbSBjdHggVGhlIEpTQ29udGV4dCB3
aG9zZSBnbG9iYWwgY29udGV4dCB5b3Ugd2FudCB0byBnZXQuCitAcmVzdWx0IGN0eCdzIGdsb2Jh
bCBjb250ZXh0LgorKi8KK0pTX0VYUE9SVCBKU0dsb2JhbENvbnRleHRSZWYgSlNDb250ZXh0R2V0
R2xvYmFsQ29udGV4dChKU0NvbnRleHRSZWYgY3R4KSBDRl9BVkFJTEFCTEUoMTBfNywgNF8wKTsK
KwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDb250ZXh0UmVmUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmUHJpdmF0ZS5oCShyZXZpc2lvbiAxNTc0NTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsMTUgKzQwLDYgQEAgZXh0ZXJuICJDIiB7CiAKIC8qIQogQGZ1bmN0aW9u
Ci1AYWJzdHJhY3QgR2V0cyB0aGUgZ2xvYmFsIGNvbnRleHQgb2YgYSBKYXZhU2NyaXB0IGV4ZWN1
dGlvbiBjb250ZXh0LgotQHBhcmFtIGN0eCBUaGUgSlNDb250ZXh0IHdob3NlIGdsb2JhbCBjb250
ZXh0IHlvdSB3YW50IHRvIGdldC4KLUByZXN1bHQgY3R4J3MgZ2xvYmFsIGNvbnRleHQuCi0qLwot
SlNfRVhQT1JUIEpTR2xvYmFsQ29udGV4dFJlZiBKU0NvbnRleHRHZXRHbG9iYWxDb250ZXh0KEpT
Q29udGV4dFJlZiBjdHgpOwotCi0gICAgCi0vKiEKLUBmdW5jdGlvbgogQGFic3RyYWN0IEdldHMg
YSBCYWNrdHJhY2UgZm9yIHRoZSBleGlzdGluZyBjb250ZXh0CiBAcGFyYW0gY3R4IFRoZSBKU0Nv
bnRleHQgd2hvc2UgYmFja3RyYWNlIHlvdSB3YW50IHRvIGdldAogQHJlc3VsdCBBIHN0cmluZyBj
b250YWluaW5nIHRoZSBiYWNrdHJhY2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
T2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQkocmV2aXNpb24gMTU3NDUzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzk0LDkgKzM5NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBPYmpDQ2Fs
bGJhY2tGdW5jdGlvbkltcGwgewogcHVibGljOgotICAgIE9iakNDYWxsYmFja0Z1bmN0aW9uSW1w
bChKU0NvbnRleHQgKmNvbnRleHQsIE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiwgQ2FsbGJhY2tU
eXBlIHR5cGUsIENsYXNzIGluc3RhbmNlQ2xhc3MsIFBhc3NPd25QdHI8Q2FsbGJhY2tBcmd1bWVu
dD4gYXJndW1lbnRzLCBQYXNzT3duUHRyPENhbGxiYWNrUmVzdWx0PiByZXN1bHQpCi0gICAgICAg
IDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAgICAgICwgbV90eXBlKHR5cGUpCisgICAgT2JqQ0Nh
bGxiYWNrRnVuY3Rpb25JbXBsKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiwgQ2FsbGJhY2tUeXBl
IHR5cGUsIENsYXNzIGluc3RhbmNlQ2xhc3MsIFBhc3NPd25QdHI8Q2FsbGJhY2tBcmd1bWVudD4g
YXJndW1lbnRzLCBQYXNzT3duUHRyPENhbGxiYWNrUmVzdWx0PiByZXN1bHQpCisgICAgICAgIDog
bV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9pbnN0YW5jZUNsYXNzKFtpbnN0YW5jZUNsYXNzIHJl
dGFpbl0pCiAgICAgICAgICwgbV9pbnZvY2F0aW9uKGludm9jYXRpb24pCiAgICAgICAgICwgbV9h
cmd1bWVudHMoYXJndW1lbnRzKQpAQCAtNDEyLDI0ICs0MTEsMTIgQEAgcHVibGljOgogCiAgICAg
SlNWYWx1ZVJlZiBjYWxsKEpTQ29udGV4dCAqY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09iamVj
dCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbik7CiAKLSAgICBKU0NvbnRleHQgKmNvbnRleHQoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldENv
bnRleHQoSlNDb250ZXh0ICpjb250ZXh0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2NvbnRl
eHQuZ2V0KCkpOwotICAgICAgICBtX2NvbnRleHQuc2V0KGNvbnRleHQpOwotICAgIH0KLQogICAg
IGlkIHdyYXBwZWRCbG9jaygpCiAgICAgewogICAgICAgICByZXR1cm4gbV90eXBlID09IENhbGxi
YWNrQmxvY2sgPyBbbV9pbnZvY2F0aW9uIHRhcmdldF0gOiBuaWw7CiAgICAgfQogCiBwcml2YXRl
OgotICAgIFdlYWtDb250ZXh0UmVmIG1fY29udGV4dDsKICAgICBDYWxsYmFja1R5cGUgbV90eXBl
OwogICAgIENsYXNzIG1faW5zdGFuY2VDbGFzczsKICAgICBSZXRhaW5QdHI8TlNJbnZvY2F0aW9u
PiBtX2ludm9jYXRpb247CkBAIC00NDcsMTEgKzQzNCw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG9i
akNDYWxsYmFja0Z1bmN0aW9uQ2EKIAogICAgIE9iakNDYWxsYmFja0Z1bmN0aW9uKiBjYWxsYmFj
ayA9IHN0YXRpY19jYXN0PE9iakNDYWxsYmFja0Z1bmN0aW9uKj4odG9KUyhmdW5jdGlvbikpOwog
ICAgIE9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbCogaW1wbCA9IGNhbGxiYWNrLT5pbXBsKCk7Ci0g
ICAgSlNDb250ZXh0ICpjb250ZXh0ID0gaW1wbC0+Y29udGV4dCgpOwotICAgIGlmICghY29udGV4
dCkgewotICAgICAgICBjb250ZXh0ID0gW0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29u
dGV4dFJlZjp0b0dsb2JhbFJlZih0b0pTKGNhbGxlckNvbnRleHQpLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCktPmdsb2JhbEV4ZWMoKSldOwotICAgICAgICBpbXBsLT5zZXRDb250ZXh0KGNvbnRleHQp
OwotICAgIH0KKyAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbSlNDb250ZXh0IGNvbnRleHRXaXRo
SlNHbG9iYWxDb250ZXh0UmVmOnRvR2xvYmFsUmVmKGNhbGxiYWNrLT5nbG9iYWxPYmplY3QoKS0+
Z2xvYmFsRXhlYygpKV07CiAKICAgICBDYWxsYmFja0RhdGEgY2FsbGJhY2tEYXRhOwogICAgIEpT
VmFsdWVSZWYgcmVzdWx0OwpAQCAtNjI2LDcgKzYwOSw3IEBAIHN0YXRpYyBKU09iamVjdFJlZiBv
YmpDQ2FsbGJhY2tGdW5jdGlvbkYKIAogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhb
Y29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKICAgICBKU0M6OkFQSUVudHJ5U2hpbSBzaGlt
KGV4ZWMpOwotICAgIE93blB0cjxKU0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbD4gaW1wbCA9
IGFkb3B0UHRyKG5ldyBKU0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbChjb250ZXh0LCBpbnZv
Y2F0aW9uLCB0eXBlLCBpbnN0YW5jZUNsYXNzLCBhcmd1bWVudHMucmVsZWFzZSgpLCByZXN1bHQu
cmVsZWFzZSgpKSk7CisgICAgT3duUHRyPEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsPiBp
bXBsID0gYWRvcHRQdHIobmV3IEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsKGludm9jYXRp
b24sIHR5cGUsIGluc3RhbmNlQ2xhc3MsIGFyZ3VtZW50cy5yZWxlYXNlKCksIHJlc3VsdC5yZWxl
YXNlKCkpKTsKICAgICAvLyBGSVhNRTogTWF5YmUgd2UgY291bGQgc3VwcG9ydCBoYXZpbmcgdGhl
IHNlbGVjdG9yIGFzIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiB0byBtYWtlIGl0IGEgYml0IG1v
cmUgdXNlci1mcmllbmRseSBmcm9tIHRoZSBKUyBzaWRlPwogICAgIHJldHVybiB0b1JlZihKU0M6
Ok9iakNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCAiIiwgaW1wbC5yZWxlYXNlKCkpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvV2ViS2l0QXZhaWxhYmlsaXR5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9XZWJLaXRBdmFpbGFiaWxpdHkuaAkocmV2aXNpb24gMTU3NDUz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9XZWJLaXRBdmFpbGFiaWxpdHkuaAkod29y
a2luZyBjb3B5KQpAQCAtNDMsNyArNDMsOSBAQAogCiAjaWZkZWYgX19BUFBMRV9fCiAjaW5jbHVk
ZSA8QXZhaWxhYmlsaXR5TWFjcm9zLmg+CisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZv
dW5kYXRpb24uaD4KICNlbHNlCisjZGVmaW5lIENGX0FWQUlMQUJMRShfbWFjLCBfaW9zKQogLyoK
ICAqIEZvciBub24tTWFjIHBsYXRmb3JtcywgcmVxdWlyZSB0aGUgbmV3ZXN0IHZlcnNpb24uCiAg
Ki8KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNp
ZGVCbG9ja0dldHRlclRlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL0N1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0LmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0N1cnJlbnRUaGlzSW5zaWRlQmxv
Y2tHZXR0ZXJUZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3RfaAorI2RlZmluZSBD
dXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdF9oCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgorCisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCisKK3ZvaWQgY3VycmVudFRoaXNJ
bnNpZGVCbG9ja0dldHRlclRlc3QoKTsKKworI2VuZGlmIC8vIEpTQ19PQkpDX0FQSV9FTkFCTEVE
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorCisKKyNlbmRpZiAv
LyBDdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdF9oCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL0N1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvQ3VycmVudFRoaXNJ
bnNpZGVCbG9ja0dldHRlclRlc3QubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL0N1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIkN1cnJl
bnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0LmgiCisKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxF
RCAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKworI2ltcG9ydCA8
Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5oPgorCitzdGF0aWMgSlNPYmplY3RSZWYgQ2FsbEFzQ29uc3RydWN0b3IoSlNDb250
ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgY29uc3RydWN0b3IsIHNpemVfdCwgY29uc3QgSlNWYWx1
ZVJlZltdLCBKU1ZhbHVlUmVmKikKK3sKKyAgICBKU09iamVjdFJlZiBuZXdPYmplY3RSZWYgPSBO
VUxMOworICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmNvbnN0cnVjdG9yUHJpdmF0ZVByb3BlcnRp
ZXMgPSAoX19icmlkZ2UgTlNNdXRhYmxlRGljdGlvbmFyeSAqKShKU09iamVjdEdldFByaXZhdGUo
Y29uc3RydWN0b3IpKTsKKyAgICBOU0RpY3Rpb25hcnkgKmNvbnN0cnVjdG9yRGVzY3JpcHRvciA9
IGNvbnN0cnVjdG9yUHJpdmF0ZVByb3BlcnRpZXNbQCJjb25zdHJ1Y3RvckRlc2NyaXB0b3IiXTsK
KyAgICBuZXdPYmplY3RSZWYgPSBKU09iamVjdE1ha2UoY3R4LCBOVUxMLCBOVUxMKTsKKyAgICBO
U0RpY3Rpb25hcnkgKm9iamVjdFByb3BlcnRpZXMgPSBjb25zdHJ1Y3RvckRlc2NyaXB0b3JbQCJv
YmplY3RQcm9wZXJ0aWVzIl07CisgICAgCisgICAgaWYgKG9iamVjdFByb3BlcnRpZXMpIHsKKyAg
ICAgICAgSlNWYWx1ZSAqbmV3T2JqZWN0ID0gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpu
ZXdPYmplY3RSZWYgaW5Db250ZXh0OltKU0NvbnRleHQgY29udGV4dFdpdGhKU0dsb2JhbENvbnRl
eHRSZWY6SlNDb250ZXh0R2V0R2xvYmFsQ29udGV4dChjdHgpXV07CisgICAgICAgIGZvciAoTlNT
dHJpbmcgKm9iamVjdFByb3BlcnR5IGluIG9iamVjdFByb3BlcnRpZXMpIHsKKyAgICAgICAgICAg
IFtuZXdPYmplY3QgZGVmaW5lUHJvcGVydHk6b2JqZWN0UHJvcGVydHkgZGVzY3JpcHRvcjpvYmpl
Y3RQcm9wZXJ0aWVzW29iamVjdFByb3BlcnR5XV07CisgICAgICAgIH0KKyAgICB9CisgICAgCisg
ICAgcmV0dXJuIG5ld09iamVjdFJlZjsKK30KKworc3RhdGljIHZvaWQgQ29uc3RydWN0b3JGaW5h
bGl6ZShKU09iamVjdFJlZiBvYmplY3QpCit7CisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqcHJp
dmF0ZVByb3BlcnRpZXMgPSAoX19icmlkZ2UgTlNNdXRhYmxlRGljdGlvbmFyeSAqKShKU09iamVj
dEdldFByaXZhdGUob2JqZWN0KSk7CisgICAgQ0ZCcmlkZ2luZ1JlbGVhc2UoKF9fYnJpZGdlIENG
VHlwZVJlZikocHJpdmF0ZVByb3BlcnRpZXMpKTsKKyAgICBKU09iamVjdFNldFByaXZhdGUob2Jq
ZWN0LCBOVUxMKTsKK30KKworc3RhdGljIEpTQ2xhc3NSZWYgQ29uc3RydWN0b3JDbGFzcyh2b2lk
KQoreworICAgIHN0YXRpYyBKU0NsYXNzUmVmIGNvbnN0cnVjdG9yQ2xhc3MgPSBOVUxMOworICAg
IAorICAgIGlmIChjb25zdHJ1Y3RvckNsYXNzID09IE5VTEwpIHsKKyAgICAgICAgSlNDbGFzc0Rl
ZmluaXRpb24gY2xhc3NEZWZpbml0aW9uID0ga0pTQ2xhc3NEZWZpbml0aW9uRW1wdHk7CisgICAg
ICAgIGNsYXNzRGVmaW5pdGlvbi5jbGFzc05hbWUgPSAiQ29uc3RydWN0b3IiOworICAgICAgICBj
bGFzc0RlZmluaXRpb24uY2FsbEFzQ29uc3RydWN0b3IgPSBDYWxsQXNDb25zdHJ1Y3RvcjsKKyAg
ICAgICAgY2xhc3NEZWZpbml0aW9uLmZpbmFsaXplID0gQ29uc3RydWN0b3JGaW5hbGl6ZTsKKyAg
ICAgICAgY29uc3RydWN0b3JDbGFzcyA9IEpTQ2xhc3NDcmVhdGUoJmNsYXNzRGVmaW5pdGlvbik7
CisgICAgfQorICAgIAorICAgIHJldHVybiBjb25zdHJ1Y3RvckNsYXNzOworfQorCitAaW50ZXJm
YWNlIEpTVmFsdWUgKENvbnN0cnVjdG9yQ3JlYXRpb24pCisKKysgKEpTVmFsdWUgKil2YWx1ZVdp
dGhDb25zdHJ1Y3RvckRlc2NyaXB0b3I6KE5TRGljdGlvbmFyeSAqKWNvbnN0cnVjdG9yRGVzY3Jp
cHRvciBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQ7CisKK0BlbmQKKworQGltcGxlbWVu
dGF0aW9uIEpTVmFsdWUgKENvbnN0cnVjdG9yQ3JlYXRpb24pCisKKysgKEpTVmFsdWUgKil2YWx1
ZVdpdGhDb25zdHJ1Y3RvckRlc2NyaXB0b3I6KGlkKWNvbnN0cnVjdG9yRGVzY3JpcHRvciBpbkNv
bnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQKK3sKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpw
cml2YXRlUHJvcGVydGllcyA9IFtAeyBAImNvbnN0cnVjdG9yRGVzY3JpcHRvciIgOiBjb25zdHJ1
Y3RvckRlc2NyaXB0b3IgfSBtdXRhYmxlQ29weV07CisgICAgSlNHbG9iYWxDb250ZXh0UmVmIGN0
eCA9IFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl07CisgICAgSlNPYmplY3RSZWYgY29uc3Ry
dWN0b3JSZWYgPSBKU09iamVjdE1ha2UoY3R4LCBDb25zdHJ1Y3RvckNsYXNzKCksICh2b2lkICop
Q0ZCcmlkZ2luZ1JldGFpbihwcml2YXRlUHJvcGVydGllcykpOworICAgIEpTVmFsdWUgKmNvbnN0
cnVjdG9yID0gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjpjb25zdHJ1Y3RvclJlZiBpbkNv
bnRleHQ6Y29udGV4dF07CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitAZW5kCisKK0Bp
bnRlcmZhY2UgSlNDb250ZXh0IChDb25zdHJ1Y3RvckNyZWF0aW9uKQorCistIChKU1ZhbHVlICop
dmFsdWVXaXRoQ29uc3RydWN0b3JEZXNjcmlwdG9yOihOU0RpY3Rpb25hcnkgKiljb25zdHJ1Y3Rv
ckRlc2NyaXB0b3I7CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIEpTQ29udGV4dCAoQ29uc3Ry
dWN0b3JDcmVhdGlvbikKKworLSAoSlNWYWx1ZSAqKXZhbHVlV2l0aENvbnN0cnVjdG9yRGVzY3Jp
cHRvcjooaWQpY29uc3RydWN0b3JEZXNjcmlwdG9yCit7CisgICAgcmV0dXJuIFtKU1ZhbHVlIHZh
bHVlV2l0aENvbnN0cnVjdG9yRGVzY3JpcHRvcjpjb25zdHJ1Y3RvckRlc2NyaXB0b3IgaW5Db250
ZXh0OnNlbGZdOworfQorCitAZW5kCisKK3ZvaWQgY3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRl
clRlc3QoKQoreworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNv
bnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIAorICAgICAgICBKU1Zh
bHVlICpteUNvbnN0cnVjdG9yID0gW2NvbnRleHQgdmFsdWVXaXRoQ29uc3RydWN0b3JEZXNjcmlw
dG9yOkB7CisgICAgICAgICAgICBAIm9iamVjdFByb3BlcnRpZXMiIDogQHsKKyAgICAgICAgICAg
ICAgICBAImN1cnJlbnRUaGlzIiA6IEB7IEpTUHJvcGVydHlEZXNjcmlwdG9yR2V0S2V5IDogXnsg
cmV0dXJuIEpTQ29udGV4dC5jdXJyZW50VGhpczsgfSB9LAorICAgICAgICAgICAgfSwKKyAgICAg
ICAgfV07CisgICAgICAgIAorICAgICAgICBKU1ZhbHVlICpteU9iajEgPSBbbXlDb25zdHJ1Y3Rv
ciBjb25zdHJ1Y3RXaXRoQXJndW1lbnRzOm5pbF07CisgICAgICAgIE5TTG9nKEAibXlPYmoxLmN1
cnJlbnRUaGlzOiAlQCIsIG15T2JqMVtAImN1cnJlbnRUaGlzIl0pOworICAgICAgICBKU1ZhbHVl
ICpteU9iajIgPSBbbXlDb25zdHJ1Y3RvciBjb25zdHJ1Y3RXaXRoQXJndW1lbnRzOkBbIEAiYmFy
IiBdXTsKKyAgICAgICAgTlNMb2coQCJteU9iajIuY3VycmVudFRoaXM6ICVAIiwgbXlPYmoyW0Ai
Y3VycmVudFRoaXMiXSk7CisgICAgfQorfQorCisjZW5kaWYgLy8gSlNDX09CSkNfQVBJX0VOQUJM
RUQgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCShyZXZpc2lvbiAxNTc0NTMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDYgKzI1LDggQEAKIAogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuaD4KIAorI2ltcG9ydCAiQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3Qu
aCIKKwogZXh0ZXJuICJDIiB2b2lkIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVn
Z2luZyhKU0NvbnRleHRSZWYpOwogCiBleHRlcm4gIkMiIGJvb2wgX0Jsb2NrX2hhc19zaWduYXR1
cmUoaWQpOwpAQCAtOTYxLDYgKzk2Myw4IEBAIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkoKQogICAg
ICAgICBjaGVja1Jlc3VsdChAIltKU0NvbnRleHQgY3VycmVudFRoaXNdID09IG5pbCBvdXRzaWRl
IG9mIGNhbGxiYWNrIiwgIVtKU0NvbnRleHQgY3VycmVudFRoaXNdKTsKICAgICAgICAgY2hlY2tS
ZXN1bHQoQCJbSlNDb250ZXh0IGN1cnJlbnRBcmd1bWVudHNdID09IG5pbCBvdXRzaWRlIG9mIGNh
bGxiYWNrIiwgIVtKU0NvbnRleHQgY3VycmVudEFyZ3VtZW50c10pOwogICAgIH0KKworICAgIGN1
cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0KCk7CiB9CiAKICNlbHNlCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTU3NDUzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTExNTgsNiArMTE1OCw3IEBACiAJCUMyOTgxRkQ5MTdCQUVFNEIwMEEzQkM5
OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyOTgxRkQ3MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNp
cmVkV2Vha1JlZmVyZW5jZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlDMjk4MUZEQzE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVzaXJlZFdyaXRl
QmFycmllcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzI5ODFGREExN0JBRkY0NDAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmNw
cCAqLzsgfTsKIAkJQzI5ODFGREQxN0JBRkY0NDAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXcml0ZUJh
cnJpZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
Mjk4MUZEQjE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVzaXJlZFdyaXRlQmFycmllcnMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDMjlFQ0IwMzE4
MDREMEVEMDBEMkNCQjQgLyogQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjlFQ0IwMTE4MDRE
MEVEMDBEMkNCQjQgLyogQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0gKi87IH07
CiAJCUMyQTdGNjg4MTYwNDMyRDQwMEY3NkI5OCAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJBN0Y2ODcxNjA0
MzJENDAwRjc2Qjk4IC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzJCOTE2QzIxNERBMDE0RTAwQ0JBQzg2
IC8qIE1hcmtlZEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzJCOTE2QzExNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyQjkx
NkM1MTREQTA0MEMwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJCOTE2QzQxNERBMDQwQzAwQ0JBQzg2
IC8qIE1hcmtlZEFsbG9jYXRvci5jcHAgKi87IH07CkBAIC0yNDAwLDYgKzI0MDEsOCBAQAogCQlD
Mjk4MUZENzE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5o
OyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMjk4MUZEQTE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVzaXJlZFdyaXRl
QmFycmllcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHRGVz
aXJlZFdyaXRlQmFycmllcnMuY3BwOyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRXcml0ZUJhcnJpZXJz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI5ODFGREIxN0JBRkY0NDAwQTNC
Qzk4IC8qIERGR0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERGR0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmg7IHBhdGggPSBkZmcvREZHRGVzaXJl
ZFdyaXRlQmFycmllcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI5RUNCMDEx
ODA0RDBFRDAwRDJDQkI0IC8qIEN1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQ3VycmVudFRoaXNJbnNpZGVC
bG9ja0dldHRlclRlc3QubW07IHBhdGggPSBBUEkvdGVzdHMvQ3VycmVudFRoaXNJbnNpZGVCbG9j
a0dldHRlclRlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyOUVDQjAyMTgw
NEQwRUQwMEQyQ0JCNCAvKiBDdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVy
VGVzdC5oOyBwYXRoID0gQVBJL3Rlc3RzL0N1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQTdGNjg3MTYwNDMyRDQwMEY3NkI5
OCAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0Rlc3RydWN0aWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMkI5MTZDMTE0REEwMTRFMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZEFsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDMkI5MTZDNDE0REEwNDBDMDBDQkFDODYgLyogTWFya2VkQWxsb2Nh
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcmtlZEFsbG9j
YXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzkyLDYgKzI3OTUsOCBA
QAogCQkJCTE0RDg1Nzc0MEE0Njk2QzgwMDMyMTQ2QyAvKiB0ZXN0YXBpLmpzICovLAogCQkJCTg2
RDIyMjE5MTY3RUY5NDQwMDI0QzgwNCAvKiB0ZXN0YXBpLm1tICovLAogCQkJCTY1MTEyMkU1MTQw
NDY5QkEwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwLmNwcCAqLywKKwkJCQlDMjlFQ0IwMTE4MDREMEVE
MDBEMkNCQjQgLyogQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QubW0gKi8sCisJCQkJ
QzI5RUNCMDIxODA0RDBFRDAwRDJDQkI0IC8qIEN1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJU
ZXN0LmggKi8sCiAJCQkpOwogCQkJbmFtZSA9IHRlc3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTUwNTYsNiArNTA2MSw3IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFz
ZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQlD
MjlFQ0IwMzE4MDREMEVEMDBEMkNCQjQgLyogQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRl
c3QubW0gaW4gU291cmNlcyAqLywKIAkJCQkxNDQwRjYxMDBBNEY4NTY3MDAwNUYwNjEgLyogdGVz
dGFwaS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJODZEMjIyMUExNjdFRjk0NDAwMjRDODA0IC8qIHRl
c3RhcGkubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAJKHJldmlzaW9uIDE1NzQ1MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDcgKzM3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogY2xhc3MgUmVjb21waWxlciA6IHB1
YmxpYyBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewogcHVibGljOgotICAgIFJlY29tcGlsZXIo
RGVidWdnZXIqKTsKKyAgICBSZWNvbXBpbGVyKEpTQzo6RGVidWdnZXIqKTsKICAgICB+UmVjb21w
aWxlcigpOwogICAgIHZvaWQgb3BlcmF0b3IoKShKU0NlbGwqKTsKIApAQCAtNDUsMTIgKzQ1LDEy
IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoU2V0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+IEZ1
bmN0aW9uRXhlY3V0YWJsZVNldDsKICAgICB0eXBlZGVmIEhhc2hNYXA8U291cmNlUHJvdmlkZXIq
LCBFeGVjU3RhdGUqPiBTb3VyY2VQcm92aWRlck1hcDsKICAgICAKLSAgICBEZWJ1Z2dlciogbV9k
ZWJ1Z2dlcjsKKyAgICBKU0M6OkRlYnVnZ2VyKiBtX2RlYnVnZ2VyOwogICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZVNldCBtX2Z1bmN0aW9uRXhlY3V0YWJsZXM7CiAgICAgU291cmNlUHJvdmlkZXJNYXAg
bV9zb3VyY2VQcm92aWRlcnM7CiB9OwogCi1pbmxpbmUgUmVjb21waWxlcjo6UmVjb21waWxlcihE
ZWJ1Z2dlciogZGVidWdnZXIpCitpbmxpbmUgUmVjb21waWxlcjo6UmVjb21waWxlcihKU0M6OkRl
YnVnZ2VyKiBkZWJ1Z2dlcikKICAgICA6IG1fZGVidWdnZXIoZGVidWdnZXIpCiB7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>