<?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>56695</bug_id>
          
          <creation_ts>2011-03-18 16:57:45 -0700</creation_ts>
          <short_desc>Make StructureChain GC allocated</short_desc>
          <delta_ts>2011-04-04 12:46:08 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>abarth</cc>
    
    <cc>buildbot</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>370014</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-03-18 16:57:45 -0700</bug_when>
    <thetext>Make StructureChain GC allocated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370016</commentid>
    <comment_count>1</comment_count>
      <attachid>86243</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-03-18 16:59:11 -0700</bug_when>
    <thetext>Created attachment 86243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370017</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-18 17:00:47 -0700</bug_when>
    <thetext>Attachment 86243 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/bytecode/Instruction.h:85:  _stubRoutine is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecode/Instruction.h:85:  _base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecode/Instruction.h:85:  _chain is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:83:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 4 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370026</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-03-18 17:13:42 -0700</bug_when>
    <thetext>Don&apos;t review this patch, i&apos;m just waiting to see how the various bots deal with it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370261</commentid>
    <comment_count>4</comment_count>
      <attachid>86291</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-03-20 20:01:19 -0700</bug_when>
    <thetext>Created attachment 86291
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370262</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-20 20:03:05 -0700</bug_when>
    <thetext>Attachment 86291 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/bytecode/Instruction.h:85:  _stubRoutine is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecode/Instruction.h:85:  _base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecode/Instruction.h:85:  _chain is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 3 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376627</commentid>
    <comment_count>6</comment_count>
      <attachid>86291</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-03-30 13:25:42 -0700</bug_when>
    <thetext>Comment on attachment 86291
Patch

r=me

On my machine, this is a 0.2% speedup on SunSpider, and no change on v8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376681</commentid>
    <comment_count>7</comment_count>
      <attachid>86291</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-03-30 14:39:33 -0700</bug_when>
    <thetext>Comment on attachment 86291
Patch

Clearing flags on attachment: 86291

Committed r82500: &lt;http://trac.webkit.org/changeset/82500&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376682</commentid>
    <comment_count>8</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-03-30 14:39:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376734</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-30 15:28:03 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/82500 might have broken Leopard Intel Debug (Tests) and Windows 7 Release (Tests)
The following tests are not passing:
fast/dom/Window/window-postmessage-clone.html
fast/workers/shared-worker-frame-lifecycle.html
fast/workers/worker-close-more.html
inspector/debugger/debugger-breakpoints-not-activated-on-reload.html
inspector/debugger/scripts-panel.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376785</commentid>
    <comment_count>10</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-03-30 16:54:27 -0700</bug_when>
    <thetext>Rolled out in r82519 as someone deemed it reasonable to break DRT so i couldn&apos;t fix in trunk fast enough</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378229</commentid>
    <comment_count>11</comment_count>
      <attachid>87947</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-01 17:13:24 -0700</bug_when>
    <thetext>Created attachment 87947
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378230</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-01 17:15:46 -0700</bug_when>
    <thetext>Attachment 87947 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/bytecode/Instruction.h:86:  _stubRoutine is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecode/Instruction.h:86:  _base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecode/Instruction.h:86:  _chain is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/runtime/JSZombie.cpp:38:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 4 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378259</commentid>
    <comment_count>13</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-01 18:08:35 -0700</bug_when>
    <thetext>Attachment 87947 did not build on win:
Build output: http://queues.webkit.org/results/8307303</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378260</commentid>
    <comment_count>14</comment_count>
      <attachid>87950</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-01 18:11:42 -0700</bug_when>
    <thetext>Created attachment 87950
Removed export from windows .def file, now need to wait to find out what the new version is called</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378261</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-01 18:13:43 -0700</bug_when>
    <thetext>Attachment 87950 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/bytecode/Instruction.h:86:  _stubRoutine is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecode/Instruction.h:86:  _base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecode/Instruction.h:86:  _chain is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/runtime/JSZombie.cpp:38:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 4 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378301</commentid>
    <comment_count>16</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-01 19:41:55 -0700</bug_when>
    <thetext>Attachment 87950 did not build on win:
Build output: http://queues.webkit.org/results/8320362</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378304</commentid>
    <comment_count>17</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-01 19:50:39 -0700</bug_when>
    <thetext>Attachment 87950 did not build on win:
Build output: http://queues.webkit.org/results/8185366</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378850</commentid>
    <comment_count>18</comment_count>
      <attachid>88073</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-04 10:09:22 -0700</bug_when>
    <thetext>Created attachment 88073
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378851</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-04 10:11:05 -0700</bug_when>
    <thetext>Attachment 88073 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1

Source/JavaScriptCore/bytecode/Instruction.h:86:  _stubRoutine is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecode/Instruction.h:86:  _base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/bytecode/Instruction.h:86:  _chain is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 3 in 34 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378871</commentid>
    <comment_count>20</comment_count>
      <attachid>88073</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-04 10:41:51 -0700</bug_when>
    <thetext>Comment on attachment 88073
Patch

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

Hard to tell just by looking if this is correct, but if the tests pass, it look generally OK.

&gt; Source/JavaScriptCore/runtime/Structure.h:112
&gt; +            if (m_prototype)
&gt; +                markStack.append(&amp;m_prototype);

Just noticed this, although it&apos;s not new in your patch:

It would be nice to get rid of the concept of a JSValue() prototype, and use jsNull() instead, to get rid of this branch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378923</commentid>
    <comment_count>21</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-04 11:44:15 -0700</bug_when>
    <thetext>Committed r82849: &lt;http://trac.webkit.org/changeset/82849&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378975</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-04 12:46:08 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/82849 might have broken WinCE Release (Build)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86243</attachid>
            <date>2011-03-18 16:59:11 -0700</date>
            <delta_ts>2011-03-20 20:01:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56695-20110318165910.patch</filename>
            <type>text/plain</type>
            <size>35046</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE0ODcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGZl
YjIyYWY1MDM0MzA2NGNiNzJhMjQ5YmZhZTU2MDBjNmJmNmY0N2IuLmRiYmMzOTUwZjRiZDFkNWM0
MzdjYWY5NmNmNGVjOWEzNDYzNjFiYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDcyIEBACisyMDExLTAzLTE4ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBTdHJ1
Y3R1cmVDaGFpbiBHQyBhbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU2Njk1CisKKyAgICAgICAgTWFrZSBTdHJ1Y3R1cmVDaGFpbiBHQyBh
bGxvY2F0ZWQsIGFuZCBtYWtlIHRoZSB2YXJpb3VzIG93bmVycworICAgICAgICBtYXJrIGl0IGNv
cnJlY3RseS4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZGVyZWZTdHJ1
Y3R1cmVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpyZWZTdHJ1Y3R1cmVzKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjptYXJrQWdncmVnYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9J
bnN0cnVjdGlvbi5oOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxp
c3Q6OlBvbHltb3JwaGljU3R1YkluZm86OnNldCk6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGlj
QWNjZXNzU3RydWN0dXJlTGlzdDo6UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KToKKyAg
ICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0OjpkZXJlZlN0cnVjdHVy
ZXMpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Q6Om1hcmtB
Z2dyZWdhdGUpOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvbjo6SW5zdHJ1Y3Rpb24pOgorICAg
ICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlU3R1YkluZm86OmRlcmVmKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86
Om1hcmtBZ2dyZWdhdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmg6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjppbml0R2V0QnlJZENoYWluKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmluaXRQdXRCeUlkVHJhbnNpdGlvbik6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkNhbGwpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkpOgor
ICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX3B0cik6CisgICAgICAgICogaml0L0pJ
VE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX3B0cik6
CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
Ojpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAqIGppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdl
dEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChK
U0M6OmdldFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdFNsb3QpOgorICAgICAgICAoSlND
OjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
RGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjptYXJr
SWZOZWVkZWQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpwcm90b3R5cGVDaGFpbik6CisgICAgICAgICogcnVudGltZS9KU09i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6bWFya0NoaWxkcmVuRGlyZWN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yOjpnZXQpOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjptYXJrQ2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpzZXRDYWNoZWRQ
cm90b3R5cGVDaGFpbik6CisgICAgICAgICogcnVudGltZS9NYXJrU3RhY2suaDoKKyAgICAgICAg
KEpTQzo6TWFya1N0YWNrOjphcHBlbmQpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y2FjaGVkUHJvdG90eXBlQ2hhaW5TbG90KToKKyAg
ICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlQ2hhaW46OlN0cnVjdHVyZUNoYWluKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNo
YWluLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNoYWluOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlU3RydWN0dXJlKToKKwogMjAxMS0wMy0xNyAgR2Vv
ZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9s
aXZlciBIdW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAppbmRleCAwYTBjZjg0NGRkNDI4OTYxOGVhOGNhM2IxNDVkOTQ2MmQ0ZDg3NzRhLi45OGJiYjNj
NDA3MzRjNGZjOWI3YjZiYjgyMTMyOWM4NGNjY2RjNzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNzMxLDcgKzczMSw3IEBAIHZvaWQgQ29k
ZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVmVjdG9yPEluc3RydWN0aW9uPjo6
Y29uc3RfaXRlcmF0b3ImCiAgICAgICAgIGNhc2Ugb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYzog
ewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBKU1ZhbHVlIHNjb3BlID0g
SlNWYWx1ZSgoKytpdCktPnUuanNDZWxsKTsKKyAgICAgICAgICAgIEpTVmFsdWUgc2NvcGUgPSBK
U1ZhbHVlKCgrK2l0KS0+dS5qc0NlbGwuZ2V0KCkpOwogICAgICAgICAgICAgKytpdDsKICAgICAg
ICAgICAgIGludCBkZXB0aCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgcHJpbnRm
KCJbJTRkXSByZXNvbHZlX2dsb2JhbF9keW5hbWljXHQgJXMsICVzLCAlcywgJWRcbiIsIGxvY2F0
aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgdmFsdWVUb1NvdXJjZVN0cmluZyhl
eGVjLCBzY29wZSkudXRmOCgpLmRhdGEoKSwgaWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBd
KS5kYXRhKCksIGRlcHRoKTsKQEAgLTE0MzcsMTMgKzE0MzcsMTEgQEAgdm9pZCBDb2RlQmxvY2s6
OmRlcmVmU3RydWN0dXJlcyhJbnN0cnVjdGlvbiogdlBDKSBjb25zdAogICAgIH0KICAgICBpZiAo
dlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2No
YWluKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRf
YnlfaWRfZ2V0dGVyX2NoYWluKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdl
dE9wY29kZShvcF9nZXRfYnlfaWRfY3VzdG9tX2NoYWluKSkgewogICAgICAgICB2UENbNF0udS5z
dHJ1Y3R1cmUtPmRlcmVmKCk7Ci0gICAgICAgIHZQQ1s1XS51LnN0cnVjdHVyZUNoYWluLT5kZXJl
ZigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0g
aW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbikpIHsKICAgICAg
ICAgdlBDWzRdLnUuc3RydWN0dXJlLT5kZXJlZigpOwogICAgICAgICB2UENbNV0udS5zdHJ1Y3R1
cmUtPmRlcmVmKCk7Ci0gICAgICAgIHZQQ1s2XS51LnN0cnVjdHVyZUNoYWluLT5kZXJlZigpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJw
cmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWRfcmVwbGFjZSkpIHsKQEAgLTE0ODYsMTMgKzE0
ODQsMTEgQEAgdm9pZCBDb2RlQmxvY2s6OnJlZlN0cnVjdHVyZXMoSW5zdHJ1Y3Rpb24qIHZQQykg
Y29uc3QKICAgICB9CiAgICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0
T3Bjb2RlKG9wX2dldF9ieV9pZF9jaGFpbikgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJl
dGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2dldHRlcl9jaGFpbikgfHwgdlBDWzBdLnUub3Bj
b2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2N1c3RvbV9jaGFpbikp
IHsKICAgICAgICAgdlBDWzRdLnUuc3RydWN0dXJlLT5yZWYoKTsKLSAgICAgICAgdlBDWzVdLnUu
c3RydWN0dXJlQ2hhaW4tPnJlZigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2
UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbikpIHsKICAgICAgICAgdlBDWzRdLnUuc3RydWN0dXJlLT5yZWYoKTsKICAgICAgICAg
dlBDWzVdLnUuc3RydWN0dXJlLT5yZWYoKTsKLSAgICAgICAgdlBDWzZdLnUuc3RydWN0dXJlQ2hh
aW4tPnJlZigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh2UENbMF0udS5vcGNv
ZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWRfcmVwbGFjZSkpIHsKQEAg
LTE1MjcsNiArMTUyMywyMCBAQCB2b2lkIENvZGVCbG9jazo6bWFya0FnZ3JlZ2F0ZShNYXJrU3Rh
Y2smIG1hcmtTdGFjaykKICAgICAgICAgaWYgKGNhbGxMaW5rSW5mbyhpKS5pc0xpbmtlZCgpKQog
ICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmY2FsbExpbmtJbmZvKGkpLmNhbGxlZSk7CiAj
ZW5kaWYKKyNpZiBFTkFCTEUoSU5URVJQUkVURVIpCisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJl
dGVyID0gbV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlcjsKKyAgICBmb3IgKHNpemVfdCBzaXplID0g
bV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytp
KSB7CisgICAgICAgIEluc3RydWN0aW9uKiB2UEMgPSAmbV9pbnN0cnVjdGlvbnNbbV9wcm9wZXJ0
eUFjY2Vzc0luc3RydWN0aW9uc1tpXV07CisgICAgICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0g
aW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfY2hhaW4pIHx8IHZQQ1swXS51Lm9w
Y29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9nZXR0ZXJfY2hhaW4p
IHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9p
ZF9jdXN0b21fY2hhaW4pKQorICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdlBDWzVdLnUu
c3RydWN0dXJlQ2hhaW4pOworICAgICAgICBlbHNlIGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50
ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbikpCisgICAgICAgICAg
ICBtYXJrU3RhY2suYXBwZW5kKCZ2UENbNl0udS5zdHJ1Y3R1cmVDaGFpbik7CisgICAgfQorI2Vu
ZGlmCisjaWYgRU5BQkxFKEpJVCkKKyAgICBmb3IgKHNpemVfdCBzaXplID0gbV9zdHJ1Y3R1cmVT
dHViSW5mb3Muc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgbV9zdHJ1Y3R1
cmVTdHViSW5mb3NbaV0ubWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOworI2VuZGlmCiB9CiAKIEhh
bmRsZXJJbmZvKiBDb2RlQmxvY2s6OmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JbnN0cnVjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0
aW9uLmgKaW5kZXggZjA3N2NiZmY1ODNjNjNmNWFiOGMxZjUwMzU1OWNiMTM5ZmY0MGU0OC4uZGEw
ODIxZGFiMzZjNzZhNDk5NmZhM2FmYWI2ZWY1MTcyOTdhMzU1NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKQEAgLTYzLDcgKzYzLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGJhc2U7CiAgICAgICAgICAgICB1bmlv
biB7CiAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBwcm90bzsKLSAgICAgICAgICAgICAgICBT
dHJ1Y3R1cmVDaGFpbiogY2hhaW47CisgICAgICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxT
dHJ1Y3R1cmVDaGFpbj4gY2hhaW47CiAgICAgICAgICAgICB9IHU7CiAKICAgICAgICAgICAgIHZv
aWQgc2V0KFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdFN0dWJSb3V0aW5lVHlwZSBfc3R1
YlJvdXRpbmUsIFN0cnVjdHVyZSogX2Jhc2UpCkBAIC04MiwxMSArODIsMTEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICAgICAgaXNDaGFpbiA9IGZhbHNlOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgCi0gICAgICAgICAgICB2b2lkIHNldChQb2x5bW9ycGhpY0FjY2Vzc1N0cnVj
dHVyZUxpc3RTdHViUm91dGluZVR5cGUgX3N0dWJSb3V0aW5lLCBTdHJ1Y3R1cmUqIF9iYXNlLCBT
dHJ1Y3R1cmVDaGFpbiogX2NoYWluKQorICAgICAgICAgICAgdm9pZCBzZXQoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxp
c3RTdHViUm91dGluZVR5cGUgX3N0dWJSb3V0aW5lLCBTdHJ1Y3R1cmUqIF9iYXNlLCBTdHJ1Y3R1
cmVDaGFpbiogX2NoYWluKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHN0dWJSb3V0
aW5lID0gX3N0dWJSb3V0aW5lOwogICAgICAgICAgICAgICAgIGJhc2UgPSBfYmFzZTsKLSAgICAg
ICAgICAgICAgICB1LmNoYWluID0gX2NoYWluOworICAgICAgICAgICAgICAgIHUuY2hhaW4uc2V0
KGdsb2JhbERhdGEsIG93bmVyLCBfY2hhaW4pOwogICAgICAgICAgICAgICAgIGlzQ2hhaW4gPSB0
cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9IGxpc3RbUE9MWU1PUlBISUNfTElTVF9DQUNI
RV9TSVpFXTsKQEAgLTEwMSw5ICsxMDEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IGxpc3RbMF0uc2V0KHN0dWJSb3V0aW5lLCBmaXJzdEJhc2UsIGZpcnN0UHJvdG8pOwogICAgICAg
ICB9CiAKLSAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KFBvbHltb3JwaGlj
QWNjZXNzU3RydWN0dXJlTGlzdFN0dWJSb3V0aW5lVHlwZSBzdHViUm91dGluZSwgU3RydWN0dXJl
KiBmaXJzdEJhc2UsIFN0cnVjdHVyZUNoYWluKiBmaXJzdENoYWluKQorICAgICAgICBQb2x5bW9y
cGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwq
IG93bmVyLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTdHViUm91dGluZVR5cGUgc3R1
YlJvdXRpbmUsIFN0cnVjdHVyZSogZmlyc3RCYXNlLCBTdHJ1Y3R1cmVDaGFpbiogZmlyc3RDaGFp
bikKICAgICAgICAgewotICAgICAgICAgICAgbGlzdFswXS5zZXQoc3R1YlJvdXRpbmUsIGZpcnN0
QmFzZSwgZmlyc3RDaGFpbik7CisgICAgICAgICAgICBsaXN0WzBdLnNldChnbG9iYWxEYXRhLCBv
d25lciwgc3R1YlJvdXRpbmUsIGZpcnN0QmFzZSwgZmlyc3RDaGFpbik7CiAgICAgICAgIH0KIAog
ICAgICAgICB2b2lkIGRlcmVmU3RydWN0dXJlcyhpbnQgY291bnQpCkBAIC0xMTUsMTMgKzExNSwy
MiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBpbmZvLmJhc2UtPmRlcmVmKCk7
CiAKICAgICAgICAgICAgICAgICBpZiAoaW5mby51LnByb3RvKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChpbmZvLmlzQ2hhaW4pCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvLnUuY2hh
aW4tPmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCFpbmZvLmlzQ2hhaW4pCiAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLnUucHJv
dG8tPmRlcmVmKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9
CisKKyAgICAgICAgdm9pZCBtYXJrQWdncmVnYXRlKE1hcmtTdGFjayYgbWFya1N0YWNrLCBpbnQg
Y291bnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7
ICsraSkgeworICAgICAgICAgICAgICAgIFBvbHltb3JwaGljU3R1YkluZm8mIGluZm8gPSBsaXN0
W2ldOworICAgICAgICAgICAgICAgIEFTU0VSVChpbmZvLmJhc2UpOworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgIGlmIChpbmZvLnUucHJvdG8gJiYgaW5mby5pc0NoYWluKQorICAg
ICAgICAgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZpbmZvLnUuY2hhaW4pOworICAgICAg
ICAgICAgfQorICAgICAgICB9CiAgICAgfTsKIAogICAgIHN0cnVjdCBJbnN0cnVjdGlvbiB7CkBA
IC0xMzAsNyArMTM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjaWYgIUVOQUJMRShDT01QVVRFRF9H
T1RPX0lOVEVSUFJFVEVSKQogICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBpbml0aWFsaXplIG9u
ZSBvZiB0aGUgcG9pbnRlciBtZW1iZXJzIHRvIGVuc3VyZSB0aGF0CiAgICAgICAgICAgICAvLyB0
aGUgZW50aXJlIHN0cnVjdCBpcyBpbml0aWFsaXplZCwgd2hlbiBvcGNvZGUgaXMgbm90IGEgcG9p
bnRlci4KLSAgICAgICAgICAgIHUuanNDZWxsID0gMDsKKyAgICAgICAgICAgIHUuanNDZWxsLmNs
ZWFyKCk7CiAjZW5kaWYKICAgICAgICAgICAgIHUub3Bjb2RlID0gb3Bjb2RlOwogICAgICAgICB9
CkBAIC0xMzksMTMgKzE0OCwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAg
ICAgICAgLy8gV2UgaGF2ZSB0byBpbml0aWFsaXplIG9uZSBvZiB0aGUgcG9pbnRlciBtZW1iZXJz
IHRvIGVuc3VyZSB0aGF0CiAgICAgICAgICAgICAvLyB0aGUgZW50aXJlIHN0cnVjdCBpcyBpbml0
aWFsaXplZCBpbiA2NC1iaXQuCi0gICAgICAgICAgICB1LmpzQ2VsbCA9IDA7CisgICAgICAgICAg
ICB1LmpzQ2VsbC5jbGVhcigpOwogICAgICAgICAgICAgdS5vcGVyYW5kID0gb3BlcmFuZDsKICAg
ICAgICAgfQogCiAgICAgICAgIEluc3RydWN0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7IHUu
c3RydWN0dXJlID0gc3RydWN0dXJlOyB9Ci0gICAgICAgIEluc3RydWN0aW9uKFN0cnVjdHVyZUNo
YWluKiBzdHJ1Y3R1cmVDaGFpbikgeyB1LnN0cnVjdHVyZUNoYWluID0gc3RydWN0dXJlQ2hhaW47
IH0KLSAgICAgICAgSW5zdHJ1Y3Rpb24oSlNDZWxsKiBqc0NlbGwpIHsgdS5qc0NlbGwgPSBqc0Nl
bGw7IH0KKyAgICAgICAgSW5zdHJ1Y3Rpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0Nl
bGwqIG93bmVyLCBTdHJ1Y3R1cmVDaGFpbiogc3RydWN0dXJlQ2hhaW4pCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHUuc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKKyAgICAgICAgICAgIHUuc3RydWN0
dXJlQ2hhaW4uc2V0KGdsb2JhbERhdGEsIG93bmVyLCBzdHJ1Y3R1cmVDaGFpbik7CisgICAgICAg
IH0KKyAgICAgICAgSW5zdHJ1Y3Rpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwq
IG93bmVyLCBKU0NlbGwqIGpzQ2VsbCkKKyAgICAgICAgeworICAgICAgICAgICAgdS5qc0NlbGwu
Y2xlYXIoKTsKKyAgICAgICAgICAgIHUuanNDZWxsLnNldChnbG9iYWxEYXRhLCBvd25lciwganND
ZWxsKTsKKyAgICAgICAgfQogICAgICAgICBJbnN0cnVjdGlvbihQb2x5bW9ycGhpY0FjY2Vzc1N0
cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcykgeyB1LnBvbHltb3JwaGljU3RydWN0
dXJlcyA9IHBvbHltb3JwaGljU3RydWN0dXJlczsgfQogICAgICAgICBJbnN0cnVjdGlvbihQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXJGdW5jKSB7IHUuZ2V0dGVyRnVuYyA9IGdldHRl
ckZ1bmM7IH0KIApAQCAtMTUzLDggKzE3MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgT3Bjb2RlIG9wY29kZTsKICAgICAgICAgICAgIGludCBvcGVyYW5kOwogICAgICAgICAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmU7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogc3RydWN0
dXJlQ2hhaW47Ci0gICAgICAgICAgICBKU0NlbGwqIGpzQ2VsbDsKKyAgICAgICAgICAgIFdyaXRl
QmFycmllckJhc2U8U3RydWN0dXJlQ2hhaW4+IHN0cnVjdHVyZUNoYWluOworICAgICAgICAgICAg
V3JpdGVCYXJyaWVyQmFzZTxKU0NlbGw+IGpzQ2VsbDsKICAgICAgICAgICAgIFBvbHltb3JwaGlj
QWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzOwogICAgICAgICAgICAg
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYzsKICAgICAgICAgfSB1OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5j
cHAKaW5kZXggNWRmNDg0MTRhYWM3Yjg2ZDFkNzhlMzkxMmQ3MmY3OTYyMjc3OWY3NS4uNmEzMTcz
MDk4NjZmNzk1ODg0ZjQ0NjhlZDY0NTAzNTQ2YTYwYWQwMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC00NCw3ICs0
NCw2IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmRlcmVmKCkKICAgICAgICAgcmV0dXJuOwog
ICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9jaGFpbjoKICAgICAgICAgdS5nZXRCeUlkQ2hhaW4u
YmFzZU9iamVjdFN0cnVjdHVyZS0+ZGVyZWYoKTsKLSAgICAgICAgdS5nZXRCeUlkQ2hhaW4uY2hh
aW4tPmRlcmVmKCk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRf
c2VsZl9saXN0OiB7CiAgICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9s
eW1vcnBoaWNTdHJ1Y3R1cmVzID0gdS5nZXRCeUlkU2VsZkxpc3Quc3RydWN0dXJlTGlzdDsKQEAg
LTYxLDcgKzYwLDYgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6ZGVyZWYoKQogICAgIGNhc2Ug
YWNjZXNzX3B1dF9ieV9pZF90cmFuc2l0aW9uOgogICAgICAgICB1LnB1dEJ5SWRUcmFuc2l0aW9u
LnByZXZpb3VzU3RydWN0dXJlLT5kZXJlZigpOwogICAgICAgICB1LnB1dEJ5SWRUcmFuc2l0aW9u
LnN0cnVjdHVyZS0+ZGVyZWYoKTsKLSAgICAgICAgdS5wdXRCeUlkVHJhbnNpdGlvbi5jaGFpbi0+
ZGVyZWYoKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF9yZXBs
YWNlOgogICAgICAgICB1LnB1dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPmRlcmVm
KCk7CkBAIC03OCw2ICs3Niw0MiBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpkZXJlZigpCiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIH0KKwordm9pZCBTdHJ1Y3R1cmVT
dHViSW5mbzo6bWFya0FnZ3JlZ2F0ZShNYXJrU3RhY2smIG1hcmtTdGFjaykKK3sKKyAgICBzd2l0
Y2ggKGFjY2Vzc1R5cGUpIHsKKyAgICAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGY6Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9wcm90bzoK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX2NoYWlu
OgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfc2Vs
Zl9saXN0OiB7CisgICAgICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBv
bHltb3JwaGljU3RydWN0dXJlcyA9IHUuZ2V0QnlJZFNlbGZMaXN0LnN0cnVjdHVyZUxpc3Q7Cisg
ICAgICAgICAgICBwb2x5bW9ycGhpY1N0cnVjdHVyZXMtPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNr
LCB1LmdldEJ5SWRTZWxmTGlzdC5saXN0U2l6ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3Byb3RvX2xpc3Q6IHsKKyAgICAg
ICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1
cmVzID0gdS5nZXRCeUlkUHJvdG9MaXN0LnN0cnVjdHVyZUxpc3Q7CisgICAgICAgICAgICBwb2x5
bW9ycGhpY1N0cnVjdHVyZXMtPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrLCB1LmdldEJ5SWRQcm90
b0xpc3QubGlzdFNpemUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IGNhc2UgYWNjZXNzX3B1dF9ieV9pZF90cmFuc2l0aW9uOgorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVwbGFjZToKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkOgorICAgICAgICBjYXNlIGFjY2Vzc19w
dXRfYnlfaWQ6CisgICAgICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9nZW5lcmljOgorICAgICAg
ICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfZ2VuZXJpYzoKKyAgICAgICAgY2FzZSBhY2Nlc3NfZ2V0
X2FycmF5X2xlbmd0aDoKKyAgICAgICAgY2FzZSBhY2Nlc3NfZ2V0X3N0cmluZ19sZW5ndGg6Cisg
ICAgICAgICAgICAvLyBUaGVzZSBpbnN0cnVjdGlvbnMgZG9uJ3QgcmVmIHRoZWlyIFN0cnVjdHVy
ZXMuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
SW5mby5oCmluZGV4IDhlMmM0ODlhYTkzMDIzMTM5YjlhZjk2ZGFlOGU1NjVkZWNmMjI0ZmUuLjI4
MjAyZjkzNmNlM2U3YmE5NDA4ZDlhOTAwMGExNTM2MzY1ZTBhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC04NSw3ICs4
NSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgYmFzZU9iamVjdFN0cnVjdHVyZS0+
cmVmKCk7CiAKICAgICAgICAgICAgIHUuZ2V0QnlJZENoYWluLmNoYWluID0gY2hhaW47Ci0gICAg
ICAgICAgICBjaGFpbi0+cmVmKCk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGluaXRHZXRC
eUlkU2VsZkxpc3QoUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBzdHJ1Y3R1cmVMaXN0
LCBpbnQgbGlzdFNpemUpCkBAIC0xMTcsNyArMTE2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICBzdHJ1Y3R1cmUtPnJlZigpOwogCiAgICAgICAgICAgICB1LnB1dEJ5SWRUcmFuc2l0
aW9uLmNoYWluID0gY2hhaW47Ci0gICAgICAgICAgICBjaGFpbi0+cmVmKCk7CiAgICAgICAgIH0K
IAogICAgICAgICB2b2lkIGluaXRQdXRCeUlkUmVwbGFjZShTdHJ1Y3R1cmUqIGJhc2VPYmplY3RT
dHJ1Y3R1cmUpCkBAIC0xMjksNiArMTI3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0K
IAogICAgICAgICB2b2lkIGRlcmVmKCk7CisgICAgICAgIHZvaWQgbWFya0FnZ3JlZ2F0ZShNYXJr
U3RhY2smKTsKIAogICAgICAgICBib29sIHNlZW5PbmNlKCkKICAgICAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAppbmRleCBkYmRiYjViZjNjNDI0M2M3ODExODg5YjQ3YWNkOGIwNTAwNTNhODk2Li4yMTE4
ZGU3M2MxM2I0NGUzYWRmZDZhYzNlMDVlNzRhMGNlODVkMGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApA
QCAtOTI1LDcgKzkyNSw3IEBAIFBhc3NSZWZQdHI8TGFiZWw+IEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKFJlZ2lzdGVySUQqIGNvbmQsCiAKICAgICBlbWl0T3Bj
b2RlKG9wX2puZXFfcHRyKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY29uZC0+aW5kZXgo
KSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0
LT5jYWxsRnVuY3Rpb24oKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKEluc3RydWN0aW9u
KCptX2dsb2JhbERhdGEsIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgbV9zY29wZUNo
YWluLT5nbG9iYWxPYmplY3QtPmNhbGxGdW5jdGlvbigpKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKHRhcmdldC0+YmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiAgICAg
cmV0dXJuIHRhcmdldDsKIH0KQEAgLTkzNiw3ICs5MzYsNyBAQCBQYXNzUmVmUHRyPExhYmVsPiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkoUmVnaXN0ZXJJRCog
Y29uZAogCiAgICAgZW1pdE9wY29kZShvcF9qbmVxX3B0cik7CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGNvbmQtPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX3Njb3Bl
Q2hhaW4tPmdsb2JhbE9iamVjdC0+YXBwbHlGdW5jdGlvbigpKTsKKyAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoSW5zdHJ1Y3Rpb24oKm1fZ2xvYmFsRGF0YSwgbV9jb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLCBtX3Njb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC0+YXBwbHlGdW5jdGlvbigpKSk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRhcmdldC0+YmluZChiZWdpbiwgaW5zdHJ1Y3Rp
b25zKCkuc2l6ZSgpKSk7CiAgICAgcmV0dXJuIHRhcmdldDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDM2OTVmMzk0NTM5
YTVjYzRlNTVhMjFlMGZlOWI0ZGE4Mjg1NzYwMTQuLjU2NmQ2M2Y2NzQ5MjM1NmExZDFmNDE4MGQz
NDAzYWI4N2RiYTljYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcApAQCAtMzUzNywxMCArMzUzNyw5IEBAIHNraXBfaWRfY3VzdG9t
X3NlbGY6CiAgICAgICAgICAgIHRvIHB0ciwgdXNpbmcgcG9pbnRlciBlcXVhbGl0eS4KICAgICAg
ICAgICovCiAgICAgICAgIGludCBzcmMgPSB2UENbMV0udS5vcGVyYW5kOwotICAgICAgICBKU1Zh
bHVlIHB0ciA9IEpTVmFsdWUodlBDWzJdLnUuanNDZWxsKTsKICAgICAgICAgaW50IHRhcmdldCA9
IHZQQ1szXS51Lm9wZXJhbmQ7CiAgICAgICAgIEpTVmFsdWUgc3JjVmFsdWUgPSBjYWxsRnJhbWUt
PnIoc3JjKS5qc1ZhbHVlKCk7Ci0gICAgICAgIGlmIChzcmNWYWx1ZSAhPSBwdHIpIHsKKyAgICAg
ICAgaWYgKHNyY1ZhbHVlICE9IHZQQ1syXS51LmpzQ2VsbC5nZXQoKSkgewogICAgICAgICAgICAg
dlBDICs9IHRhcmdldDsKICAgICAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggZmVlNjU0Njhm
Y2FmNDNhMGQ2Njk4ODEzZTE1M2Y0MzFiOGRjMGJiMi4uNjdjN2Y5NjUwYzVmZDEwN2RiYmYzMWU5
NjI2OWNhMTAwMTMwNmIwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCkBAIC03NjIsNyArNzYyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX3B0cihJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIHVuc2lnbmVkIHNyYyA9IGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgSlNDZWxsKiBwdHIgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5qc0NlbGw7CisgICAgSlNDZWxsKiBwdHIgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5qc0NlbGwuZ2V0KCk7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0gY3VycmVudElu
c3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAgICAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KHNyYywgcmVnVDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJf
NjQuY3BwCmluZGV4IGViZmQ3ODczNTkzN2QxMDEwNjVlOGMyZDQ0MjUzNzc1MThiZjU4MjYuLmRm
MjQwNGM5ZGRiODFhMjAyNTdiNDczOGE5MmE3NzI0N2NiZGU2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKQEAgLTk3OSw3ICs5NzksNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX251bGwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHZvaWQgSklUOjplbWl0X29wX2puZXFfcHRyKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgdW5zaWduZWQgc3JjID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZDsKLSAgICBKU0NlbGwqIHB0ciA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LmpzQ2VsbDsK
KyAgICBKU0NlbGwqIHB0ciA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LmpzQ2VsbC5nZXQoKTsK
ICAgICB1bnNpZ25lZCB0YXJnZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwog
CiAgICAgZW1pdExvYWQoc3JjLCByZWdUMSwgcmVnVDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA5MDU2N2ZjODViYmM2ZGM3ZGI2
Zjc1OWExMzE0OTE5NjVmZjZjYmI3Li4wMjRlNGY5YTBlMGJhNTdiMmNkN2EzNGMyNWExZDUwODFk
Y2M3NjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcApAQCAtOTc5LDggKzk3OSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5
SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpCiAKICAg
ICAvLyBUcmFjayB0aGUgc3R1YiB3ZSBoYXZlIGNyZWF0ZWQgc28gdGhhdCBpdCB3aWxsIGJlIGRl
bGV0ZWQgbGF0ZXIuCiAgICAgc3RydWN0dXJlLT5yZWYoKTsKLSAgICBjaGFpbi0+cmVmKCk7Ci0g
ICAgcHJvdG90eXBlU3RydWN0dXJlcy0+bGlzdFtjdXJyZW50SW5kZXhdLnNldChlbnRyeUxhYmVs
LCBzdHJ1Y3R1cmUsIGNoYWluKTsKKyAgICBwcm90b3R5cGVTdHJ1Y3R1cmVzLT5saXN0W2N1cnJl
bnRJbmRleF0uc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCksIGVudHJ5TGFiZWwsIHN0cnVjdHVyZSwgY2hhaW4pOwogCiAgICAgLy8gRmlu
YWxseSBwYXRjaCB0aGUganVtcCB0byBzbG93IGNhc2UgYmFjayBpbiB0aGUgaG90IHBhdGggdG8g
anVtcCBoZXJlIGluc3RlYWQuCiAgICAgQ29kZUxvY2F0aW9uSnVtcCBqdW1wTG9jYXRpb24gPSBz
dHViSW5mby0+aG90UGF0aEJlZ2luLmp1bXBBdE9mZnNldChwYXRjaE9mZnNldEdldEJ5SWRCcmFu
Y2hUb1Nsb3dDYXNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IDczNWMxOWQ3YTkxYjE2MGQyNjdiMDg5MzlhZjUw
M2I5ZTNlN2EyZjcuLjQ4MjUzZmY5ZGJiNGIzMjIzZGIyYmRlOGQwMGEyOWIwY2FlZDlmOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMy
XzY0LmNwcApAQCAtMTAwNyw4ICsxMDA3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGkKICAg
ICAKICAgICAvLyBUcmFjayB0aGUgc3R1YiB3ZSBoYXZlIGNyZWF0ZWQgc28gdGhhdCBpdCB3aWxs
IGJlIGRlbGV0ZWQgbGF0ZXIuCiAgICAgc3RydWN0dXJlLT5yZWYoKTsKLSAgICBjaGFpbi0+cmVm
KCk7Ci0gICAgcHJvdG90eXBlU3RydWN0dXJlcy0+bGlzdFtjdXJyZW50SW5kZXhdLnNldChlbnRy
eUxhYmVsLCBzdHJ1Y3R1cmUsIGNoYWluKTsKKyAgICBwcm90b3R5cGVTdHJ1Y3R1cmVzLT5saXN0
W2N1cnJlbnRJbmRleF0uc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCksIGVudHJ5TGFiZWwsIHN0cnVjdHVyZSwgY2hhaW4pOwogICAgIAog
ICAgIC8vIEZpbmFsbHkgcGF0Y2ggdGhlIGp1bXAgdG8gc2xvdyBjYXNlIGJhY2sgaW4gdGhlIGhv
dCBwYXRoIHRvIGp1bXAgaGVyZSBpbnN0ZWFkLgogICAgIENvZGVMb2NhdGlvbkp1bXAganVtcExv
Y2F0aW9uID0gc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5qdW1wQXRPZmZzZXQocGF0Y2hPZmZzZXRH
ZXRCeUlkQnJhbmNoVG9TbG93Q2FzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMu
Y3BwCmluZGV4IGEzOGYwMWUyMjMxNWQ3NWY3YTBiNThmYzUwZTM1MWE3MTBmOTYyZWIuLmU1MmM3
Yzg1Y2YxZGYzOWNmOGEyNmY3ZTc0ODU3NTg5MGZlZWNmOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YnMuY3BwCkBAIC0xNTUzLDcgKzE1NTMsNyBAQCBERUZJTkVfU1RVQl9GVU5D
VElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZ2V0X2J5X2lkX3NlbGZfZmFpbCkKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLXN0YXRpYyBQb2x5bW9ycGhpY0FjY2Vzc1N0
cnVjdHVyZUxpc3QqIGdldFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdFNsb3QoU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBpbnQmIGxpc3RJbmRleCkKK3N0YXRpYyBQb2x5bW9ycGhp
Y0FjY2Vzc1N0cnVjdHVyZUxpc3QqIGdldFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdFNs
b3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lciwgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBpbnQmIGxpc3RJbmRleCkKIHsKICAgICBQb2x5bW9y
cGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QgPSAwOwogICAg
IGxpc3RJbmRleCA9IDE7CkBAIC0xNTY1LDcgKzE1NjUsNyBAQCBzdGF0aWMgUG9seW1vcnBoaWNB
Y2Nlc3NTdHJ1Y3R1cmVMaXN0KiBnZXRQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTbG90
KFN0cgogICAgICAgICBzdHViSW5mby0+aW5pdEdldEJ5SWRQcm90b0xpc3QocHJvdG90eXBlU3Ry
dWN0dXJlTGlzdCwgMik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9p
ZF9jaGFpbjoKLSAgICAgICAgcHJvdG90eXBlU3RydWN0dXJlTGlzdCA9IG5ldyBQb2x5bW9ycGhp
Y0FjY2Vzc1N0cnVjdHVyZUxpc3Qoc3R1YkluZm8tPnN0dWJSb3V0aW5lLCBzdHViSW5mby0+dS5n
ZXRCeUlkQ2hhaW4uYmFzZU9iamVjdFN0cnVjdHVyZSwgc3R1YkluZm8tPnUuZ2V0QnlJZENoYWlu
LmNoYWluKTsKKyAgICAgICAgcHJvdG90eXBlU3RydWN0dXJlTGlzdCA9IG5ldyBQb2x5bW9ycGhp
Y0FjY2Vzc1N0cnVjdHVyZUxpc3QoZ2xvYmFsRGF0YSwgb3duZXIsIHN0dWJJbmZvLT5zdHViUm91
dGluZSwgc3R1YkluZm8tPnUuZ2V0QnlJZENoYWluLmJhc2VPYmplY3RTdHJ1Y3R1cmUsIHN0dWJJ
bmZvLT51LmdldEJ5SWRDaGFpbi5jaGFpbik7CiAgICAgICAgIHN0dWJJbmZvLT5zdHViUm91dGlu
ZSA9IENvZGVMb2NhdGlvbkxhYmVsKCk7CiAgICAgICAgIHN0dWJJbmZvLT5pbml0R2V0QnlJZFBy
b3RvTGlzdChwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCAyKTsKICAgICAgICAgYnJlYWs7CkBAIC0x
NjUzLDcgKzE2NTMsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3Bf
Z2V0X2J5X2lkX3Byb3RvX2xpc3QpCiAgICAgICAgIH0KIAogICAgICAgICBpbnQgbGlzdEluZGV4
OwotICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVj
dHVyZUxpc3QgPSBnZXRQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTbG90KHN0dWJJbmZv
LCBsaXN0SW5kZXgpOworICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBy
b3RvdHlwZVN0cnVjdHVyZUxpc3QgPSBnZXRQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RT
bG90KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LCBzdHViSW5mbywgbGlzdEluZGV4KTsKICAgICAgICAgaWYgKGxpc3RJbmRleCA8IFBPTFlNT1JQ
SElDX0xJU1RfQ0FDSEVfU0laRSkgewogICAgICAgICAgICAgSklUOjpjb21waWxlR2V0QnlJZFBy
b3RvTGlzdChjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsRGF0YSwgY2FsbEZyYW1lLCBj
b2RlQmxvY2ssIHN0dWJJbmZvLCBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBsaXN0SW5kZXgsIHN0
cnVjdHVyZSwgc2xvdEJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIHNsb3Qs
IG9mZnNldCk7CiAKQEAgLTE2NjMsNyArMTY2Myw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVu
Y29kZWRKU1ZhbHVlLCBvcF9nZXRfYnlfaWRfcHJvdG9fbGlzdCkKICAgICB9IGVsc2UgaWYgKHNp
emVfdCBjb3VudCA9IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGNhbGxGcmFtZSwgYmFzZVZhbHVl
LCBzbG90LnNsb3RCYXNlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KSkgewogICAgICAgICBBU1NF
UlQoIWJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKTsKICAg
ICAgICAgaW50IGxpc3RJbmRleDsKLSAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVM
aXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0ID0gZ2V0UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1
cmVMaXN0U2xvdChzdHViSW5mbywgbGlzdEluZGV4KTsKKyAgICAgICAgUG9seW1vcnBoaWNBY2Nl
c3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0ID0gZ2V0UG9seW1vcnBoaWNB
Y2Nlc3NTdHJ1Y3R1cmVMaXN0U2xvdChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSwgc3R1YkluZm8sIGxpc3RJbmRleCk7CiAgICAgICAgIAogICAg
ICAgICBpZiAobGlzdEluZGV4IDwgUE9MWU1PUlBISUNfTElTVF9DQUNIRV9TSVpFKSB7CiAgICAg
ICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogcHJvdG9DaGFpbiA9IHN0cnVjdHVyZS0+cHJvdG90eXBl
Q2hhaW4oY2FsbEZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5k
ZXggNDQ3NDg2Y2U1Y2M2ZTg1YTQzOTVmMDEyOWJhNDk5ZjUyNjlhZTA0OS4uYWE5N2I2NTAxYTU0
Nzk3MTI3ZjUyZTg3Y2Y1ZjU0NDEwMDQ4MDQyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmgKQEAgLTY2LDYgKzY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBNYXJrZWRTcGFjZTsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2Nr
OwogICAgICAgICBmcmllbmQgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CisgICAgICAgIGZyaWVuZCBj
bGFzcyBTdHJ1Y3R1cmVDaGFpbjsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IEpT
Q2VsbChTdHJ1Y3R1cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuY3BwCmluZGV4IDIxZDkyMTc3ZTE4NjE4ODlmNjlkMDkyZmY4MDc1ZmEwMzI0Y2Ew
NTcuLjBjMmQ2Mzg4YTVlZDdjOGNkOGVkMzA0MmE3YTFmNDE0Zjk2MWE1YTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcApAQCAtMTYzLDYgKzE2
Myw3IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlIGdsb2JhbERh
dGFUeXBlLCBUaHJlYWRTdGFja1R5cGUgdGhyZWFkCiAgICAgcHJvZ3JhbUV4ZWN1dGFibGVTdHJ1
Y3R1cmUgPSBQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBqc051bGwo
KSk7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlID0gRnVuY3Rpb25FeGVjdXRhYmxl
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKTsKICAgICBkdW1teU1hcmthYmxlQ2Vs
bFN0cnVjdHVyZSA9IEpTQ2VsbDo6Y3JlYXRlRHVtbXlTdHJ1Y3R1cmUoKnRoaXMpOworICAgIHN0
cnVjdHVyZUNoYWluU3RydWN0dXJlID0gU3RydWN0dXJlQ2hhaW46OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywganNOdWxsKCkpOwogCiAgICAgaW50ZXJwcmV0ZXIgPSBuZXcgSW50ZXJwcmV0ZXIoKnRo
aXMpOwogICAgIGlmIChnbG9iYWxEYXRhVHlwZSA9PSBEZWZhdWx0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAppbmRleCAyOGJkYWRlMTIxMWNiYWJmN2Nm
MTE4ODVhMWVkOGRjZTI2MDY3MzgwLi4zNGVhNzVkNjEyMWI2ZDM1MGM4ZTMxYTA0ZmI4ZTMzNDgz
YTkwMTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
aApAQCAtMTYxLDYgKzE2MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWZQdHI8U3Ry
dWN0dXJlPiBwcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZTsKICAgICAgICAgUmVmUHRyPFN0cnVj
dHVyZT4gZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlOwogICAgICAgICBSZWZQdHI8U3RydWN0
dXJlPiBkdW1teU1hcmthYmxlQ2VsbFN0cnVjdHVyZTsKKyAgICAgICAgUmVmUHRyPFN0cnVjdHVy
ZT4gc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmU7CiAKICAgICAgICAgc3RhdGljIHZvaWQgc3RvcmVW
UHRycygpOwogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSB2b2lkKiBqc0FycmF5VlB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApp
bmRleCBhZGUwNTRiMWJlMzU4NDFmZGY1Y2RmZmZhMjM5ZDNmYWI5MjY2ZDliLi4wZWI3YTEwZTdk
NmRmZTBlMTdhNDZiNTA2Zjg1OTI0MDIzNmM5OGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC04OCw2ICs4OCw4IEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCBtYXJrSWZOZWVkZWQoTWFya1N0YWNrJiBtYXJrU3RhY2ssIGNvbnN0IFJl
ZlB0cjxTdHJ1Y3R1cmU+JiBzCiB7CiAgICAgaWYgKHMgJiYgcy0+c3RvcmVkUHJvdG90eXBlKCkp
CiAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQocy0+c3RvcmVkUHJvdG90eXBlU2xvdCgpKTsKKyAg
ICBpZiAocyAmJiAqcy0+Y2FjaGVkUHJvdG90eXBlQ2hhaW5TbG90KCkpCisgICAgICAgIG1hcmtT
dGFjay5hcHBlbmQocy0+Y2FjaGVkUHJvdG90eXBlQ2hhaW5TbG90KCkpOwogfQogCiBKU0dsb2Jh
bE9iamVjdDo6fkpTR2xvYmFsT2JqZWN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDU2ZWVhNjMyMjY3ZjQ3ZWEyZTc0NjE4N2Y4YjNi
Y2YyZjk0OGY2ODkuLjIyMzQ4YzEwNGMwZTFlMDUxZmYwMThhMDJlOWVkMzM0OGNlOWFmYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAt
MjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkpTV2Vha09iamVjdE1hcFJlZkludGVybmFsLmgiCiAj
aW5jbHVkZSAiTnVtYmVyUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiU3RyaW5nUHJvdG90eXBlLmgi
CisjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CkBA
IC0zNjIsNyArMzYzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIFdlIGNhY2hlIG91
ciBwcm90b3R5cGUgY2hhaW4gc28gb3VyIGNsaWVudHMgY2FuIHNoYXJlIGl0LgogICAgICAgICBp
ZiAoIWlzVmFsaWQoZXhlYywgbV9jYWNoZWRQcm90b3R5cGVDaGFpbi5nZXQoKSkpIHsKICAgICAg
ICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gcHJvdG90eXBlRm9yTG9va3VwKGV4ZWMpOwotICAg
ICAgICAgICAgbV9jYWNoZWRQcm90b3R5cGVDaGFpbiA9IFN0cnVjdHVyZUNoYWluOjpjcmVhdGUo
cHJvdG90eXBlLmlzTnVsbCgpID8gMCA6IGFzT2JqZWN0KHByb3RvdHlwZSktPnN0cnVjdHVyZSgp
KTsKKyAgICAgICAgICAgIG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4gPSBTdHJ1Y3R1cmVDaGFpbjo6
Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvdG90eXBlLmlzTnVsbCgpID8gMCA6IGFzT2Jq
ZWN0KHByb3RvdHlwZSktPnN0cnVjdHVyZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
bV9jYWNoZWRQcm90b3R5cGVDaGFpbi5nZXQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA2NmFjMmQ2YmExNjIxNzM2MzdmN2IzOTIxMGU2MzUw
NTY4OTAwZjg2Li41NTlhYTZkMGJjNDhjYmQzODNjNjRmMjdkZTMyZGI3N2Y0YjIwZjY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTgxNCw4ICs4MTQsMTAg
QEAgaW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogQUxXQVlTX0lOTElORSB2b2lkIEpTT2JqZWN0Ojpt
YXJrQ2hpbGRyZW5EaXJlY3QoTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAgSlNDZWxsOjpt
YXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKLQorICAgIAogICAgIG1hcmtTdGFjay5hcHBlbmQobV9z
dHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZVNsb3QoKSk7CisgICAgaWYgKCptX3N0cnVjdHVyZS0+
Y2FjaGVkUHJvdG90eXBlQ2hhaW5TbG90KCkpCisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQobV9z
dHJ1Y3R1cmUtPmNhY2hlZFByb3RvdHlwZUNoYWluU2xvdCgpKTsKICAgICBQcm9wZXJ0eVN0b3Jh
Z2Ugc3RvcmFnZSA9IHByb3BlcnR5U3RvcmFnZSgpOwogICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9
IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCk7CiAgICAgbWFya1N0YWNrLmFwcGVu
ZFZhbHVlcyhzdG9yYWdlLCBzdG9yYWdlU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCmluZGV4IDBkNzU5
Y2ZjMTVjOWQyYmU5YjAwYzg1Y2FkNjRiMWUyOTY4MDVlMGEuLjZmMzFmOTk5ZDcwOTVkY2M1Y2Y2
ZDNkMDZjYzMyZDI4NjhlYjI4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCkBAIC03Nyw3ICs3Nyw3IEBA
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0CiAgICAgICAgICAgICByZXR1cm4ganNQcm9wZXJ0eU5h
bWVJdGVyYXRvcjsKICAgICB9CiAKLSAgICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5zZXRDYWNo
ZWRQcm90b3R5cGVDaGFpbihzdHJ1Y3R1cmVDaGFpbik7CisgICAganNQcm9wZXJ0eU5hbWVJdGVy
YXRvci0+c2V0Q2FjaGVkUHJvdG90eXBlQ2hhaW4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1
cmVDaGFpbik7CiAgICAganNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+c2V0Q2FjaGVkU3RydWN0dXJl
KG8tPnN0cnVjdHVyZSgpKTsKICAgICBvLT5zdHJ1Y3R1cmUoKS0+c2V0RW51bWVyYXRpb25DYWNo
ZShleGVjLT5nbG9iYWxEYXRhKCksIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IpOwogICAgIHJldHVy
biBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yOwpAQCAtODYsNyArODYsNyBAQCBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdAogSlNWYWx1ZSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpnZXQoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogYmFzZSwgc2l6ZV90IGkpCiB7CiAgICAgSlNWYWx1ZSBpZGVudGlm
aWVyID0gbV9qc1N0cmluZ3NbaV0uZ2V0KCk7Ci0gICAgaWYgKG1fY2FjaGVkU3RydWN0dXJlID09
IGJhc2UtPnN0cnVjdHVyZSgpICYmIG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4gPT0gYmFzZS0+c3Ry
dWN0dXJlKCktPnByb3RvdHlwZUNoYWluKGV4ZWMpKQorICAgIGlmIChtX2NhY2hlZFN0cnVjdHVy
ZSA9PSBiYXNlLT5zdHJ1Y3R1cmUoKSAmJiBtX2NhY2hlZFByb3RvdHlwZUNoYWluLmdldCgpID09
IGJhc2UtPnN0cnVjdHVyZSgpLT5wcm90b3R5cGVDaGFpbihleGVjKSkKICAgICAgICAgcmV0dXJu
IGlkZW50aWZpZXI7CiAKICAgICBpZiAoIWJhc2UtPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZp
ZXIoZXhlYywgYXNTdHJpbmcoaWRlbnRpZmllciktPnZhbHVlKGV4ZWMpKSkpCkBAIC05Nyw2ICs5
Nyw4IEBAIEpTVmFsdWUgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Z2V0KEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIGJhc2UsIHNpemVfdCBpKQogdm9pZCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
OjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAgbWFya1N0YWNrLmFw
cGVuZFZhbHVlcyhtX2pzU3RyaW5ncy5nZXQoKSwgbV9qc1N0cmluZ3NTaXplLCBNYXlDb250YWlu
TnVsbFZhbHVlcyk7CisgICAgaWYgKG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4pCisgICAgICAgIG1h
cmtTdGFjay5hcHBlbmQoJm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4pOwogfQogCiAjaWYgIUFTU0VS
VF9ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oCmluZGV4IDhiMDA3ZGQ3NjdmNjQ2NGIxNDM4MTk5ZTRmYTYx
ODVlNGQzMmFkMDEuLjQ5OTM5NmNjNTg3ODM4ODM3MDZiMzI0ZGI2MTQ0NmMxMjVlMTc2M2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgKQEAgLTczLDcgKzczLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0K
ICAgICAgICAgU3RydWN0dXJlKiBjYWNoZWRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2NhY2hlZFN0
cnVjdHVyZS5nZXQoKTsgfQogCi0gICAgICAgIHZvaWQgc2V0Q2FjaGVkUHJvdG90eXBlQ2hhaW4o
Tm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlQ2hhaW4+IGNhY2hlZFByb3RvdHlwZUNoYWluKSB7
IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4gPSBjYWNoZWRQcm90b3R5cGVDaGFpbjsgfQorICAgICAg
ICB2b2lkIHNldENhY2hlZFByb3RvdHlwZUNoYWluKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
U3RydWN0dXJlQ2hhaW4qIGNhY2hlZFByb3RvdHlwZUNoYWluKSB7IG1fY2FjaGVkUHJvdG90eXBl
Q2hhaW4uc2V0KGdsb2JhbERhdGEsIHRoaXMsIGNhY2hlZFByb3RvdHlwZUNoYWluKTsgfQogICAg
ICAgICBTdHJ1Y3R1cmVDaGFpbiogY2FjaGVkUHJvdG90eXBlQ2hhaW4oKSB7IHJldHVybiBtX2Nh
Y2hlZFByb3RvdHlwZUNoYWluLmdldCgpOyB9CiAKICAgICBwcml2YXRlOgpAQCAtODQsNyArODQs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogCiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+
IG1fY2FjaGVkU3RydWN0dXJlOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlQ2hhaW4+IG1fY2Fj
aGVkUHJvdG90eXBlQ2hhaW47CisgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmVDaGFpbj4g
bV9jYWNoZWRQcm90b3R5cGVDaGFpbjsKICAgICAgICAgdWludDMyX3QgbV9udW1DYWNoZWFibGVT
bG90czsKICAgICAgICAgdWludDMyX3QgbV9qc1N0cmluZ3NTaXplOwogICAgICAgICBPd25BcnJh
eVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiBtX2pzU3RyaW5nczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtTdGFjay5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTWFya1N0YWNrLmgKaW5kZXggZGVlNGYzNDIwY2U2MTU2MGQ4MTkwMGZi
MDg0MjE0YzY0YTZkNTdlYS4uNzEzMTkxN2Y2NWQ0YjQ2YjkwMzFhMDY4OGY0N2Y5OTZkZDIzN2Zi
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya1N0YWNrLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya1N0YWNrLmgKQEAgLTIxNSwx
MiArMjE1LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGlubGluZSB2b2lkIE1hcmtTdGFjazo6YXBwZW5kKERlcHJlY2F0ZWRQdHI8VD4qIHNsb3QpCiAg
ICAgewotICAgICAgICBpbnRlcm5hbEFwcGVuZChzbG90LT5nZXQoKSk7CisgICAgICAgIGludGVy
bmFsQXBwZW5kKCpzbG90LT5zbG90KCkpOwogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gaW5saW5lIHZvaWQgTWFya1N0YWNrOjphcHBlbmQoV3JpdGVCYXJyaWVyQmFzZTxU
Piogc2xvdCkKICAgICB7Ci0gICAgICAgIGludGVybmFsQXBwZW5kKHNsb3QtPmdldCgpKTsKKyAg
ICAgICAgaW50ZXJuYWxBcHBlbmQoKnNsb3QtPnNsb3QoKSk7CiAgICAgfQogCiAgICAgQUxXQVlT
X0lOTElORSB2b2lkIE1hcmtTdGFjazo6ZGVwcmVjYXRlZEFwcGVuZChKU0NlbGwqKiB2YWx1ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggNmY3MDYwYmYx
YWFkYzI0MDNmOTcwYzUxZGU4ZWIyNjg1MGE0NDUyZi4uYzlmOTAwYTU4NWNkMDJjZTcxZWJlMWZi
NTk3ZDU4Y2ZlZTZmYjVkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5o
IgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSAiUHJvdGVjdC5oIgot
I2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlLmgiCiAjaW5jbHVkZSAiSlNUeXBlSW5mby5oIgogI2luY2x1ZGUgIlVTdHJpbmcuaCIK
QEAgLTQ2LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgTWFya1N0YWNrOwog
ICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5
RGF0YTsKKyAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKIAogICAgIHN0cnVjdCBDbGFzc0luZm87
CiAKQEAgLTEwNyw2ICsxMDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRGVwcmVjYXRl
ZFB0cjxVbmtub3duPiogc3RvcmVkUHJvdG90eXBlU2xvdCgpIHsgcmV0dXJuICZtX3Byb3RvdHlw
ZTsgfQogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZUZvckxvb2t1cChFeGVjU3RhdGUqKSBjb25z
dDsKICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIHByb3RvdHlwZUNoYWluKEV4ZWNTdGF0ZSopIGNv
bnN0OworICAgICAgICBEZXByZWNhdGVkUHRyPFN0cnVjdHVyZUNoYWluPiogY2FjaGVkUHJvdG90
eXBlQ2hhaW5TbG90KCkgeyByZXR1cm4gJm1fY2FjaGVkUHJvdG90eXBlQ2hhaW47IH0KIAogICAg
ICAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzSUQoKSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzLmdl
dCgpOyB9CiAKQEAgLTIxMCw3ICsyMTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVHlw
ZUluZm8gbV90eXBlSW5mbzsKIAogICAgICAgICBEZXByZWNhdGVkUHRyPFVua25vd24+IG1fcHJv
dG90eXBlOwotICAgICAgICBtdXRhYmxlIFJlZlB0cjxTdHJ1Y3R1cmVDaGFpbj4gbV9jYWNoZWRQ
cm90b3R5cGVDaGFpbjsKKyAgICAgICAgbXV0YWJsZSBEZXByZWNhdGVkUHRyPFN0cnVjdHVyZUNo
YWluPiBtX2NhY2hlZFByb3RvdHlwZUNoYWluOwogCiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+
IG1fcHJldmlvdXM7CiAgICAgICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBtX25hbWVJblByZXZpb3Vz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hh
aW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3Bw
CmluZGV4IGU0NTIzYzNhNjg5M2Q1ZGRiNmQ5ZmU1ODU3M2U5NGFjZTk1OGQ5NWIuLjRmYTRhNGI4
ZTUwMWJhNzhhMGYyZTdmMzYzODAyZWRlMzNiYmRmNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKQEAgLTMyLDcgKzMyLDggQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLVN0cnVjdHVyZUNoYWluOjpTdHJ1Y3R1cmVDaGFpbihTdHJ1Y3R1
cmUqIGhlYWQpCitTdHJ1Y3R1cmVDaGFpbjo6U3RydWN0dXJlQ2hhaW4oTm9uTnVsbFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogaGVhZCkKKyAgICA6IEpTQ2VsbChz
dHJ1Y3R1cmUucmVsZWFzZVJlZigpKQogewogICAgIHNpemVfdCBzaXplID0gMDsKICAgICBmb3Ig
KFN0cnVjdHVyZSogY3VycmVudCA9IGhlYWQ7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5z
dG9yZWRQcm90b3R5cGUoKS5pc051bGwoKSA/IDAgOiBhc09iamVjdChjdXJyZW50LT5zdG9yZWRQ
cm90b3R5cGUoKSktPnN0cnVjdHVyZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUNoYWluLmgKaW5kZXggODE2YjY2ZDUwNTE1NTBiY2ViMmI0ZWZhMjdlNTE0
MTllMmQ5YTMzZi4uODg1OTJkYzcwMTZiOWI0MGY0ODQ5ZWIzMjBlNzEyMmY3OTQ4NmZjMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCkBAIC0y
Niw2ICsyNiw4IEBACiAjaWZuZGVmIFN0cnVjdHVyZUNoYWluX2gKICNkZWZpbmUgU3RydWN0dXJl
Q2hhaW5faAogCisjaW5jbHVkZSAiSlNDZWxsLmgiCisKICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CkBAIC0zNSwxNSArMzcsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBT
dHJ1Y3R1cmU7CiAKLSAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbiA6IHB1YmxpYyBSZWZDb3VudGVk
PFN0cnVjdHVyZUNoYWluPiB7CisgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW4gOiBwdWJsaWMgSlND
ZWxsIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKIAogICAgIHB1YmxpYzoKLSAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlQ2hhaW4+IGNyZWF0ZShTdHJ1Y3R1cmUqIGhlYWQp
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHJ1Y3R1cmVDaGFpbihoZWFkKSk7IH0KKyAgICAgICAg
c3RhdGljIFN0cnVjdHVyZUNoYWluKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBT
dHJ1Y3R1cmUqIGhlYWQpIHsgcmV0dXJuIG5ldyAoJmdsb2JhbERhdGEpIFN0cnVjdHVyZUNoYWlu
KGdsb2JhbERhdGEuc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUsIGhlYWQpOyB9CiAgICAgICAgIFJl
ZlB0cjxTdHJ1Y3R1cmU+KiBoZWFkKCkgeyByZXR1cm4gbV92ZWN0b3IuZ2V0KCk7IH0KIAorICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKSB7IHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgT3Zl
cnJpZGVzTWFya0NoaWxkcmVuKSwgMCwgMCk7IH0KICAgICBwcml2YXRlOgotICAgICAgICBTdHJ1
Y3R1cmVDaGFpbihTdHJ1Y3R1cmUqIGhlYWQpOworICAgICAgICBTdHJ1Y3R1cmVDaGFpbihOb25O
dWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBTdHJ1Y3R1cmUqIGhlYWQpOwogCiAgICAgICAgIE93
bkFycmF5UHRyPFJlZlB0cjxTdHJ1Y3R1cmU+ID4gbV92ZWN0b3I7CiAgICAgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86291</attachid>
            <date>2011-03-20 20:01:19 -0700</date>
            <delta_ts>2011-04-01 17:13:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56695-20110320200118.patch</filename>
            <type>text/plain</type>
            <size>34924</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE1NjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDUy
NzdhZTNhMjcyZmVkNjlkNjE4Yjg5N2ExMDBkNTJhNzZkMTBiMzUuLjAyOTQxNzc5YWY0OWQxZTcz
MzdmOTNhMGQ0YjYwMDliMjA5YmEzYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDcyIEBACisyMDExLTAzLTE5ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBTdHJ1
Y3R1cmVDaGFpbiBHQyBhbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU2Njk1CisKKyAgICAgICAgTWFrZSBTdHJ1Y3R1cmVDaGFpbiBHQyBh
bGxvY2F0ZWQsIGFuZCBtYWtlIHRoZSB2YXJpb3VzIG93bmVycworICAgICAgICBtYXJrIGl0IGNv
cnJlY3RseS4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZGVyZWZTdHJ1
Y3R1cmVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpyZWZTdHJ1Y3R1cmVzKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjptYXJrQWdncmVnYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9J
bnN0cnVjdGlvbi5oOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxp
c3Q6OlBvbHltb3JwaGljU3R1YkluZm86OnNldCk6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGlj
QWNjZXNzU3RydWN0dXJlTGlzdDo6UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KToKKyAg
ICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0OjpkZXJlZlN0cnVjdHVy
ZXMpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Q6Om1hcmtB
Z2dyZWdhdGUpOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvbjo6SW5zdHJ1Y3Rpb24pOgorICAg
ICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlU3R1YkluZm86OmRlcmVmKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86
Om1hcmtBZ2dyZWdhdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmg6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjppbml0R2V0QnlJZENoYWluKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmluaXRQdXRCeUlkVHJhbnNpdGlvbik6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkNhbGwpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkpOgor
ICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX3B0cik6CisgICAgICAgICogaml0L0pJ
VE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX3B0cik6
CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
Ojpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAqIGppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdl
dEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChK
U0M6OmdldFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdFNsb3QpOgorICAgICAgICAoSlND
OjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
RGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjptYXJr
SWZOZWVkZWQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpwcm90b3R5cGVDaGFpbik6CisgICAgICAgICogcnVudGltZS9KU09i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6bWFya0NoaWxkcmVuRGlyZWN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yOjpnZXQpOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjptYXJrQ2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpzZXRDYWNoZWRQ
cm90b3R5cGVDaGFpbik6CisgICAgICAgICogcnVudGltZS9NYXJrU3RhY2suaDoKKyAgICAgICAg
KEpTQzo6TWFya1N0YWNrOjphcHBlbmQpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y2FjaGVkUHJvdG90eXBlQ2hhaW5TbG90KToKKyAg
ICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlQ2hhaW46OlN0cnVjdHVyZUNoYWluKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNo
YWluLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNoYWluOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlU3RydWN0dXJlKToKKwogMjAxMS0wMy0yMCAgQmls
bCBCdWRnZSAgPGJidWRnZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRh
bSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
aW5kZXggMGEwY2Y4NDRkZDQyODk2MThlYThjYTNiMTQ1ZDk0NjJkNGQ4Nzc0YS4uOThiYmIzYzQw
NzM0YzRmYzliN2I2YmI4MjEzMjljODRjY2NkYzc2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTczMSw3ICs3MzEsNyBAQCB2b2lkIENvZGVC
bG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFZlY3RvcjxJbnN0cnVjdGlvbj46OmNv
bnN0X2l0ZXJhdG9yJgogICAgICAgICBjYXNlIG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWM6IHsK
ICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50
IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgSlNWYWx1ZSBzY29wZSA9IEpT
VmFsdWUoKCsraXQpLT51LmpzQ2VsbCk7CisgICAgICAgICAgICBKU1ZhbHVlIHNjb3BlID0gSlNW
YWx1ZSgoKytpdCktPnUuanNDZWxsLmdldCgpKTsKICAgICAgICAgICAgICsraXQ7CiAgICAgICAg
ICAgICBpbnQgZGVwdGggPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIHByaW50Zigi
WyU0ZF0gcmVzb2x2ZV9nbG9iYWxfZHluYW1pY1x0ICVzLCAlcywgJXMsICVkXG4iLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHZhbHVlVG9Tb3VyY2VTdHJpbmcoZXhl
Yywgc2NvcGUpLnV0ZjgoKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSku
ZGF0YSgpLCBkZXB0aCk7CkBAIC0xNDM3LDEzICsxNDM3LDExIEBAIHZvaWQgQ29kZUJsb2NrOjpk
ZXJlZlN0cnVjdHVyZXMoSW5zdHJ1Y3Rpb24qIHZQQykgY29uc3QKICAgICB9CiAgICAgaWYgKHZQ
Q1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9jaGFp
bikgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5
X2lkX2dldHRlcl9jaGFpbikgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRP
cGNvZGUob3BfZ2V0X2J5X2lkX2N1c3RvbV9jaGFpbikpIHsKICAgICAgICAgdlBDWzRdLnUuc3Ry
dWN0dXJlLT5kZXJlZigpOwotICAgICAgICB2UENbNV0udS5zdHJ1Y3R1cmVDaGFpbi0+ZGVyZWYo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGlu
dGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24pKSB7CiAgICAgICAg
IHZQQ1s0XS51LnN0cnVjdHVyZS0+ZGVyZWYoKTsKICAgICAgICAgdlBDWzVdLnUuc3RydWN0dXJl
LT5kZXJlZigpOwotICAgICAgICB2UENbNl0udS5zdHJ1Y3R1cmVDaGFpbi0+ZGVyZWYoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJl
dGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX3JlcGxhY2UpKSB7CkBAIC0xNDg2LDEzICsxNDg0
LDExIEBAIHZvaWQgQ29kZUJsb2NrOjpyZWZTdHJ1Y3R1cmVzKEluc3RydWN0aW9uKiB2UEMpIGNv
bnN0CiAgICAgfQogICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9w
Y29kZShvcF9nZXRfYnlfaWRfY2hhaW4pIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRl
ci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9nZXR0ZXJfY2hhaW4pIHx8IHZQQ1swXS51Lm9wY29k
ZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9jdXN0b21fY2hhaW4pKSB7
CiAgICAgICAgIHZQQ1s0XS51LnN0cnVjdHVyZS0+cmVmKCk7Ci0gICAgICAgIHZQQ1s1XS51LnN0
cnVjdHVyZUNoYWluLT5yZWYoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodlBD
WzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX3RyYW5z
aXRpb24pKSB7CiAgICAgICAgIHZQQ1s0XS51LnN0cnVjdHVyZS0+cmVmKCk7CiAgICAgICAgIHZQ
Q1s1XS51LnN0cnVjdHVyZS0+cmVmKCk7Ci0gICAgICAgIHZQQ1s2XS51LnN0cnVjdHVyZUNoYWlu
LT5yZWYoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodlBDWzBdLnUub3Bjb2Rl
ID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX3JlcGxhY2UpKSB7CkBAIC0x
NTI3LDYgKzE1MjMsMjAgQEAgdm9pZCBDb2RlQmxvY2s6Om1hcmtBZ2dyZWdhdGUoTWFya1N0YWNr
JiBtYXJrU3RhY2spCiAgICAgICAgIGlmIChjYWxsTGlua0luZm8oaSkuaXNMaW5rZWQoKSkKICAg
ICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJmNhbGxMaW5rSW5mbyhpKS5jYWxsZWUpOwogI2Vu
ZGlmCisjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQorICAgIEludGVycHJldGVyKiBpbnRlcnByZXRl
ciA9IG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXI7CisgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1f
cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkg
eworICAgICAgICBJbnN0cnVjdGlvbiogdlBDID0gJm1faW5zdHJ1Y3Rpb25zW21fcHJvcGVydHlB
Y2Nlc3NJbnN0cnVjdGlvbnNbaV1dOworICAgICAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGlu
dGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2NoYWluKSB8fCB2UENbMF0udS5vcGNv
ZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfZ2V0dGVyX2NoYWluKSB8
fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRf
Y3VzdG9tX2NoYWluKSkKKyAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnZQQ1s1XS51LnN0
cnVjdHVyZUNoYWluKTsKKyAgICAgICAgZWxzZSBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVy
cHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24pKQorICAgICAgICAgICAg
bWFya1N0YWNrLmFwcGVuZCgmdlBDWzZdLnUuc3RydWN0dXJlQ2hhaW4pOworICAgIH0KKyNlbmRp
ZgorI2lmIEVOQUJMRShKSVQpCisgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fc3RydWN0dXJlU3R1
YkluZm9zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIG1fc3RydWN0dXJl
U3R1YkluZm9zW2ldLm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKKyNlbmRpZgogfQogCiBIYW5k
bGVySW5mbyogQ29kZUJsb2NrOjpoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5zdHJ1Y3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlv
bi5oCmluZGV4IGYwNzdjYmZmNTgzYzYzZjVhYjhjMWY1MDM1NTljYjEzOWZmNDBlNDguLmRhMDgy
MWRhYjM2Yzc2YTQ5OTZmYTNhZmFiNmVmNTE3Mjk3YTM1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCkBAIC02Myw3ICs2Myw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgU3RydWN0dXJlKiBiYXNlOwogICAgICAgICAgICAgdW5pb24g
ewogICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogcHJvdG87Ci0gICAgICAgICAgICAgICAgU3Ry
dWN0dXJlQ2hhaW4qIGNoYWluOworICAgICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3Ry
dWN0dXJlQ2hhaW4+IGNoYWluOwogICAgICAgICAgICAgfSB1OwogCiAgICAgICAgICAgICB2b2lk
IHNldChQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTdHViUm91dGluZVR5cGUgX3N0dWJS
b3V0aW5lLCBTdHJ1Y3R1cmUqIF9iYXNlKQpAQCAtODIsMTEgKzgyLDExIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgICAgIGlzQ2hhaW4gPSBmYWxzZTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIAotICAgICAgICAgICAgdm9pZCBzZXQoUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1
cmVMaXN0U3R1YlJvdXRpbmVUeXBlIF9zdHViUm91dGluZSwgU3RydWN0dXJlKiBfYmFzZSwgU3Ry
dWN0dXJlQ2hhaW4qIF9jaGFpbikKKyAgICAgICAgICAgIHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0
U3R1YlJvdXRpbmVUeXBlIF9zdHViUm91dGluZSwgU3RydWN0dXJlKiBfYmFzZSwgU3RydWN0dXJl
Q2hhaW4qIF9jaGFpbikKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBzdHViUm91dGlu
ZSA9IF9zdHViUm91dGluZTsKICAgICAgICAgICAgICAgICBiYXNlID0gX2Jhc2U7Ci0gICAgICAg
ICAgICAgICAgdS5jaGFpbiA9IF9jaGFpbjsKKyAgICAgICAgICAgICAgICB1LmNoYWluLnNldChn
bG9iYWxEYXRhLCBvd25lciwgX2NoYWluKTsKICAgICAgICAgICAgICAgICBpc0NoYWluID0gdHJ1
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBsaXN0W1BPTFlNT1JQSElDX0xJU1RfQ0FDSEVf
U0laRV07CkBAIC0xMDEsOSArMTAxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBs
aXN0WzBdLnNldChzdHViUm91dGluZSwgZmlyc3RCYXNlLCBmaXJzdFByb3RvKTsKICAgICAgICAg
fQogCi0gICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdChQb2x5bW9ycGhpY0Fj
Y2Vzc1N0cnVjdHVyZUxpc3RTdHViUm91dGluZVR5cGUgc3R1YlJvdXRpbmUsIFN0cnVjdHVyZSog
Zmlyc3RCYXNlLCBTdHJ1Y3R1cmVDaGFpbiogZmlyc3RDaGFpbikKKyAgICAgICAgUG9seW1vcnBo
aWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBv
d25lciwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U3R1YlJvdXRpbmVUeXBlIHN0dWJS
b3V0aW5lLCBTdHJ1Y3R1cmUqIGZpcnN0QmFzZSwgU3RydWN0dXJlQ2hhaW4qIGZpcnN0Q2hhaW4p
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGxpc3RbMF0uc2V0KHN0dWJSb3V0aW5lLCBmaXJzdEJh
c2UsIGZpcnN0Q2hhaW4pOworICAgICAgICAgICAgbGlzdFswXS5zZXQoZ2xvYmFsRGF0YSwgb3du
ZXIsIHN0dWJSb3V0aW5lLCBmaXJzdEJhc2UsIGZpcnN0Q2hhaW4pOwogICAgICAgICB9CiAKICAg
ICAgICAgdm9pZCBkZXJlZlN0cnVjdHVyZXMoaW50IGNvdW50KQpAQCAtMTE1LDEzICsxMTUsMjIg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgaW5mby5iYXNlLT5kZXJlZigpOwog
CiAgICAgICAgICAgICAgICAgaWYgKGluZm8udS5wcm90bykgewotICAgICAgICAgICAgICAgICAg
ICBpZiAoaW5mby5pc0NoYWluKQotICAgICAgICAgICAgICAgICAgICAgICAgaW5mby51LmNoYWlu
LT5kZXJlZigpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IGlmICghaW5mby5pc0NoYWluKQogICAgICAgICAgICAgICAgICAgICAgICAgaW5mby51LnByb3Rv
LT5kZXJlZigpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQor
CisgICAgICAgIHZvaWQgbWFya0FnZ3JlZ2F0ZShNYXJrU3RhY2smIG1hcmtTdGFjaywgaW50IGNv
dW50KQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyAr
K2kpIHsKKyAgICAgICAgICAgICAgICBQb2x5bW9ycGhpY1N0dWJJbmZvJiBpbmZvID0gbGlzdFtp
XTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoaW5mby5iYXNlKTsKKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICBpZiAoaW5mby51LnByb3RvICYmIGluZm8uaXNDaGFpbikKKyAgICAg
ICAgICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmaW5mby51LmNoYWluKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQogICAgIH07CiAKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb24gewpAQCAt
MTMwLDcgKzEzOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2lmICFFTkFCTEUoQ09NUFVURURfR09U
T19JTlRFUlBSRVRFUikKICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gaW5pdGlhbGl6ZSBvbmUg
b2YgdGhlIHBvaW50ZXIgbWVtYmVycyB0byBlbnN1cmUgdGhhdAogICAgICAgICAgICAgLy8gdGhl
IGVudGlyZSBzdHJ1Y3QgaXMgaW5pdGlhbGl6ZWQsIHdoZW4gb3Bjb2RlIGlzIG5vdCBhIHBvaW50
ZXIuCi0gICAgICAgICAgICB1LmpzQ2VsbCA9IDA7CisgICAgICAgICAgICB1LmpzQ2VsbC5jbGVh
cigpOwogI2VuZGlmCiAgICAgICAgICAgICB1Lm9wY29kZSA9IG9wY29kZTsKICAgICAgICAgfQpA
QCAtMTM5LDEzICsxNDgsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAg
ICAgIC8vIFdlIGhhdmUgdG8gaW5pdGlhbGl6ZSBvbmUgb2YgdGhlIHBvaW50ZXIgbWVtYmVycyB0
byBlbnN1cmUgdGhhdAogICAgICAgICAgICAgLy8gdGhlIGVudGlyZSBzdHJ1Y3QgaXMgaW5pdGlh
bGl6ZWQgaW4gNjQtYml0LgotICAgICAgICAgICAgdS5qc0NlbGwgPSAwOworICAgICAgICAgICAg
dS5qc0NlbGwuY2xlYXIoKTsKICAgICAgICAgICAgIHUub3BlcmFuZCA9IG9wZXJhbmQ7CiAgICAg
ICAgIH0KIAogICAgICAgICBJbnN0cnVjdGlvbihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeyB1LnN0
cnVjdHVyZSA9IHN0cnVjdHVyZTsgfQotICAgICAgICBJbnN0cnVjdGlvbihTdHJ1Y3R1cmVDaGFp
biogc3RydWN0dXJlQ2hhaW4pIHsgdS5zdHJ1Y3R1cmVDaGFpbiA9IHN0cnVjdHVyZUNoYWluOyB9
Ci0gICAgICAgIEluc3RydWN0aW9uKEpTQ2VsbCoganNDZWxsKSB7IHUuanNDZWxsID0ganNDZWxs
OyB9CisgICAgICAgIEluc3RydWN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxs
KiBvd25lciwgU3RydWN0dXJlQ2hhaW4qIHN0cnVjdHVyZUNoYWluKQorICAgICAgICB7CisgICAg
ICAgICAgICB1LnN0cnVjdHVyZUNoYWluLmNsZWFyKCk7CisgICAgICAgICAgICB1LnN0cnVjdHVy
ZUNoYWluLnNldChnbG9iYWxEYXRhLCBvd25lciwgc3RydWN0dXJlQ2hhaW4pOworICAgICAgICB9
CisgICAgICAgIEluc3RydWN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBv
d25lciwgSlNDZWxsKiBqc0NlbGwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHUuanNDZWxsLmNs
ZWFyKCk7CisgICAgICAgICAgICB1LmpzQ2VsbC5zZXQoZ2xvYmFsRGF0YSwgb3duZXIsIGpzQ2Vs
bCk7CisgICAgICAgIH0KICAgICAgICAgSW5zdHJ1Y3Rpb24oUG9seW1vcnBoaWNBY2Nlc3NTdHJ1
Y3R1cmVMaXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMpIHsgdS5wb2x5bW9ycGhpY1N0cnVjdHVy
ZXMgPSBwb2x5bW9ycGhpY1N0cnVjdHVyZXM7IH0KICAgICAgICAgSW5zdHJ1Y3Rpb24oUHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYykgeyB1LmdldHRlckZ1bmMgPSBnZXR0ZXJG
dW5jOyB9CiAKQEAgLTE1Myw4ICsxNzAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IE9wY29kZSBvcGNvZGU7CiAgICAgICAgICAgICBpbnQgb3BlcmFuZDsKICAgICAgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlOwotICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIHN0cnVjdHVy
ZUNoYWluOwotICAgICAgICAgICAgSlNDZWxsKiBqc0NlbGw7CisgICAgICAgICAgICBXcml0ZUJh
cnJpZXJCYXNlPFN0cnVjdHVyZUNoYWluPiBzdHJ1Y3R1cmVDaGFpbjsKKyAgICAgICAgICAgIFdy
aXRlQmFycmllckJhc2U8SlNDZWxsPiBqc0NlbGw7CiAgICAgICAgICAgICBQb2x5bW9ycGhpY0Fj
Y2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlczsKICAgICAgICAgICAgIFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIGdldHRlckZ1bmM7CiAgICAgICAgIH0gdTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3Bw
CmluZGV4IDVkZjQ4NDE0YWFjN2I4NmQxZDc4ZTM5MTJkNzJmNzk2MjI3NzlmNzUuLjRkNTlhYzE2
NmRiNTJjMGVkMGU3ZWJmNmE0NWQ5OTJhYTEwN2I5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtNDQsNyArNDQs
NiBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpkZXJlZigpCiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfY2hhaW46CiAgICAgICAgIHUuZ2V0QnlJZENoYWluLmJh
c2VPYmplY3RTdHJ1Y3R1cmUtPmRlcmVmKCk7Ci0gICAgICAgIHUuZ2V0QnlJZENoYWluLmNoYWlu
LT5kZXJlZigpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3Nl
bGZfbGlzdDogewogICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHlt
b3JwaGljU3RydWN0dXJlcyA9IHUuZ2V0QnlJZFNlbGZMaXN0LnN0cnVjdHVyZUxpc3Q7CkBAIC02
MSw3ICs2MCw2IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmRlcmVmKCkKICAgICBjYXNlIGFj
Y2Vzc19wdXRfYnlfaWRfdHJhbnNpdGlvbjoKICAgICAgICAgdS5wdXRCeUlkVHJhbnNpdGlvbi5w
cmV2aW91c1N0cnVjdHVyZS0+ZGVyZWYoKTsKICAgICAgICAgdS5wdXRCeUlkVHJhbnNpdGlvbi5z
dHJ1Y3R1cmUtPmRlcmVmKCk7Ci0gICAgICAgIHUucHV0QnlJZFRyYW5zaXRpb24uY2hhaW4tPmRl
cmVmKCk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVwbGFj
ZToKICAgICAgICAgdS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5kZXJlZigp
OwpAQCAtNzgsNiArNzYsNDIgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6ZGVyZWYoKQogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9CisKK3ZvaWQgU3RydWN0dXJlU3R1
YkluZm86Om1hcmtBZ2dyZWdhdGUoTWFya1N0YWNrJiBtYXJrU3RhY2spCit7CisgICAgc3dpdGNo
IChhY2Nlc3NUeXBlKSB7CisgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGY6CisgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfcHJvdG86CisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfY2hhaW46CisgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfc2VsZl9saXN0OiB7CisgICAgICAgIFBvbHltb3JwaGlj
QWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzID0gdS5nZXRCeUlkU2Vs
Zkxpc3Quc3RydWN0dXJlTGlzdDsKKyAgICAgICAgcG9seW1vcnBoaWNTdHJ1Y3R1cmVzLT5tYXJr
QWdncmVnYXRlKG1hcmtTdGFjaywgdS5nZXRCeUlkU2VsZkxpc3QubGlzdFNpemUpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9wcm90b19saXN0OiB7
CisgICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1
Y3R1cmVzID0gdS5nZXRCeUlkUHJvdG9MaXN0LnN0cnVjdHVyZUxpc3Q7CisgICAgICAgIHBvbHlt
b3JwaGljU3RydWN0dXJlcy0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2ssIHUuZ2V0QnlJZFByb3Rv
TGlzdC5saXN0U2l6ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FzZSBhY2Nlc3Nf
cHV0X2J5X2lkX3RyYW5zaXRpb246CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIGFjY2Vzc19w
dXRfYnlfaWRfcmVwbGFjZToKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgYWNjZXNzX2dldF9i
eV9pZDoKKyAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWQ6CisgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5
X2lkX2dlbmVyaWM6CisgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX2dlbmVyaWM6CisgICAgY2Fz
ZSBhY2Nlc3NfZ2V0X2FycmF5X2xlbmd0aDoKKyAgICBjYXNlIGFjY2Vzc19nZXRfc3RyaW5nX2xl
bmd0aDoKKyAgICAgICAgLy8gVGhlc2UgaW5zdHJ1Y3Rpb25zIGRvbid0IHJlZiB0aGVpciBTdHJ1
Y3R1cmVzLgorICAgICAgICByZXR1cm47CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgfQorfQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaApp
bmRleCA4ZTJjNDg5YWE5MzAyMzEzOWI5YWY5NmRhZThlNTY1ZGVjZjIyNGZlLi4yODIwMmY5MzZj
ZTNlN2JhOTQwOGQ5YTkwMDBhMTUzNjM2NWUwYWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaApAQCAtODUsNyArODUsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGJhc2VPYmplY3RTdHJ1Y3R1cmUtPnJlZigpOwog
CiAgICAgICAgICAgICB1LmdldEJ5SWRDaGFpbi5jaGFpbiA9IGNoYWluOwotICAgICAgICAgICAg
Y2hhaW4tPnJlZigpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBpbml0R2V0QnlJZFNlbGZM
aXN0KFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogc3RydWN0dXJlTGlzdCwgaW50IGxp
c3RTaXplKQpAQCAtMTE3LDcgKzExNiw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
c3RydWN0dXJlLT5yZWYoKTsKIAogICAgICAgICAgICAgdS5wdXRCeUlkVHJhbnNpdGlvbi5jaGFp
biA9IGNoYWluOwotICAgICAgICAgICAgY2hhaW4tPnJlZigpOwogICAgICAgICB9CiAKICAgICAg
ICAgdm9pZCBpbml0UHV0QnlJZFJlcGxhY2UoU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJl
KQpAQCAtMTI5LDYgKzEyNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICAg
ICAgdm9pZCBkZXJlZigpOworICAgICAgICB2b2lkIG1hcmtBZ2dyZWdhdGUoTWFya1N0YWNrJik7
CiAKICAgICAgICAgYm9vbCBzZWVuT25jZSgpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5k
ZXggZGJkYmI1YmYzYzQyNDNjNzgxMTg4OWI0N2FjZDhiMDUwMDUzYTg5Ni4uMjExOGRlNzNjMTNi
NDRlM2FkZmQ2YWMzZTA1ZTc0YTBjZTg1ZDBkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTkyNSw3
ICs5MjUsNyBAQCBQYXNzUmVmUHRyPExhYmVsPiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJ
Zk5vdEZ1bmN0aW9uQ2FsbChSZWdpc3RlcklEKiBjb25kLAogCiAgICAgZW1pdE9wY29kZShvcF9q
bmVxX3B0cik7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNvbmQtPmluZGV4KCkpOwotICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChtX3Njb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC0+Y2FsbEZ1
bmN0aW9uKCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChJbnN0cnVjdGlvbigqbV9nbG9i
YWxEYXRhLCBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIG1fc2NvcGVDaGFpbi0+Z2xv
YmFsT2JqZWN0LT5jYWxsRnVuY3Rpb24oKSkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0
YXJnZXQtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygpLnNpemUoKSkpOwogICAgIHJldHVybiB0
YXJnZXQ7CiB9CkBAIC05MzYsNyArOTM2LDcgQEAgUGFzc1JlZlB0cjxMYWJlbD4gQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KFJlZ2lzdGVySUQqIGNvbmQKIAog
ICAgIGVtaXRPcGNvZGUob3Bfam5lcV9wdHIpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChj
b25kLT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9zY29wZUNoYWluLT5n
bG9iYWxPYmplY3QtPmFwcGx5RnVuY3Rpb24oKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KEluc3RydWN0aW9uKCptX2dsb2JhbERhdGEsIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KSwgbV9zY29wZUNoYWluLT5nbG9iYWxPYmplY3QtPmFwcGx5RnVuY3Rpb24oKSkpOwogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZCh0YXJnZXQtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygpLnNp
emUoKSkpOwogICAgIHJldHVybiB0YXJnZXQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCAzNjk1ZjM5NDUzOWE1Y2M0ZTU1
YTIxZTBmZTliNGRhODI4NTc2MDE0Li41NjZkNjNmNjc0OTIzNTZhMWQxZjQxODBkMzQwM2FiODdk
YmE5Y2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAKQEAgLTM1MzcsMTAgKzM1MzcsOSBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgog
ICAgICAgICAgICB0byBwdHIsIHVzaW5nIHBvaW50ZXIgZXF1YWxpdHkuCiAgICAgICAgICAqLwog
ICAgICAgICBpbnQgc3JjID0gdlBDWzFdLnUub3BlcmFuZDsKLSAgICAgICAgSlNWYWx1ZSBwdHIg
PSBKU1ZhbHVlKHZQQ1syXS51LmpzQ2VsbCk7CiAgICAgICAgIGludCB0YXJnZXQgPSB2UENbM10u
dS5vcGVyYW5kOwogICAgICAgICBKU1ZhbHVlIHNyY1ZhbHVlID0gY2FsbEZyYW1lLT5yKHNyYyku
anNWYWx1ZSgpOwotICAgICAgICBpZiAoc3JjVmFsdWUgIT0gcHRyKSB7CisgICAgICAgIGlmIChz
cmNWYWx1ZSAhPSB2UENbMl0udS5qc0NlbGwuZ2V0KCkpIHsKICAgICAgICAgICAgIHZQQyArPSB0
YXJnZXQ7CiAgICAgICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGZlZTY1NDY4ZmNhZjQzYTBk
NjY5ODgxM2UxNTNmNDMxYjhkYzBiYjIuLjY3YzdmOTY1MGM1ZmQxMDdkYmJmMzFlOTYyNjljYTEw
MDEzMDZiMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAt
NzYyLDcgKzc2Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX2puZXFfbnVsbChJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9wdHIoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICB1bnNpZ25lZCBzcmMgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIEpTQ2VsbCogcHRyID0gY3VycmVudEluc3RydWN0
aW9uWzJdLnUuanNDZWxsOworICAgIEpTQ2VsbCogcHRyID0gY3VycmVudEluc3RydWN0aW9uWzJd
LnUuanNDZWxsLmdldCgpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9wZXJhbmQ7CiAgICAgCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmMsIHJl
Z1QwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApp
bmRleCBlYmZkNzg3MzU5MzdkMTAxMDY1ZThjMmQ0NDI1Mzc3NTE4YmY1ODI2Li5kZjI0MDRjOWRk
YjgxYTIwMjU3YjQ3MzhhOTJhNzcyNDdjYmRlNjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC05NzksNyArOTc5LDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3Bfam5lcV9udWxsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB2b2lk
IEpJVDo6ZW1pdF9vcF9qbmVxX3B0cihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIHVuc2lnbmVkIHNyYyA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0g
ICAgSlNDZWxsKiBwdHIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5qc0NlbGw7CisgICAgSlND
ZWxsKiBwdHIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5qc0NlbGwuZ2V0KCk7CiAgICAgdW5z
aWduZWQgdGFyZ2V0ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAogICAgIGVt
aXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggOTA1NjdmYzg1YmJjNmRjN2RiNmY3NTlhMTMx
NDkxOTY1ZmY2Y2JiNy4uMDI0ZTRmOWEwZTBiYTU3YjJjZDdhMzRjMjVhMWQ1MDgxZGNjNzYzYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAK
QEAgLTk3OSw4ICs5NzksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5M
aXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaQogCiAgICAgLy8gVHJh
Y2sgdGhlIHN0dWIgd2UgaGF2ZSBjcmVhdGVkIHNvIHRoYXQgaXQgd2lsbCBiZSBkZWxldGVkIGxh
dGVyLgogICAgIHN0cnVjdHVyZS0+cmVmKCk7Ci0gICAgY2hhaW4tPnJlZigpOwotICAgIHByb3Rv
dHlwZVN0cnVjdHVyZXMtPmxpc3RbY3VycmVudEluZGV4XS5zZXQoZW50cnlMYWJlbCwgc3RydWN0
dXJlLCBjaGFpbik7CisgICAgcHJvdG90eXBlU3RydWN0dXJlcy0+bGlzdFtjdXJyZW50SW5kZXhd
LnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLCBlbnRyeUxhYmVsLCBzdHJ1Y3R1cmUsIGNoYWluKTsKIAogICAgIC8vIEZpbmFsbHkgcGF0
Y2ggdGhlIGp1bXAgdG8gc2xvdyBjYXNlIGJhY2sgaW4gdGhlIGhvdCBwYXRoIHRvIGp1bXAgaGVy
ZSBpbnN0ZWFkLgogICAgIENvZGVMb2NhdGlvbkp1bXAganVtcExvY2F0aW9uID0gc3R1YkluZm8t
PmhvdFBhdGhCZWdpbi5qdW1wQXRPZmZzZXQocGF0Y2hPZmZzZXRHZXRCeUlkQnJhbmNoVG9TbG93
Q2FzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2VzczMyXzY0LmNwcAppbmRleCA3MzVjMTlkN2E5MWIxNjBkMjY3YjA4OTM5YWY1MDNiOWUzZTdh
MmY3Li40ODI1M2ZmOWRiYjRiMzIyM2RiMmJkZThkMDBhMjliMGNhZWQ5ZjhlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAK
QEAgLTEwMDcsOCArMTAwNyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFp
bkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpCiAgICAgCiAgICAg
Ly8gVHJhY2sgdGhlIHN0dWIgd2UgaGF2ZSBjcmVhdGVkIHNvIHRoYXQgaXQgd2lsbCBiZSBkZWxl
dGVkIGxhdGVyLgogICAgIHN0cnVjdHVyZS0+cmVmKCk7Ci0gICAgY2hhaW4tPnJlZigpOwotICAg
IHByb3RvdHlwZVN0cnVjdHVyZXMtPmxpc3RbY3VycmVudEluZGV4XS5zZXQoZW50cnlMYWJlbCwg
c3RydWN0dXJlLCBjaGFpbik7CisgICAgcHJvdG90eXBlU3RydWN0dXJlcy0+bGlzdFtjdXJyZW50
SW5kZXhdLnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLCBlbnRyeUxhYmVsLCBzdHJ1Y3R1cmUsIGNoYWluKTsKICAgICAKICAgICAvLyBG
aW5hbGx5IHBhdGNoIHRoZSBqdW1wIHRvIHNsb3cgY2FzZSBiYWNrIGluIHRoZSBob3QgcGF0aCB0
byBqdW1wIGhlcmUgaW5zdGVhZC4KICAgICBDb2RlTG9jYXRpb25KdW1wIGp1bXBMb2NhdGlvbiA9
IHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uanVtcEF0T2Zmc2V0KHBhdGNoT2Zmc2V0R2V0QnlJZEJy
YW5jaFRvU2xvd0Nhc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHVicy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAppbmRl
eCBhMzhmMDFlMjIzMTVkNzVmN2EwYjU4ZmM1MGUzNTFhNzEwZjk2MmViLi5lNTJjN2M4NWNmMWRm
MzljZjhhMjZmN2U3NDg1NzU4OTBmZWVjZjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN0dWJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmNwcApAQCAtMTU1Myw3ICsxNTUzLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5j
b2RlZEpTVmFsdWUsIG9wX2dldF9ieV9pZF9zZWxmX2ZhaWwpCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwogfQogCi1zdGF0aWMgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVM
aXN0KiBnZXRQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTbG90KFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgaW50JiBsaXN0SW5kZXgpCitzdGF0aWMgUG9seW1vcnBoaWNBY2Nlc3NT
dHJ1Y3R1cmVMaXN0KiBnZXRQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTbG90KEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXIsIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgaW50JiBsaXN0SW5kZXgpCiB7CiAgICAgUG9seW1vcnBoaWNBY2Nl
c3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0ID0gMDsKICAgICBsaXN0SW5k
ZXggPSAxOwpAQCAtMTU2NSw3ICsxNTY1LDcgQEAgc3RhdGljIFBvbHltb3JwaGljQWNjZXNzU3Ry
dWN0dXJlTGlzdCogZ2V0UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U2xvdChTdHIKICAg
ICAgICAgc3R1YkluZm8tPmluaXRHZXRCeUlkUHJvdG9MaXN0KHByb3RvdHlwZVN0cnVjdHVyZUxp
c3QsIDIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfY2hhaW46
Ci0gICAgICAgIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QgPSBuZXcgUG9seW1vcnBoaWNBY2Nlc3NT
dHJ1Y3R1cmVMaXN0KHN0dWJJbmZvLT5zdHViUm91dGluZSwgc3R1YkluZm8tPnUuZ2V0QnlJZENo
YWluLmJhc2VPYmplY3RTdHJ1Y3R1cmUsIHN0dWJJbmZvLT51LmdldEJ5SWRDaGFpbi5jaGFpbik7
CisgICAgICAgIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QgPSBuZXcgUG9seW1vcnBoaWNBY2Nlc3NT
dHJ1Y3R1cmVMaXN0KGdsb2JhbERhdGEsIG93bmVyLCBzdHViSW5mby0+c3R1YlJvdXRpbmUsIHN0
dWJJbmZvLT51LmdldEJ5SWRDaGFpbi5iYXNlT2JqZWN0U3RydWN0dXJlLCBzdHViSW5mby0+dS5n
ZXRCeUlkQ2hhaW4uY2hhaW4pOwogICAgICAgICBzdHViSW5mby0+c3R1YlJvdXRpbmUgPSBDb2Rl
TG9jYXRpb25MYWJlbCgpOwogICAgICAgICBzdHViSW5mby0+aW5pdEdldEJ5SWRQcm90b0xpc3Qo
cHJvdG90eXBlU3RydWN0dXJlTGlzdCwgMik7CiAgICAgICAgIGJyZWFrOwpAQCAtMTY1Myw3ICsx
NjUzLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2dldF9ieV9p
ZF9wcm90b19saXN0KQogICAgICAgICB9CiAKICAgICAgICAgaW50IGxpc3RJbmRleDsKLSAgICAg
ICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0
ID0gZ2V0UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U2xvdChzdHViSW5mbywgbGlzdElu
ZGV4KTsKKyAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVT
dHJ1Y3R1cmVMaXN0ID0gZ2V0UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U2xvdChjYWxs
RnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3R1Yklu
Zm8sIGxpc3RJbmRleCk7CiAgICAgICAgIGlmIChsaXN0SW5kZXggPCBQT0xZTU9SUEhJQ19MSVNU
X0NBQ0hFX1NJWkUpIHsKICAgICAgICAgICAgIEpJVDo6Y29tcGlsZUdldEJ5SWRQcm90b0xpc3Qo
Y2FsbEZyYW1lLT5zY29wZUNoYWluKCktPmdsb2JhbERhdGEsIGNhbGxGcmFtZSwgY29kZUJsb2Nr
LCBzdHViSW5mbywgcHJvdG90eXBlU3RydWN0dXJlTGlzdCwgbGlzdEluZGV4LCBzdHJ1Y3R1cmUs
IHNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBzbG90LCBvZmZzZXQp
OwogCkBAIC0xNjYzLDcgKzE2NjMsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNW
YWx1ZSwgb3BfZ2V0X2J5X2lkX3Byb3RvX2xpc3QpCiAgICAgfSBlbHNlIGlmIChzaXplX3QgY291
bnQgPSBub3JtYWxpemVQcm90b3R5cGVDaGFpbihjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgc2xvdC5z
bG90QmFzZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCkpIHsKICAgICAgICAgQVNTRVJUKCFiYXNl
VmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSk7CiAgICAgICAgIGlu
dCBsaXN0SW5kZXg7Ci0gICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJv
dG90eXBlU3RydWN0dXJlTGlzdCA9IGdldFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdFNs
b3Qoc3R1YkluZm8sIGxpc3RJbmRleCk7CisgICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0
dXJlTGlzdCogcHJvdG90eXBlU3RydWN0dXJlTGlzdCA9IGdldFBvbHltb3JwaGljQWNjZXNzU3Ry
dWN0dXJlTGlzdFNsb3QoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCksIHN0dWJJbmZvLCBsaXN0SW5kZXgpOwogICAgICAgICAKICAgICAgICAgaWYg
KGxpc3RJbmRleCA8IFBPTFlNT1JQSElDX0xJU1RfQ0FDSEVfU0laRSkgewogICAgICAgICAgICAg
U3RydWN0dXJlQ2hhaW4qIHByb3RvQ2hhaW4gPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGNh
bGxGcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDQ0NzQ4
NmNlNWNjNmU4NWE0Mzk1ZjAxMjliYTQ5OWY1MjY5YWUwNDkuLmFhOTdiNjUwMWE1NDc5NzEyN2Y1
MmU4N2NmNWY1NDQxMDA0ODA0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5oCkBAIC02Niw2ICs2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xh
c3MgTWFya2VkU3BhY2U7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlOworICAgICAgICBmcmllbmQgY2xhc3MgU3Ry
dWN0dXJlQ2hhaW47CiAKICAgICBwcml2YXRlOgogICAgICAgICBleHBsaWNpdCBKU0NlbGwoU3Ry
dWN0dXJlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmNwcAppbmRleCAyMWQ5MjE3N2UxODYxODg5ZjY5ZDA5MmZmODA3NWZhMDMyNGNhMDU3Li4wYzJk
NjM4OGE1ZWQ3YzhjZDhlZDMwNDJhN2ExZjQxNGY5NjFhNWEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKQEAgLTE2Myw2ICsxNjMsNyBAQCBK
U0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSBnbG9iYWxEYXRhVHlwZSwg
VGhyZWFkU3RhY2tUeXBlIHRocmVhZAogICAgIHByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlID0g
UHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywganNOdWxsKCkpOwogICAg
IGZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZSA9IEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCBqc051bGwoKSk7CiAgICAgZHVtbXlNYXJrYWJsZUNlbGxTdHJ1Y3R1
cmUgPSBKU0NlbGw6OmNyZWF0ZUR1bW15U3RydWN0dXJlKCp0aGlzKTsKKyAgICBzdHJ1Y3R1cmVD
aGFpblN0cnVjdHVyZSA9IFN0cnVjdHVyZUNoYWluOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpz
TnVsbCgpKTsKIAogICAgIGludGVycHJldGVyID0gbmV3IEludGVycHJldGVyKCp0aGlzKTsKICAg
ICBpZiAoZ2xvYmFsRGF0YVR5cGUgPT0gRGVmYXVsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKaW5kZXggMjhiZGFkZTEyMTFjYmFiZjdjZjExODg1YTFl
ZDhkY2UyNjA2NzM4MC4uMzRlYTc1ZDYxMjFiNmQzNTBjOGUzMWEwNGZiOGUzMzQ4M2E5MDEyYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKQEAgLTE2
MSw2ICsxNjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4g
cHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmU7CiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGZ1
bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZTsKICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gZHVt
bXlNYXJrYWJsZUNlbGxTdHJ1Y3R1cmU7CisgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVj
dHVyZUNoYWluU3RydWN0dXJlOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIHN0b3JlVlB0cnMoKTsK
ICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgdm9pZCoganNBcnJheVZQdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggODli
YmU4MDRlZDE2NWMzYTBjMmNjOTI0MWM4NDQ3Y2VlZDM0OTQ1Yi4uMzk4MDU5MDU3YjFhOWQwNzUw
OTJlMjc2YWQ0NDE4M2ZmMGQwMjczNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODgsNiArODgsOCBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgbWFya0lmTmVlZGVkKE1hcmtTdGFjayYgbWFya1N0YWNrLCBjb25zdCBSZWZQdHI8U3Ry
dWN0dXJlPiYgcwogewogICAgIGlmIChzICYmIHMtPnN0b3JlZFByb3RvdHlwZSgpKQogICAgICAg
ICBtYXJrU3RhY2suYXBwZW5kKHMtPnN0b3JlZFByb3RvdHlwZVNsb3QoKSk7CisgICAgaWYgKHMg
JiYgKnMtPmNhY2hlZFByb3RvdHlwZUNoYWluU2xvdCgpKQorICAgICAgICBtYXJrU3RhY2suYXBw
ZW5kKHMtPmNhY2hlZFByb3RvdHlwZUNoYWluU2xvdCgpKTsKIH0KIAogSlNHbG9iYWxPYmplY3Q6
On5KU0dsb2JhbE9iamVjdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAppbmRleCA1NmVlYTYzMjI2N2Y0N2VhMmU3NDYxODdmOGIzYmNmMmY5NDhm
Njg5Li4yMjM0OGMxMDRjMGUxZTA1MWZmMDE4YTAyZTllZDMzNDhjZTlhZmFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTI4LDYgKzI4
LDcgQEAKICNpbmNsdWRlICJKU1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oIgogI2luY2x1ZGUg
Ik51bWJlclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlN0cmluZ1Byb3RvdHlwZS5oIgorI2luY2x1
ZGUgIlN0cnVjdHVyZUNoYWluLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgpAQCAtMzYyLDcg
KzM2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBXZSBjYWNoZSBvdXIgcHJvdG90
eXBlIGNoYWluIHNvIG91ciBjbGllbnRzIGNhbiBzaGFyZSBpdC4KICAgICAgICAgaWYgKCFpc1Zh
bGlkKGV4ZWMsIG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uZ2V0KCkpKSB7CiAgICAgICAgICAgICBK
U1ZhbHVlIHByb3RvdHlwZSA9IHByb3RvdHlwZUZvckxvb2t1cChleGVjKTsKLSAgICAgICAgICAg
IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4gPSBTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlKHByb3RvdHlw
ZS5pc051bGwoKSA/IDAgOiBhc09iamVjdChwcm90b3R5cGUpLT5zdHJ1Y3R1cmUoKSk7CisgICAg
ICAgICAgICBtX2NhY2hlZFByb3RvdHlwZUNoYWluID0gU3RydWN0dXJlQ2hhaW46OmNyZWF0ZShl
eGVjLT5nbG9iYWxEYXRhKCksIHByb3RvdHlwZS5pc051bGwoKSA/IDAgOiBhc09iamVjdChwcm90
b3R5cGUpLT5zdHJ1Y3R1cmUoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fY2FjaGVk
UHJvdG90eXBlQ2hhaW4uZ2V0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgKaW5kZXggNjZhYzJkNmJhMTYyMTczNjM3ZjdiMzkyMTBlNjM1MDU2ODkwMGY4
Ni4uNTU5YWE2ZDBiYzQ4Y2JkMzgzYzY0ZjI3ZGUzMmRiNzdmNGIyMGY2OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC04MTQsOCArODE0LDEwIEBAIGlubGlu
ZSB2b2lkIEpTVmFsdWU6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSkKIEFMV0FZU19JTkxJTkUgdm9pZCBKU09iamVjdDo6bWFya0NoaWxk
cmVuRGlyZWN0KE1hcmtTdGFjayYgbWFya1N0YWNrKQogewogICAgIEpTQ2VsbDo6bWFya0NoaWxk
cmVuKG1hcmtTdGFjayk7Ci0KKyAgICAKICAgICBtYXJrU3RhY2suYXBwZW5kKG1fc3RydWN0dXJl
LT5zdG9yZWRQcm90b3R5cGVTbG90KCkpOworICAgIGlmICgqbV9zdHJ1Y3R1cmUtPmNhY2hlZFBy
b3RvdHlwZUNoYWluU2xvdCgpKQorICAgICAgICBtYXJrU3RhY2suYXBwZW5kKG1fc3RydWN0dXJl
LT5jYWNoZWRQcm90b3R5cGVDaGFpblNsb3QoKSk7CiAgICAgUHJvcGVydHlTdG9yYWdlIHN0b3Jh
Z2UgPSBwcm9wZXJ0eVN0b3JhZ2UoKTsKICAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSBtX3N0cnVj
dHVyZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOwogICAgIG1hcmtTdGFjay5hcHBlbmRWYWx1ZXMo
c3RvcmFnZSwgc3RvcmFnZVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAppbmRleCAwZDc1OWNmYzE1Yzlk
MmJlOWIwMGM4NWNhZDY0YjFlMjk2ODA1ZTBhLi42ZjMxZjk5OWQ3MDk1ZGNjNWNmNmQzZDA2Y2Mz
MmQyODY4ZWIyOGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcApAQCAtNzcsNyArNzcsNyBAQCBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdAogICAgICAgICAgICAgcmV0dXJuIGpzUHJvcGVydHlOYW1lSXRlcmF0
b3I7CiAgICAgfQogCi0gICAganNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+c2V0Q2FjaGVkUHJvdG90
eXBlQ2hhaW4oc3RydWN0dXJlQ2hhaW4pOworICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPnNl
dENhY2hlZFByb3RvdHlwZUNoYWluKGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlQ2hhaW4p
OwogICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPnNldENhY2hlZFN0cnVjdHVyZShvLT5zdHJ1
Y3R1cmUoKSk7CiAgICAgby0+c3RydWN0dXJlKCktPnNldEVudW1lcmF0aW9uQ2FjaGUoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yKTsKICAgICByZXR1cm4ganNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcjsKQEAgLTg2LDcgKzg2LDcgQEAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ciogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QKIEpTVmFsdWUgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIGJhc2UsIHNpemVfdCBpKQogewogICAgIEpTVmFsdWUgaWRlbnRpZmllciA9IG1f
anNTdHJpbmdzW2ldLmdldCgpOwotICAgIGlmIChtX2NhY2hlZFN0cnVjdHVyZSA9PSBiYXNlLT5z
dHJ1Y3R1cmUoKSAmJiBtX2NhY2hlZFByb3RvdHlwZUNoYWluID09IGJhc2UtPnN0cnVjdHVyZSgp
LT5wcm90b3R5cGVDaGFpbihleGVjKSkKKyAgICBpZiAobV9jYWNoZWRTdHJ1Y3R1cmUgPT0gYmFz
ZS0+c3RydWN0dXJlKCkgJiYgbV9jYWNoZWRQcm90b3R5cGVDaGFpbi5nZXQoKSA9PSBiYXNlLT5z
dHJ1Y3R1cmUoKS0+cHJvdG90eXBlQ2hhaW4oZXhlYykpCiAgICAgICAgIHJldHVybiBpZGVudGlm
aWVyOwogCiAgICAgaWYgKCFiYXNlLT5oYXNQcm9wZXJ0eShleGVjLCBJZGVudGlmaWVyKGV4ZWMs
IGFzU3RyaW5nKGlkZW50aWZpZXIpLT52YWx1ZShleGVjKSkpKQpAQCAtOTcsNiArOTcsOCBAQCBK
U1ZhbHVlIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmdldChFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBiYXNlLCBzaXplX3QgaSkKIHZvaWQgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bWFya0No
aWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQogewogICAgIG1hcmtTdGFjay5hcHBlbmRWYWx1
ZXMobV9qc1N0cmluZ3MuZ2V0KCksIG1fanNTdHJpbmdzU2l6ZSwgTWF5Q29udGFpbk51bGxWYWx1
ZXMpOworICAgIGlmIChtX2NhY2hlZFByb3RvdHlwZUNoYWluKQorICAgICAgICBtYXJrU3RhY2su
YXBwZW5kKCZtX2NhY2hlZFByb3RvdHlwZUNoYWluKTsKIH0KIAogI2lmICFBU1NFUlRfRElTQUJM
RUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlO
YW1lSXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlO
YW1lSXRlcmF0b3IuaAppbmRleCA4YjAwN2RkNzY3ZjY0NjRiMTQzODE5OWU0ZmE2MTg1ZTRkMzJh
ZDAxLi40OTkzOTZjYzU4NzgzODgzNzA2YjMyNGRiNjE0NDZjMTI1ZTE3NjNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5oCkBAIC03Myw3ICs3Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAgICAgICAg
IFN0cnVjdHVyZSogY2FjaGVkU3RydWN0dXJlKCkgeyByZXR1cm4gbV9jYWNoZWRTdHJ1Y3R1cmUu
Z2V0KCk7IH0KIAotICAgICAgICB2b2lkIHNldENhY2hlZFByb3RvdHlwZUNoYWluKE5vbk51bGxQ
YXNzUmVmUHRyPFN0cnVjdHVyZUNoYWluPiBjYWNoZWRQcm90b3R5cGVDaGFpbikgeyBtX2NhY2hl
ZFByb3RvdHlwZUNoYWluID0gY2FjaGVkUHJvdG90eXBlQ2hhaW47IH0KKyAgICAgICAgdm9pZCBz
ZXRDYWNoZWRQcm90b3R5cGVDaGFpbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVy
ZUNoYWluKiBjYWNoZWRQcm90b3R5cGVDaGFpbikgeyBtX2NhY2hlZFByb3RvdHlwZUNoYWluLnNl
dChnbG9iYWxEYXRhLCB0aGlzLCBjYWNoZWRQcm90b3R5cGVDaGFpbik7IH0KICAgICAgICAgU3Ry
dWN0dXJlQ2hhaW4qIGNhY2hlZFByb3RvdHlwZUNoYWluKCkgeyByZXR1cm4gbV9jYWNoZWRQcm90
b3R5cGVDaGFpbi5nZXQoKTsgfQogCiAgICAgcHJpdmF0ZToKQEAgLTg0LDcgKzg0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAogICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX2NhY2hl
ZFN0cnVjdHVyZTsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZUNoYWluPiBtX2NhY2hlZFByb3Rv
dHlwZUNoYWluOworICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlQ2hhaW4+IG1fY2FjaGVk
UHJvdG90eXBlQ2hhaW47CiAgICAgICAgIHVpbnQzMl90IG1fbnVtQ2FjaGVhYmxlU2xvdHM7CiAg
ICAgICAgIHVpbnQzMl90IG1fanNTdHJpbmdzU2l6ZTsKICAgICAgICAgT3duQXJyYXlQdHI8V3Jp
dGVCYXJyaWVyPFVua25vd24+ID4gbV9qc1N0cmluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXJrU3RhY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hcmtTdGFjay5oCmluZGV4IGRlZTRmMzQyMGNlNjE1NjBkODE5MDBmYjA4NDIxNGM2
NGE2ZDU3ZWEuLjcxMzE5MTdmNjVkNGI0NmI5MDMxYTA2ODhmNDdmOTk2ZGQyMzdmYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtTdGFjay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtTdGFjay5oCkBAIC0yMTUsMTIgKzIxNSwx
MiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUg
dm9pZCBNYXJrU3RhY2s6OmFwcGVuZChEZXByZWNhdGVkUHRyPFQ+KiBzbG90KQogICAgIHsKLSAg
ICAgICAgaW50ZXJuYWxBcHBlbmQoc2xvdC0+Z2V0KCkpOworICAgICAgICBpbnRlcm5hbEFwcGVu
ZCgqc2xvdC0+c2xvdCgpKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGlubGluZSB2b2lkIE1hcmtTdGFjazo6YXBwZW5kKFdyaXRlQmFycmllckJhc2U8VD4qIHNsb3Qp
CiAgICAgewotICAgICAgICBpbnRlcm5hbEFwcGVuZChzbG90LT5nZXQoKSk7CisgICAgICAgIGlu
dGVybmFsQXBwZW5kKCpzbG90LT5zbG90KCkpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBNYXJrU3RhY2s6OmRlcHJlY2F0ZWRBcHBlbmQoSlNDZWxsKiogdmFsdWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IDZmNzA2MGJmMWFhZGMyNDAz
Zjk3MGM1MWRlOGViMjY4NTBhNDQ1MmYuLmM5ZjkwMGE1ODVjZDAyY2U3MWViZTFmYjU5N2Q1OGNm
ZWU2ZmI1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBA
IC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNoVGFibGUuaCIKICNpbmNs
dWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUgIlByb3RlY3QuaCIKLSNpbmNsdWRl
ICJTdHJ1Y3R1cmVDaGFpbi5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5o
IgogI2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKICNpbmNsdWRlICJVU3RyaW5nLmgiCkBAIC00Niw2
ICs0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIE1hcmtTdGFjazsKICAgICBjbGFz
cyBQcm9wZXJ0eU5hbWVBcnJheTsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheURhdGE7Cisg
ICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47CiAKICAgICBzdHJ1Y3QgQ2xhc3NJbmZvOwogCkBAIC0x
MDcsNiArMTA3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIERlcHJlY2F0ZWRQdHI8VW5r
bm93bj4qIHN0b3JlZFByb3RvdHlwZVNsb3QoKSB7IHJldHVybiAmbV9wcm90b3R5cGU7IH0KICAg
ICAgICAgSlNWYWx1ZSBwcm90b3R5cGVGb3JMb29rdXAoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAg
ICAgIFN0cnVjdHVyZUNoYWluKiBwcm90b3R5cGVDaGFpbihFeGVjU3RhdGUqKSBjb25zdDsKKyAg
ICAgICAgRGVwcmVjYXRlZFB0cjxTdHJ1Y3R1cmVDaGFpbj4qIGNhY2hlZFByb3RvdHlwZUNoYWlu
U2xvdCgpIHsgcmV0dXJuICZtX2NhY2hlZFByb3RvdHlwZUNoYWluOyB9CiAKICAgICAgICAgU3Ry
dWN0dXJlKiBwcmV2aW91c0lEKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91cy5nZXQoKTsgfQog
CkBAIC0yMTAsNyArMjExLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFR5cGVJbmZvIG1f
dHlwZUluZm87CiAKICAgICAgICAgRGVwcmVjYXRlZFB0cjxVbmtub3duPiBtX3Byb3RvdHlwZTsK
LSAgICAgICAgbXV0YWJsZSBSZWZQdHI8U3RydWN0dXJlQ2hhaW4+IG1fY2FjaGVkUHJvdG90eXBl
Q2hhaW47CisgICAgICAgIG11dGFibGUgRGVwcmVjYXRlZFB0cjxTdHJ1Y3R1cmVDaGFpbj4gbV9j
YWNoZWRQcm90b3R5cGVDaGFpbjsKIAogICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX3ByZXZp
b3VzOwogICAgICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbV9uYW1lSW5QcmV2aW91czsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAppbmRleCBl
NDUyM2MzYTY4OTNkNWRkYjZkOWZlNTg1NzNlOTRhY2U5NThkOTViLi40ZmE0YTRiOGU1MDFiYTc4
YTBmMmU3ZjM2MzgwMmVkZTMzYmJkZjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCkBAIC0zMiw3ICszMiw4IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1TdHJ1Y3R1cmVDaGFpbjo6U3RydWN0dXJlQ2hhaW4oU3RydWN0dXJlKiBoZWFk
KQorU3RydWN0dXJlQ2hhaW46OlN0cnVjdHVyZUNoYWluKE5vbk51bGxQYXNzUmVmUHRyPFN0cnVj
dHVyZT4gc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIGhlYWQpCisgICAgOiBKU0NlbGwoc3RydWN0dXJl
LnJlbGVhc2VSZWYoKSkKIHsKICAgICBzaXplX3Qgc2l6ZSA9IDA7CiAgICAgZm9yIChTdHJ1Y3R1
cmUqIGN1cnJlbnQgPSBoZWFkOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+c3RvcmVkUHJv
dG90eXBlKCkuaXNOdWxsKCkgPyAwIDogYXNPYmplY3QoY3VycmVudC0+c3RvcmVkUHJvdG90eXBl
KCkpLT5zdHJ1Y3R1cmUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUNoYWluLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVDaGFpbi5oCmluZGV4IDgxNmI2NmQ1MDUxNTUwYmNlYjJiNGVmYTI3ZTUxNDE5ZTJkOWEz
M2YuLjg4NTkyZGM3MDE2YjliNDBmNDg0OWViMzIwZTcxMjJmNzk0ODZmYzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaApAQCAtMjYsNiArMjYs
OCBAQAogI2lmbmRlZiBTdHJ1Y3R1cmVDaGFpbl9oCiAjZGVmaW5lIFN0cnVjdHVyZUNoYWluX2gK
IAorI2luY2x1ZGUgIkpTQ2VsbC5oIgorCiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpA
QCAtMzUsMTUgKzM3LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU3RydWN0dXJl
OwogCi0gICAgY2xhc3MgU3RydWN0dXJlQ2hhaW4gOiBwdWJsaWMgUmVmQ291bnRlZDxTdHJ1Y3R1
cmVDaGFpbj4geworICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0cnVjdHVyZUNoYWluPiBjcmVhdGUoU3RydWN0dXJlKiBoZWFkKSB7IHJldHVy
biBhZG9wdFJlZihuZXcgU3RydWN0dXJlQ2hhaW4oaGVhZCkpOyB9CisgICAgICAgIHN0YXRpYyBT
dHJ1Y3R1cmVDaGFpbiogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJl
KiBoZWFkKSB7IHJldHVybiBuZXcgKCZnbG9iYWxEYXRhKSBTdHJ1Y3R1cmVDaGFpbihnbG9iYWxE
YXRhLnN0cnVjdHVyZUNoYWluU3RydWN0dXJlLCBoZWFkKTsgfQogICAgICAgICBSZWZQdHI8U3Ry
dWN0dXJlPiogaGVhZCgpIHsgcmV0dXJuIG1fdmVjdG9yLmdldCgpOyB9CiAKKyAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
Z2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc01h
cmtDaGlsZHJlbiksIDAsIDApOyB9CiAgICAgcHJpdmF0ZToKLSAgICAgICAgU3RydWN0dXJlQ2hh
aW4oU3RydWN0dXJlKiBoZWFkKTsKKyAgICAgICAgU3RydWN0dXJlQ2hhaW4oTm9uTnVsbFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiwgU3RydWN0dXJlKiBoZWFkKTsKIAogICAgICAgICBPd25BcnJheVB0
cjxSZWZQdHI8U3RydWN0dXJlPiA+IG1fdmVjdG9yOwogICAgIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87947</attachid>
            <date>2011-04-01 17:13:24 -0700</date>
            <delta_ts>2011-04-01 18:11:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56695-20110401171323.patch</filename>
            <type>text/plain</type>
            <size>52126</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI2MzAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDll
NmRhMGEyM2EwNzVhMGI1NDQ2Yzg2YWY3N2U2N2RhZmQxNTRkMGIuLmVjZDk4NWRiMTI0MGRjOGNk
ZGEwOGMwZGVhNDYwZWExYjg2OGI4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDkyIEBACisyMDExLTA0LTAxICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBTdHJ1
Y3R1cmVDaGFpbiBHQyBhbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU2Njk1CisKKyAgICAgICAgTWFrZSBTdHJ1Y3R1cmVDaGFpbiBHQyBh
bGxvY2F0ZWQsIGFuZCBtYWtlIHRoZSB2YXJpb3VzIG93bmVycworICAgICAgICBtYXJrIGl0IGNv
cnJlY3RseS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmRlcmVmU3RydWN0dXJlcyk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6cmVmU3RydWN0dXJlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bWFya0Fn
Z3JlZ2F0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEpT
Qzo6UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0OjpQb2x5bW9ycGhpY1N0dWJJbmZvOjpz
ZXQpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Q6OlBvbHlt
b3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCk6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNj
ZXNzU3RydWN0dXJlTGlzdDo6ZGVyZWZTdHJ1Y3R1cmVzKToKKyAgICAgICAgKEpTQzo6UG9seW1v
cnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0OjptYXJrQWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6
SW5zdHJ1Y3Rpb246Okluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpkZXJlZik6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjptYXJrQWdncmVnYXRlKToKKyAgICAgICAg
KiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVT
dHViSW5mbzo6aW5pdEdldEJ5SWRDaGFpbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJ
bmZvOjppbml0UHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
SnVtcElmTm90RnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KToKKyAgICAgICAgKiBjb2xsZWN0b3IvaGFuZGxl
cy9IYW5kbGUuaDoKKyAgICAgICAgKEpTQzo6SGFuZGxlQ29udmVydGVyOjpvcGVyYXRvci0+KToK
KyAgICAgICAgKEpTQzo6SGFuZGxlQ29udmVydGVyOjpvcGVyYXRvciopOgorICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnBy
aXZhdGVFeGVjdXRlKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9qbmVxX3B0cik6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82
NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX3B0cik6CisgICAgICAgICog
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxp
c3QpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkpJVFRodW5r
czo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0cnlDYWNoZUdl
dEJ5SUQpOgorICAgICAgICAoSlNDOjpnZXRQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RT
bG90KToKKyAgICAgICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuY3BwOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6bWFya0lmTmVlZGVkKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0Lmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHJvdG90eXBlQ2hhaW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERp
cmVjdEludGVybmFsKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om1hcmtDaGlsZHJlbkRpcmVj
dCk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Z2V0KToKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcjo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlO
YW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6c2V0
Q2FjaGVkUHJvdG90eXBlQ2hhaW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNab21iaWUuY3BwOgor
ICAgICAgICAoSlNDOjpKU1pvbWJpZTo6bGVha2VkWm9tYmllU3RydWN0dXJlKToKKyAgICAgICAg
KiBydW50aW1lL0pTWm9tYmllLmg6CisgICAgICAgICogcnVudGltZS9NYXJrU3RhY2suaDoKKyAg
ICAgICAgKEpTQzo6TWFya1N0YWNrOjphcHBlbmQpOgorICAgICAgICAqIHJ1bnRpbWUvTWFya2Vk
QmxvY2suY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c3dlZXApOgorICAgICAgICAq
IHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9w
ZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6bWFya0FnZ3JlZ2F0ZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmVDaGFpbi5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNoYWluOjpTdHJ1Y3R1cmVD
aGFpbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNoYWluOjp+U3RydWN0dXJlQ2hhaW4pOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVDaGFpbjo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBy
dW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNoYWluOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKiBydW50aW1lL1dyaXRlQmFycmllci5oOgorICAgICAgICAoSlNDOjpXcml0ZUJh
cnJpZXJCYXNlOjpnZXQpOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJCYXNlOjpvcGVyYXRv
ciopOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJCYXNlOjpvcGVyYXRvci0+KToKKwogMjAx
MS0wMy0zMSAgVGhvdXJheWEgQU5ET0xTSSAgPHRob3VyYXlhLmFuZG9sc2lAc3QuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5leHAKaW5kZXggZTI2NDdkMWEzMWViZDc4MGE0NGM3MWM2NmZlMDQ0ZGI0YmE3
OTE4NC4uYjllNTM1NDljZGY4OTRjMjAxYWI2YWVlZWZjOTkxYTdkOWRlODY3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0zMTQsNyArMzE0LDcgQEAgX19a
TjNKU0M5TWFya1N0YWNrMTBzX3BhZ2VTaXplRQogX19aTjNKU0M5TWFya1N0YWNrMThpbml0aWFs
aXplUGFnZXNpemVFdgogX19aTjNKU0M5U3RydWN0dXJlMTdzdG9wSWdub3JpbmdMZWFrc0V2CiBf
X1pOM0pTQzlTdHJ1Y3R1cmUxOHN0YXJ0SWdub3JpbmdMZWFrc0V2Ci1fX1pOM0pTQzlTdHJ1Y3R1
cmUyMWFkZFByb3BlcnR5VHJhbnNpdGlvbkVQUzBfUktOU18xMElkZW50aWZpZXJFalBOU182SlND
ZWxsRVJtCitfX1pOM0pTQzlTdHJ1Y3R1cmUyMWFkZFByb3BlcnR5VHJhbnNpdGlvbkVSTlNfMTJK
U0dsb2JhbERhdGFFUFMwX1JLTlNfMTBJZGVudGlmaWVyRWpQTlNfNkpTQ2VsbEVSbQogX19aTjNK
U0M5U3RydWN0dXJlMjJtYXRlcmlhbGl6ZVByb3BlcnR5TWFwRXYKIF9fWk4zSlNDOVN0cnVjdHVy
ZTI1Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbkVQUzBfTlNfN0pTVmFsdWVFCiBfX1pOM0pTQzlT
dHJ1Y3R1cmUyN2Rlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbkVSS05TXzEwSWRlbnRpZmllckUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMGEw
Y2Y4NDRkZDQyODk2MThlYThjYTNiMTQ1ZDk0NjJkNGQ4Nzc0YS4uYjIwY2E0NGQ1OTAwMGU5YTU1
ODM2ZDViNGQwYWFiMGE1YjNlYTA1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKQEAgLTczMSw3ICs3MzEsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVt
cChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJh
dG9yJgogICAgICAgICBjYXNlIG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWM6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgSlNWYWx1ZSBzY29wZSA9IEpTVmFsdWUoKCsr
aXQpLT51LmpzQ2VsbCk7CisgICAgICAgICAgICBKU1ZhbHVlIHNjb3BlID0gSlNWYWx1ZSgoKytp
dCktPnUuanNDZWxsLmdldCgpKTsKICAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICBpbnQg
ZGVwdGggPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gcmVz
b2x2ZV9nbG9iYWxfZHluYW1pY1x0ICVzLCAlcywgJXMsICVkXG4iLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHZhbHVlVG9Tb3VyY2VTdHJpbmcoZXhlYywgc2NvcGUp
LnV0ZjgoKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgpLCBk
ZXB0aCk7CkBAIC0xNDM3LDEzICsxNDM3LDExIEBAIHZvaWQgQ29kZUJsb2NrOjpkZXJlZlN0cnVj
dHVyZXMoSW5zdHJ1Y3Rpb24qIHZQQykgY29uc3QKICAgICB9CiAgICAgaWYgKHZQQ1swXS51Lm9w
Y29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9jaGFpbikgfHwgdlBD
WzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2dldHRl
cl9jaGFpbikgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3Bf
Z2V0X2J5X2lkX2N1c3RvbV9jaGFpbikpIHsKICAgICAgICAgdlBDWzRdLnUuc3RydWN0dXJlLT5k
ZXJlZigpOwotICAgICAgICB2UENbNV0udS5zdHJ1Y3R1cmVDaGFpbi0+ZGVyZWYoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVy
LT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24pKSB7CiAgICAgICAgIHZQQ1s0XS51
LnN0cnVjdHVyZS0+ZGVyZWYoKTsKICAgICAgICAgdlBDWzVdLnUuc3RydWN0dXJlLT5kZXJlZigp
OwotICAgICAgICB2UENbNl0udS5zdHJ1Y3R1cmVDaGFpbi0+ZGVyZWYoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRP
cGNvZGUob3BfcHV0X2J5X2lkX3JlcGxhY2UpKSB7CkBAIC0xNDg2LDEzICsxNDg0LDExIEBAIHZv
aWQgQ29kZUJsb2NrOjpyZWZTdHJ1Y3R1cmVzKEluc3RydWN0aW9uKiB2UEMpIGNvbnN0CiAgICAg
fQogICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9n
ZXRfYnlfaWRfY2hhaW4pIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bj
b2RlKG9wX2dldF9ieV9pZF9nZXR0ZXJfY2hhaW4pIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRl
cnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9jdXN0b21fY2hhaW4pKSB7CiAgICAgICAg
IHZQQ1s0XS51LnN0cnVjdHVyZS0+cmVmKCk7Ci0gICAgICAgIHZQQ1s1XS51LnN0cnVjdHVyZUNo
YWluLT5yZWYoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodlBDWzBdLnUub3Bj
b2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24pKSB7
CiAgICAgICAgIHZQQ1s0XS51LnN0cnVjdHVyZS0+cmVmKCk7CiAgICAgICAgIHZQQ1s1XS51LnN0
cnVjdHVyZS0+cmVmKCk7Ci0gICAgICAgIHZQQ1s2XS51LnN0cnVjdHVyZUNoYWluLT5yZWYoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVy
cHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX3JlcGxhY2UpKSB7CkBAIC0xNTI3LDYgKzE1
MjMsMzQgQEAgdm9pZCBDb2RlQmxvY2s6Om1hcmtBZ2dyZWdhdGUoTWFya1N0YWNrJiBtYXJrU3Rh
Y2spCiAgICAgICAgIGlmIChjYWxsTGlua0luZm8oaSkuaXNMaW5rZWQoKSkKICAgICAgICAgICAg
IG1hcmtTdGFjay5hcHBlbmQoJmNhbGxMaW5rSW5mbyhpKS5jYWxsZWUpOwogI2VuZGlmCisjaWYg
RU5BQkxFKElOVEVSUFJFVEVSKQorICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fZ2xv
YmFsRGF0YS0+aW50ZXJwcmV0ZXI7CisgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVydHlB
Y2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAg
ICBJbnN0cnVjdGlvbiogdlBDID0gJm1faW5zdHJ1Y3Rpb25zW21fcHJvcGVydHlBY2Nlc3NJbnN0
cnVjdGlvbnNbaV1dOworICAgICAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVy
LT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2NoYWluKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50
ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfZ2V0dGVyX2NoYWluKSB8fCB2UENbMF0u
dS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfY3VzdG9tX2No
YWluKSkKKyAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnZQQ1s1XS51LnN0cnVjdHVyZUNo
YWluKTsKKyAgICAgICAgZWxzZSBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5n
ZXRPcGNvZGUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24pKQorICAgICAgICAgICAgbWFya1N0YWNr
LmFwcGVuZCgmdlBDWzZdLnUuc3RydWN0dXJlQ2hhaW4pOworICAgIH0KKyNlbmRpZgorI2lmIEVO
QUJMRShKSVQpCisgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluZm9zLnNp
emUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgaWYgKFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gbV9nbG9iYWxSZXNvbHZlSW5mb3NbaV0uc3RydWN0dXJlKQorICAgICAgICAgICAg
c3RydWN0dXJlLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7CisgICAgfQorCisgICAgZm9yIChz
aXplX3Qgc2l6ZSA9IG1fc3RydWN0dXJlU3R1YkluZm9zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXpl
OyArK2kpCisgICAgICAgIG1fc3RydWN0dXJlU3R1YkluZm9zW2ldLm1hcmtBZ2dyZWdhdGUobWFy
a1N0YWNrKTsKKworICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX21ldGhvZENhbGxMaW5rSW5mb3Mu
c2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBtX21ldGhvZENhbGxMaW5rSW5mb3NbaV0uY2FjaGVkU3RydWN0dXJlKSB7Cisg
ICAgICAgICAgICAvLyBCb3RoIG1lbWJlcnMgbXVzdCBiZSBmaWxsZWQgYXQgdGhlIHNhbWUgdGlt
ZQorICAgICAgICAgICAgc3RydWN0dXJlLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7CisgICAg
ICAgICAgICBBU1NFUlQoISFtX21ldGhvZENhbGxMaW5rSW5mb3NbaV0uY2FjaGVkUHJvdG90eXBl
U3RydWN0dXJlKTsKKyAgICAgICAgICAgIG1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpXS5jYWNoZWRQ
cm90b3R5cGVTdHJ1Y3R1cmUtPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKKyAgICAgICAgfQor
ICAgIH0KKyNlbmRpZgogfQogCiBIYW5kbGVySW5mbyogQ29kZUJsb2NrOjpoYW5kbGVyRm9yQnl0
ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCmluZGV4IGYwNzdjYmZmNTgzYzYzZjVhYjhjMWY1
MDM1NTljYjEzOWZmNDBlNDguLmFhOGY2YzA2ZTNjYzdjNGJiOWQ3NGE3NTVlMDRmN2M1NzAwMWY4
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlv
bi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCkBA
IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlT
bG90LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4u
aCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yVHJhaXRzLmg+CiAKICNkZWZpbmUgUE9MWU1PUlBISUNf
TElTVF9DQUNIRV9TSVpFIDgKQEAgLTYzLDcgKzY0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICBTdHJ1Y3R1cmUqIGJhc2U7CiAgICAgICAgICAgICB1bmlvbiB7CiAgICAgICAgICAg
ICAgICAgU3RydWN0dXJlKiBwcm90bzsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiog
Y2hhaW47CisgICAgICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmVDaGFpbj4g
Y2hhaW47CiAgICAgICAgICAgICB9IHU7CiAKICAgICAgICAgICAgIHZvaWQgc2V0KFBvbHltb3Jw
aGljQWNjZXNzU3RydWN0dXJlTGlzdFN0dWJSb3V0aW5lVHlwZSBfc3R1YlJvdXRpbmUsIFN0cnVj
dHVyZSogX2Jhc2UpCkBAIC04MiwxMSArODMsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICAgICAgaXNDaGFpbiA9IGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0g
ICAgICAgICAgICB2b2lkIHNldChQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTdHViUm91
dGluZVR5cGUgX3N0dWJSb3V0aW5lLCBTdHJ1Y3R1cmUqIF9iYXNlLCBTdHJ1Y3R1cmVDaGFpbiog
X2NoYWluKQorICAgICAgICAgICAgdm9pZCBzZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U0NlbGwqIG93bmVyLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTdHViUm91dGluZVR5
cGUgX3N0dWJSb3V0aW5lLCBTdHJ1Y3R1cmUqIF9iYXNlLCBTdHJ1Y3R1cmVDaGFpbiogX2NoYWlu
KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHN0dWJSb3V0aW5lID0gX3N0dWJSb3V0
aW5lOwogICAgICAgICAgICAgICAgIGJhc2UgPSBfYmFzZTsKLSAgICAgICAgICAgICAgICB1LmNo
YWluID0gX2NoYWluOworICAgICAgICAgICAgICAgIHUuY2hhaW4uc2V0KGdsb2JhbERhdGEsIG93
bmVyLCBfY2hhaW4pOwogICAgICAgICAgICAgICAgIGlzQ2hhaW4gPSB0cnVlOwogICAgICAgICAg
ICAgfQogICAgICAgICB9IGxpc3RbUE9MWU1PUlBISUNfTElTVF9DQUNIRV9TSVpFXTsKQEAgLTEw
MSw5ICsxMDIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGxpc3RbMF0uc2V0KHN0
dWJSb3V0aW5lLCBmaXJzdEJhc2UsIGZpcnN0UHJvdG8pOwogICAgICAgICB9CiAKLSAgICAgICAg
UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJl
TGlzdFN0dWJSb3V0aW5lVHlwZSBzdHViUm91dGluZSwgU3RydWN0dXJlKiBmaXJzdEJhc2UsIFN0
cnVjdHVyZUNoYWluKiBmaXJzdENoYWluKQorICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVj
dHVyZUxpc3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBQb2x5bW9y
cGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTdHViUm91dGluZVR5cGUgc3R1YlJvdXRpbmUsIFN0cnVj
dHVyZSogZmlyc3RCYXNlLCBTdHJ1Y3R1cmVDaGFpbiogZmlyc3RDaGFpbikKICAgICAgICAgewot
ICAgICAgICAgICAgbGlzdFswXS5zZXQoc3R1YlJvdXRpbmUsIGZpcnN0QmFzZSwgZmlyc3RDaGFp
bik7CisgICAgICAgICAgICBsaXN0WzBdLnNldChnbG9iYWxEYXRhLCBvd25lciwgc3R1YlJvdXRp
bmUsIGZpcnN0QmFzZSwgZmlyc3RDaGFpbik7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGRl
cmVmU3RydWN0dXJlcyhpbnQgY291bnQpCkBAIC0xMTUsMTMgKzExNiwyMiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgICAgICBpbmZvLmJhc2UtPmRlcmVmKCk7CiAKICAgICAgICAgICAg
ICAgICBpZiAoaW5mby51LnByb3RvKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpbmZvLmlz
Q2hhaW4pCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvLnUuY2hhaW4tPmRlcmVmKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpbmZvLmlz
Q2hhaW4pCiAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLnUucHJvdG8tPmRlcmVmKCk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CisKKyAgICAgICAgdm9p
ZCBtYXJrQWdncmVnYXRlKE1hcmtTdGFjayYgbWFya1N0YWNrLCBpbnQgY291bnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAg
ICAgICAgICAgIFBvbHltb3JwaGljU3R1YkluZm8mIGluZm8gPSBsaXN0W2ldOworICAgICAgICAg
ICAgICAgIEFTU0VSVChpbmZvLmJhc2UpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIGlmIChpbmZvLnUuY2hhaW4gJiYgaW5mby5pc0NoYWluKQorICAgICAgICAgICAgICAgICAg
ICBtYXJrU3RhY2suYXBwZW5kKCZpbmZvLnUuY2hhaW4pOworICAgICAgICAgICAgfQorICAgICAg
ICB9CiAgICAgfTsKIAogICAgIHN0cnVjdCBJbnN0cnVjdGlvbiB7CkBAIC0xMzAsNyArMTQwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAjaWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVS
KQogICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBpbml0aWFsaXplIG9uZSBvZiB0aGUgcG9pbnRl
ciBtZW1iZXJzIHRvIGVuc3VyZSB0aGF0CiAgICAgICAgICAgICAvLyB0aGUgZW50aXJlIHN0cnVj
dCBpcyBpbml0aWFsaXplZCwgd2hlbiBvcGNvZGUgaXMgbm90IGEgcG9pbnRlci4KLSAgICAgICAg
ICAgIHUuanNDZWxsID0gMDsKKyAgICAgICAgICAgIHUuanNDZWxsLmNsZWFyKCk7CiAjZW5kaWYK
ICAgICAgICAgICAgIHUub3Bjb2RlID0gb3Bjb2RlOwogICAgICAgICB9CkBAIC0xMzksMTMgKzE0
OSwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgLy8gV2UgaGF2
ZSB0byBpbml0aWFsaXplIG9uZSBvZiB0aGUgcG9pbnRlciBtZW1iZXJzIHRvIGVuc3VyZSB0aGF0
CiAgICAgICAgICAgICAvLyB0aGUgZW50aXJlIHN0cnVjdCBpcyBpbml0aWFsaXplZCBpbiA2NC1i
aXQuCi0gICAgICAgICAgICB1LmpzQ2VsbCA9IDA7CisgICAgICAgICAgICB1LmpzQ2VsbC5jbGVh
cigpOwogICAgICAgICAgICAgdS5vcGVyYW5kID0gb3BlcmFuZDsKICAgICAgICAgfQogCiAgICAg
ICAgIEluc3RydWN0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7IHUuc3RydWN0dXJlID0gc3Ry
dWN0dXJlOyB9Ci0gICAgICAgIEluc3RydWN0aW9uKFN0cnVjdHVyZUNoYWluKiBzdHJ1Y3R1cmVD
aGFpbikgeyB1LnN0cnVjdHVyZUNoYWluID0gc3RydWN0dXJlQ2hhaW47IH0KLSAgICAgICAgSW5z
dHJ1Y3Rpb24oSlNDZWxsKiBqc0NlbGwpIHsgdS5qc0NlbGwgPSBqc0NlbGw7IH0KKyAgICAgICAg
SW5zdHJ1Y3Rpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBTdHJ1
Y3R1cmVDaGFpbiogc3RydWN0dXJlQ2hhaW4pCisgICAgICAgIHsKKyAgICAgICAgICAgIHUuc3Ry
dWN0dXJlQ2hhaW4uY2xlYXIoKTsKKyAgICAgICAgICAgIHUuc3RydWN0dXJlQ2hhaW4uc2V0KGds
b2JhbERhdGEsIG93bmVyLCBzdHJ1Y3R1cmVDaGFpbik7CisgICAgICAgIH0KKyAgICAgICAgSW5z
dHJ1Y3Rpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBKU0NlbGwq
IGpzQ2VsbCkKKyAgICAgICAgeworICAgICAgICAgICAgdS5qc0NlbGwuY2xlYXIoKTsKKyAgICAg
ICAgICAgIHUuanNDZWxsLnNldChnbG9iYWxEYXRhLCBvd25lciwganNDZWxsKTsKKyAgICAgICAg
fQogICAgICAgICBJbnN0cnVjdGlvbihQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBv
bHltb3JwaGljU3RydWN0dXJlcykgeyB1LnBvbHltb3JwaGljU3RydWN0dXJlcyA9IHBvbHltb3Jw
aGljU3RydWN0dXJlczsgfQogICAgICAgICBJbnN0cnVjdGlvbihQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYyBnZXR0ZXJGdW5jKSB7IHUuZ2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7IH0KIApAQCAt
MTUzLDggKzE3MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgT3Bjb2RlIG9wY29k
ZTsKICAgICAgICAgICAgIGludCBvcGVyYW5kOwogICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmU7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogc3RydWN0dXJlQ2hhaW47Ci0gICAg
ICAgICAgICBKU0NlbGwqIGpzQ2VsbDsKKyAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3Ry
dWN0dXJlQ2hhaW4+IHN0cnVjdHVyZUNoYWluOworICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFz
ZTxKU0NlbGw+IGpzQ2VsbDsKICAgICAgICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJl
TGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzOwogICAgICAgICAgICAgUHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYzsKICAgICAgICAgfSB1OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggNWRmNDg0
MTRhYWM3Yjg2ZDFkNzhlMzkxMmQ3MmY3OTYyMjc3OWY3NS4uYzZlNTJkMjQwNjI2OWU0YTVmMDkw
ODk5NTI2YmUzMTY4Y2QyZGU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC00NCw3ICs0NCw2IEBAIHZvaWQgU3Ry
dWN0dXJlU3R1YkluZm86OmRlcmVmKCkKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgYWNjZXNz
X2dldF9ieV9pZF9jaGFpbjoKICAgICAgICAgdS5nZXRCeUlkQ2hhaW4uYmFzZU9iamVjdFN0cnVj
dHVyZS0+ZGVyZWYoKTsKLSAgICAgICAgdS5nZXRCeUlkQ2hhaW4uY2hhaW4tPmRlcmVmKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfc2VsZl9saXN0OiB7CiAg
ICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1
cmVzID0gdS5nZXRCeUlkU2VsZkxpc3Quc3RydWN0dXJlTGlzdDsKQEAgLTYwLDggKzU5LDYgQEAg
dm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6ZGVyZWYoKQogICAgIH0KICAgICBjYXNlIGFjY2Vzc19w
dXRfYnlfaWRfdHJhbnNpdGlvbjoKICAgICAgICAgdS5wdXRCeUlkVHJhbnNpdGlvbi5wcmV2aW91
c1N0cnVjdHVyZS0+ZGVyZWYoKTsKLSAgICAgICAgdS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1Y3R1
cmUtPmRlcmVmKCk7Ci0gICAgICAgIHUucHV0QnlJZFRyYW5zaXRpb24uY2hhaW4tPmRlcmVmKCk7
CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVwbGFjZToKICAg
ICAgICAgdS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5kZXJlZigpOwpAQCAt
NzgsNiArNzUsNTEgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6ZGVyZWYoKQogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9CisKK3ZvaWQgU3RydWN0dXJlU3R1YkluZm86
Om1hcmtBZ2dyZWdhdGUoTWFya1N0YWNrJiBtYXJrU3RhY2spCit7CisgICAgc3dpdGNoIChhY2Nl
c3NUeXBlKSB7CisgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGY6CisgICAgICAgIHUuZ2V0
QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOwor
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3Byb3RvOgorICAgICAg
ICB1LmdldEJ5SWRQcm90by5iYXNlT2JqZWN0U3RydWN0dXJlLT5tYXJrQWdncmVnYXRlKG1hcmtT
dGFjayk7CisgICAgICAgIHUuZ2V0QnlJZFByb3RvLnByb3RvdHlwZVN0cnVjdHVyZS0+bWFya0Fn
Z3JlZ2F0ZShtYXJrU3RhY2spOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBhY2Nlc3NfZ2V0
X2J5X2lkX2NoYWluOgorICAgICAgICB1LmdldEJ5SWRDaGFpbi5iYXNlT2JqZWN0U3RydWN0dXJl
LT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnUu
Z2V0QnlJZENoYWluLmNoYWluKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgYWNjZXNzX2dl
dF9ieV9pZF9zZWxmX2xpc3Q6IHsKKyAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVM
aXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMgPSB1LmdldEJ5SWRTZWxmTGlzdC5zdHJ1Y3R1cmVM
aXN0OworICAgICAgICBwb2x5bW9ycGhpY1N0cnVjdHVyZXMtPm1hcmtBZ2dyZWdhdGUobWFya1N0
YWNrLCB1LmdldEJ5SWRTZWxmTGlzdC5saXN0U2l6ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3Byb3RvX2xpc3Q6IHsKKyAgICAgICAgUG9seW1v
cnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMgPSB1LmdldEJ5
SWRQcm90b0xpc3Quc3RydWN0dXJlTGlzdDsKKyAgICAgICAgcG9seW1vcnBoaWNTdHJ1Y3R1cmVz
LT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjaywgdS5nZXRCeUlkUHJvdG9MaXN0Lmxpc3RTaXplKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfdHJhbnNp
dGlvbjoKKyAgICAgICAgdS5wdXRCeUlkVHJhbnNpdGlvbi5wcmV2aW91c1N0cnVjdHVyZS0+bWFy
a0FnZ3JlZ2F0ZShtYXJrU3RhY2spOworICAgICAgICB1LnB1dEJ5SWRUcmFuc2l0aW9uLnN0cnVj
dHVyZS0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOworICAgICAgICBtYXJrU3RhY2suYXBwZW5k
KCZ1LnB1dEJ5SWRUcmFuc2l0aW9uLmNoYWluKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
YWNjZXNzX3B1dF9ieV9pZF9yZXBsYWNlOgorICAgICAgICB1LnB1dEJ5SWRSZXBsYWNlLmJhc2VP
YmplY3RTdHJ1Y3R1cmUtPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKKyAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZDoKKyAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWQ6
CisgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX2dlbmVyaWM6CisgICAgY2FzZSBhY2Nlc3NfcHV0
X2J5X2lkX2dlbmVyaWM6CisgICAgY2FzZSBhY2Nlc3NfZ2V0X2FycmF5X2xlbmd0aDoKKyAgICBj
YXNlIGFjY2Vzc19nZXRfc3RyaW5nX2xlbmd0aDoKKyAgICAgICAgLy8gVGhlc2UgaW5zdHJ1Y3Rp
b25zIGRvbid0IHJlZiB0aGVpciBTdHJ1Y3R1cmVzLgorICAgICAgICByZXR1cm47CisgICAgZGVm
YXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQogI2VuZGlmCiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU3R1YkluZm8uaAppbmRleCA4ZTJjNDg5YWE5MzAyMzEzOWI5YWY5NmRhZThl
NTY1ZGVjZjIyNGZlLi42NzAyZGNlY2Q0OTc5ZTM1NjUyNmQ4NTk4Yzg0MzdjYWU0NDgwNjVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uaApAQCAtNzcsMTUgKzc3LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcHJv
dG90eXBlU3RydWN0dXJlLT5yZWYoKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgaW5pdEdl
dEJ5SWRDaGFpbihTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWlu
KiBjaGFpbikKKyAgICAgICAgdm9pZCBpbml0R2V0QnlJZENoYWluKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNDZWxsKiBvd25lciwgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlLCBT
dHJ1Y3R1cmVDaGFpbiogY2hhaW4pCiAgICAgICAgIHsKICAgICAgICAgICAgIGFjY2Vzc1R5cGUg
PSBhY2Nlc3NfZ2V0X2J5X2lkX2NoYWluOwogCiAgICAgICAgICAgICB1LmdldEJ5SWRDaGFpbi5i
YXNlT2JqZWN0U3RydWN0dXJlID0gYmFzZU9iamVjdFN0cnVjdHVyZTsKICAgICAgICAgICAgIGJh
c2VPYmplY3RTdHJ1Y3R1cmUtPnJlZigpOwogCi0gICAgICAgICAgICB1LmdldEJ5SWRDaGFpbi5j
aGFpbiA9IGNoYWluOwotICAgICAgICAgICAgY2hhaW4tPnJlZigpOworICAgICAgICAgICAgdS5n
ZXRCeUlkQ2hhaW4uY2hhaW4uc2V0KGdsb2JhbERhdGEsIG93bmVyLCBjaGFpbik7CiAgICAgICAg
IH0KIAogICAgICAgICB2b2lkIGluaXRHZXRCeUlkU2VsZkxpc3QoUG9seW1vcnBoaWNBY2Nlc3NT
dHJ1Y3R1cmVMaXN0KiBzdHJ1Y3R1cmVMaXN0LCBpbnQgbGlzdFNpemUpCkBAIC0xMDYsNyArMTA1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgLy8gUHV0QnlJZCoKIAotICAgICAgICB2
b2lkIGluaXRQdXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHByZXZpb3VzU3RydWN0dXJlLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluKQorICAgICAgICB2b2lk
IGluaXRQdXRCeUlkVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCog
b3duZXIsIFN0cnVjdHVyZSogcHJldmlvdXNTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4pCiAgICAgICAgIHsKICAgICAgICAgICAgIGFjY2Vzc1R5
cGUgPSBhY2Nlc3NfcHV0X2J5X2lkX3RyYW5zaXRpb247CiAKQEAgLTExNiw4ICsxMTUsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHUucHV0QnlJZFRyYW5zaXRpb24uc3RydWN0dXJl
ID0gc3RydWN0dXJlOwogICAgICAgICAgICAgc3RydWN0dXJlLT5yZWYoKTsKIAotICAgICAgICAg
ICAgdS5wdXRCeUlkVHJhbnNpdGlvbi5jaGFpbiA9IGNoYWluOwotICAgICAgICAgICAgY2hhaW4t
PnJlZigpOworICAgICAgICAgICAgdS5wdXRCeUlkVHJhbnNpdGlvbi5jaGFpbi5zZXQoZ2xvYmFs
RGF0YSwgb3duZXIsIGNoYWluKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgaW5pdFB1dEJ5
SWRSZXBsYWNlKFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZSkKQEAgLTEyOSw2ICsxMjcs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZGVyZWYoKTsK
KyAgICAgICAgdm9pZCBtYXJrQWdncmVnYXRlKE1hcmtTdGFjayYpOwogCiAgICAgICAgIGJvb2wg
c2Vlbk9uY2UoKQogICAgICAgICB7CkBAIC0xNTMsNyArMTUyLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICB9IGdldEJ5SWRQcm90bzsKICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAg
ICAgICAgICAgICAgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlOwotICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbjsKKyAgICAgICAgICAgICAgICBXcml0ZUJhcnJpZXJC
YXNlPFN0cnVjdHVyZUNoYWluPiBjaGFpbjsKICAgICAgICAgICAgIH0gZ2V0QnlJZENoYWluOwog
ICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0
cnVjdHVyZUxpc3QqIHN0cnVjdHVyZUxpc3Q7CkBAIC0xNjYsNyArMTY1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgIFN0cnVjdHVyZSog
cHJldmlvdXNTdHJ1Y3R1cmU7CiAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7
Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluOworICAgICAgICAgICAgICAg
IFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlQ2hhaW4+IGNoYWluOwogICAgICAgICAgICAgfSBw
dXRCeUlkVHJhbnNpdGlvbjsKICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAg
U3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBiNWRm
NTNmMmFhMThjYjcyMWM1Nzc3NDVhODI2YTkzMTk0YTA3MThlLi41YWYzNDIwNzM3YWM1NjY4N2Q1
YjRlMGFjYjIzMjBiZTJlMGU2MzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtOTI1LDcgKzkyNSw3
IEBAIFBhc3NSZWZQdHI8TGFiZWw+IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcElmTm90RnVu
Y3Rpb25DYWxsKFJlZ2lzdGVySUQqIGNvbmQsCiAKICAgICBlbWl0T3Bjb2RlKG9wX2puZXFfcHRy
KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY29uZC0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKG1fc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LT5jYWxsRnVuY3Rpb24o
KSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKEluc3RydWN0aW9uKCptX2dsb2JhbERhdGEs
IG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgbV9zY29wZUNoYWluLT5nbG9iYWxPYmpl
Y3QtPmNhbGxGdW5jdGlvbigpKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRhcmdldC0+
YmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiAgICAgcmV0dXJuIHRhcmdldDsK
IH0KQEAgLTkzNiw3ICs5MzYsNyBAQCBQYXNzUmVmUHRyPExhYmVsPiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkoUmVnaXN0ZXJJRCogY29uZAogCiAgICAgZW1p
dE9wY29kZShvcF9qbmVxX3B0cik7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNvbmQtPmlu
ZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX3Njb3BlQ2hhaW4tPmdsb2JhbE9i
amVjdC0+YXBwbHlGdW5jdGlvbigpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoSW5zdHJ1
Y3Rpb24oKm1fZ2xvYmFsRGF0YSwgbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBtX3Nj
b3BlQ2hhaW4tPmdsb2JhbE9iamVjdC0+YXBwbHlGdW5jdGlvbigpKSk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKHRhcmdldC0+YmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7
CiAgICAgcmV0dXJuIHRhcmdldDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xs
ZWN0b3IvaGFuZGxlcy9IYW5kbGUuaAppbmRleCBkNGUzOGMwY2ZlOGIzYTM2NmE4OTFjZGMwZDJm
MGZlYWEyODVhZjM4Li5jMWQ4YTM1ZTMwM2U4ZDgxNTA0ODA3NmViNTg4NzhiN2NmMTJjNWVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZS5o
CkBAIC0xMDQsMTAgKzEwNCwzNSBAQCB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFuZGxlVHlwZXM8VW5r
bm93bj4gewogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEJhc2UsIHR5cGVuYW1lIFQ+IHN0cnVj
dCBIYW5kbGVDb252ZXJ0ZXIgewotICAgIFQqIG9wZXJhdG9yLT4oKSB7IHJldHVybiBzdGF0aWNf
Y2FzdDxCYXNlKj4odGhpcyktPmdldCgpOyB9Ci0gICAgY29uc3QgVCogb3BlcmF0b3ItPigpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+Z2V0KCk7IH0KLSAg
ICBUKiBvcGVyYXRvciooKSB7IHJldHVybiBzdGF0aWNfY2FzdDxCYXNlKj4odGhpcyktPmdldCgp
OyB9Ci0gICAgY29uc3QgVCogb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgQmFzZSo+KHRoaXMpLT5nZXQoKTsgfQorICAgIFQqIG9wZXJhdG9yLT4oKQorICAgIHsK
KyNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCisgICAgICAgIEFTU0VSVCghc3RhdGljX2Nhc3Q8Y29u
c3QgQmFzZSo+KHRoaXMpLT5nZXQoKSB8fCAhc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMp
LT5nZXQoKS0+aXNab21iaWUoKSk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEJhc2UqPih0aGlzKS0+Z2V0KCk7CisgICAgfQorICAgIGNvbnN0IFQqIG9wZXJhdG9yLT4oKSBj
b25zdAorICAgIHsKKyNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCisgICAgICAgIEFTU0VSVCghc3Rh
dGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5nZXQoKSB8fCAhc3RhdGljX2Nhc3Q8Y29uc3Qg
QmFzZSo+KHRoaXMpLT5nZXQoKS0+aXNab21iaWUoKSk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+Z2V0KCk7CisgICAgfQorCisgICAgVCog
b3BlcmF0b3IqKCkKKyAgICB7CisjaWYgRU5BQkxFKEpTQ19aT01CSUVTKQorICAgICAgICBBU1NF
UlQoIXN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+Z2V0KCkgfHwgIXN0YXRpY19jYXN0
PGNvbnN0IEJhc2UqPih0aGlzKS0+Z2V0KCktPmlzWm9tYmllKCkpOworI2VuZGlmCisgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxCYXNlKj4odGhpcyktPmdldCgpOworICAgIH0KKyAgICBjb25z
dCBUKiBvcGVyYXRvciooKSBjb25zdAorICAgIHsKKyNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCisg
ICAgICAgIEFTU0VSVCghc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5nZXQoKSB8fCAh
c3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5nZXQoKS0+aXNab21iaWUoKSk7CisjZW5k
aWYKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+Z2V0KCk7
CisgICAgfQogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEJhc2U+IHN0cnVjdCBIYW5kbGVDb252
ZXJ0ZXI8QmFzZSwgVW5rbm93bj4gewpAQCAtMTE4LDcgKzE0MywxMyBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQmFzZT4gc3RydWN0IEhhbmRsZUNvbnZlcnRlcjxCYXNlLCBVbmtub3duPiB7CiAgICAg
Ym9vbCBpc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0IHsgcmV0dXJuIGpzVmFsdWUoKS5pc1VuZGVm
aW5lZE9yTnVsbCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgSlNWYWx1ZSBqc1ZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5nZXQoKTsgfQorICAgIEpT
VmFsdWUganNWYWx1ZSgpIGNvbnN0CisgICAgeworI2lmIEVOQUJMRShKU0NfWk9NQklFUykKKyAg
ICAgICAgQVNTRVJUKCFzdGF0aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcyktPmdldCgpIHx8ICFz
dGF0aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcyktPmdldCgpLmlzWm9tYmllKCkpOworI2VuZGlm
CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcyktPmdldCgpOwor
ICAgIH0KIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBIYW5kbGUgOiBwdWJsaWMg
SGFuZGxlQmFzZSwgcHVibGljIEhhbmRsZUNvbnZlcnRlcjxIYW5kbGU8VD4sIFQ+IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4
IDA4MjZmNWRiZmM1OWNjYWM0YWFmYTNiMWRkNDg1ZDZkNTFlODllMmEuLjYwMjEyNzk2YWIyMzhi
OGI4YWNiOTRhNjM0ZmQ3MDVkZGE4YzY4YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMzUzNywxMCArMzUzNyw5IEBAIHNr
aXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAgICAgIHRvIHB0ciwgdXNpbmcgcG9pbnRlciBlcXVh
bGl0eS4KICAgICAgICAgICovCiAgICAgICAgIGludCBzcmMgPSB2UENbMV0udS5vcGVyYW5kOwot
ICAgICAgICBKU1ZhbHVlIHB0ciA9IEpTVmFsdWUodlBDWzJdLnUuanNDZWxsKTsKICAgICAgICAg
aW50IHRhcmdldCA9IHZQQ1szXS51Lm9wZXJhbmQ7CiAgICAgICAgIEpTVmFsdWUgc3JjVmFsdWUg
PSBjYWxsRnJhbWUtPnIoc3JjKS5qc1ZhbHVlKCk7Ci0gICAgICAgIGlmIChzcmNWYWx1ZSAhPSBw
dHIpIHsKKyAgICAgICAgaWYgKHNyY1ZhbHVlICE9IHZQQ1syXS51LmpzQ2VsbC5nZXQoKSkgewog
ICAgICAgICAgICAgdlBDICs9IHRhcmdldDsKICAgICAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04o
KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5k
ZXggOTY1ZDZkOTJiY2FmMjllNTdjMTg5OGEzYWRmMDMzZTY5MDIxNTIyYi4uZGFjZWVhNmNhNjhl
NzU3ZTFmNjdkNDE1OTEyZmM3MTI0MjI3NGZhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCkBAIC03NjIsNyArNzYyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5l
cV9udWxsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB2b2lkIEpJVDo6ZW1pdF9v
cF9qbmVxX3B0cihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIHVuc2ln
bmVkIHNyYyA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgSlNDZWxsKiBw
dHIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5qc0NlbGw7CisgICAgSlNDZWxsKiBwdHIgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5qc0NlbGwuZ2V0KCk7CiAgICAgdW5zaWduZWQgdGFyZ2V0
ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAgICAKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKHNyYywgcmVnVDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDljM2E5MjMyNmY1ZDExMTBiNzFmYWZiM2M4ZTY0MzNj
YTkxNGJlODMuLmJjMGIyY2I5NGQ1MTVmMjYzZDQwZWJhN2U0MzhlMmE3MWQyNTZjYTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKQEAgLTk3OSw3
ICs5NzksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX251bGwoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHZvaWQgSklUOjplbWl0X29wX2puZXFfcHRyKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgdW5zaWduZWQgc3JjID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKLSAgICBKU0NlbGwqIHB0ciA9IGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51LmpzQ2VsbDsKKyAgICBKU0NlbGwqIHB0ciA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lmpz
Q2VsbC5nZXQoKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS5vcGVyYW5kOwogCiAgICAgZW1pdExvYWQoc3JjLCByZWdUMSwgcmVnVDApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCAwZjRlMTc4
N2FiYmUxYmJmZDQxN2QyNjM2YWUzZjFhN2M4YjJiMzZmLi42OGY4ZGRhMWE1N2Q1ZmVlYjEyYTcz
OGRlNjJkN2VkMGRjY2I2OWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcApAQCAtOTc5LDggKzk3OSw3IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5
bW9ycGhpCiAKICAgICAvLyBUcmFjayB0aGUgc3R1YiB3ZSBoYXZlIGNyZWF0ZWQgc28gdGhhdCBp
dCB3aWxsIGJlIGRlbGV0ZWQgbGF0ZXIuCiAgICAgc3RydWN0dXJlLT5yZWYoKTsKLSAgICBjaGFp
bi0+cmVmKCk7Ci0gICAgcHJvdG90eXBlU3RydWN0dXJlcy0+bGlzdFtjdXJyZW50SW5kZXhdLnNl
dChlbnRyeUxhYmVsLCBzdHJ1Y3R1cmUsIGNoYWluKTsKKyAgICBwcm90b3R5cGVTdHJ1Y3R1cmVz
LT5saXN0W2N1cnJlbnRJbmRleF0uc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVC
bG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGVudHJ5TGFiZWwsIHN0cnVjdHVyZSwgY2hhaW4pOwog
CiAgICAgLy8gRmluYWxseSBwYXRjaCB0aGUganVtcCB0byBzbG93IGNhc2UgYmFjayBpbiB0aGUg
aG90IHBhdGggdG8ganVtcCBoZXJlIGluc3RlYWQuCiAgICAgQ29kZUxvY2F0aW9uSnVtcCBqdW1w
TG9jYXRpb24gPSBzdHViSW5mby0+aG90UGF0aEJlZ2luLmp1bXBBdE9mZnNldChwYXRjaE9mZnNl
dEdldEJ5SWRCcmFuY2hUb1Nsb3dDYXNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IDFlZWZlM2Q3YWE5Y2UzZWFk
NGQ4NjQzYmVkOTEyM2ZjZmYxM2EwMjUuLjJhNDdlNWNhZmE1OTAxNmFkNzhkZTZmMTc0ODM4ZTQ2
NmFjZDQ4YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMTAwNyw4ICsxMDA3LDcgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBv
bHltb3JwaGkKICAgICAKICAgICAvLyBUcmFjayB0aGUgc3R1YiB3ZSBoYXZlIGNyZWF0ZWQgc28g
dGhhdCBpdCB3aWxsIGJlIGRlbGV0ZWQgbGF0ZXIuCiAgICAgc3RydWN0dXJlLT5yZWYoKTsKLSAg
ICBjaGFpbi0+cmVmKCk7Ci0gICAgcHJvdG90eXBlU3RydWN0dXJlcy0+bGlzdFtjdXJyZW50SW5k
ZXhdLnNldChlbnRyeUxhYmVsLCBzdHJ1Y3R1cmUsIGNoYWluKTsKKyAgICBwcm90b3R5cGVTdHJ1
Y3R1cmVzLT5saXN0W2N1cnJlbnRJbmRleF0uc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBt
X2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGVudHJ5TGFiZWwsIHN0cnVjdHVyZSwgY2hh
aW4pOwogICAgIAogICAgIC8vIEZpbmFsbHkgcGF0Y2ggdGhlIGp1bXAgdG8gc2xvdyBjYXNlIGJh
Y2sgaW4gdGhlIGhvdCBwYXRoIHRvIGp1bXAgaGVyZSBpbnN0ZWFkLgogICAgIENvZGVMb2NhdGlv
bkp1bXAganVtcExvY2F0aW9uID0gc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5qdW1wQXRPZmZzZXQo
cGF0Y2hPZmZzZXRHZXRCeUlkQnJhbmNoVG9TbG93Q2FzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuY3BwCmluZGV4IGEzOGYwMWUyMjMxNWQ3NWY3YTBiNThmYzUwZTM1MWE3MTBm
OTYyZWIuLmNhYzlmMDI1MTk0NzY0NDM2MDU4MzAyNDU4Mjc4OTIxZmQ1ZDcwZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC03NzEsNyArNzcxLDcgQEAgTkVWRVJf
SU5MSU5FIHZvaWQgSklUVGh1bmtzOjp0cnlDYWNoZVB1dEJ5SUQoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIENvZGVCbG9jayogY28KICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oY2FsbEZy
YW1lLCBiYXNlQ2VsbCk7CiAKICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIHByb3RvdHlwZUNoYWlu
ID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihjYWxsRnJhbWUpOwotICAgICAgICBzdHViSW5m
by0+aW5pdFB1dEJ5SWRUcmFuc2l0aW9uKHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLCBzdHJ1Y3R1
cmUsIHByb3RvdHlwZUNoYWluKTsKKyAgICAgICAgc3R1YkluZm8tPmluaXRQdXRCeUlkVHJhbnNp
dGlvbihjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KSwgc3RydWN0dXJlLT5wcmV2aW91c0lEKCksIHN0cnVjdHVyZSwgcHJvdG90eXBlQ2hhaW4pOwog
ICAgICAgICBKSVQ6OmNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihjYWxsRnJhbWUtPnNjb3BlQ2hh
aW4oKS0+Z2xvYmFsRGF0YSwgY29kZUJsb2NrLCBzdHViSW5mbywgc3RydWN0dXJlLT5wcmV2aW91
c0lEKCksIHN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSwgcHJvdG90eXBlQ2hhaW4sIHJl
dHVybkFkZHJlc3MsIGRpcmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC04NjYsNyAr
ODY2LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSklUVGh1bmtzOjp0cnlDYWNoZUdldEJ5SUQoQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY28KICAgICB9CiAKICAgICBTdHJ1Y3R1cmVD
aGFpbiogcHJvdG90eXBlQ2hhaW4gPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGNhbGxGcmFt
ZSk7Ci0gICAgc3R1YkluZm8tPmluaXRHZXRCeUlkQ2hhaW4oc3RydWN0dXJlLCBwcm90b3R5cGVD
aGFpbik7CisgICAgc3R1YkluZm8tPmluaXRHZXRCeUlkQ2hhaW4oY2FsbEZyYW1lLT5nbG9iYWxE
YXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSwgcHJvdG90eXBl
Q2hhaW4pOwogICAgIEpJVDo6Y29tcGlsZUdldEJ5SWRDaGFpbihjYWxsRnJhbWUtPnNjb3BlQ2hh
aW4oKS0+Z2xvYmFsRGF0YSwgY2FsbEZyYW1lLCBjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHJ1Y3R1
cmUsIHByb3RvdHlwZUNoYWluLCBjb3VudCwgcHJvcGVydHlOYW1lLCBzbG90LCBvZmZzZXQsIHJl
dHVybkFkZHJlc3MpOwogfQogCkBAIC0xNTUzLDcgKzE1NTMsNyBAQCBERUZJTkVfU1RVQl9GVU5D
VElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZ2V0X2J5X2lkX3NlbGZfZmFpbCkKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLXN0YXRpYyBQb2x5bW9ycGhpY0FjY2Vzc1N0
cnVjdHVyZUxpc3QqIGdldFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdFNsb3QoU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBpbnQmIGxpc3RJbmRleCkKK3N0YXRpYyBQb2x5bW9ycGhp
Y0FjY2Vzc1N0cnVjdHVyZUxpc3QqIGdldFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdFNs
b3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lciwgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBpbnQmIGxpc3RJbmRleCkKIHsKICAgICBQb2x5bW9y
cGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QgPSAwOwogICAg
IGxpc3RJbmRleCA9IDE7CkBAIC0xNTY1LDcgKzE1NjUsNyBAQCBzdGF0aWMgUG9seW1vcnBoaWNB
Y2Nlc3NTdHJ1Y3R1cmVMaXN0KiBnZXRQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTbG90
KFN0cgogICAgICAgICBzdHViSW5mby0+aW5pdEdldEJ5SWRQcm90b0xpc3QocHJvdG90eXBlU3Ry
dWN0dXJlTGlzdCwgMik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9p
ZF9jaGFpbjoKLSAgICAgICAgcHJvdG90eXBlU3RydWN0dXJlTGlzdCA9IG5ldyBQb2x5bW9ycGhp
Y0FjY2Vzc1N0cnVjdHVyZUxpc3Qoc3R1YkluZm8tPnN0dWJSb3V0aW5lLCBzdHViSW5mby0+dS5n
ZXRCeUlkQ2hhaW4uYmFzZU9iamVjdFN0cnVjdHVyZSwgc3R1YkluZm8tPnUuZ2V0QnlJZENoYWlu
LmNoYWluKTsKKyAgICAgICAgcHJvdG90eXBlU3RydWN0dXJlTGlzdCA9IG5ldyBQb2x5bW9ycGhp
Y0FjY2Vzc1N0cnVjdHVyZUxpc3QoZ2xvYmFsRGF0YSwgb3duZXIsIHN0dWJJbmZvLT5zdHViUm91
dGluZSwgc3R1YkluZm8tPnUuZ2V0QnlJZENoYWluLmJhc2VPYmplY3RTdHJ1Y3R1cmUsIHN0dWJJ
bmZvLT51LmdldEJ5SWRDaGFpbi5jaGFpbi5nZXQoKSk7CiAgICAgICAgIHN0dWJJbmZvLT5zdHVi
Um91dGluZSA9IENvZGVMb2NhdGlvbkxhYmVsKCk7CiAgICAgICAgIHN0dWJJbmZvLT5pbml0R2V0
QnlJZFByb3RvTGlzdChwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCAyKTsKICAgICAgICAgYnJlYWs7
CkBAIC0xNjUzLDcgKzE2NTMsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1
ZSwgb3BfZ2V0X2J5X2lkX3Byb3RvX2xpc3QpCiAgICAgICAgIH0KIAogICAgICAgICBpbnQgbGlz
dEluZGV4OwotICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlw
ZVN0cnVjdHVyZUxpc3QgPSBnZXRQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTbG90KHN0
dWJJbmZvLCBsaXN0SW5kZXgpOworICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxp
c3QqIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QgPSBnZXRQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVy
ZUxpc3RTbG90KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0
YWJsZSgpLCBzdHViSW5mbywgbGlzdEluZGV4KTsKICAgICAgICAgaWYgKGxpc3RJbmRleCA8IFBP
TFlNT1JQSElDX0xJU1RfQ0FDSEVfU0laRSkgewogICAgICAgICAgICAgSklUOjpjb21waWxlR2V0
QnlJZFByb3RvTGlzdChjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsRGF0YSwgY2FsbEZy
YW1lLCBjb2RlQmxvY2ssIHN0dWJJbmZvLCBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCBsaXN0SW5k
ZXgsIHN0cnVjdHVyZSwgc2xvdEJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QsIG9mZnNldCk7CiAKQEAgLTE2NjMsNyArMTY2Myw3IEBAIERFRklORV9TVFVCX0ZVTkNU
SU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9nZXRfYnlfaWRfcHJvdG9fbGlzdCkKICAgICB9IGVsc2Ug
aWYgKHNpemVfdCBjb3VudCA9IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGNhbGxGcmFtZSwgYmFz
ZVZhbHVlLCBzbG90LnNsb3RCYXNlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KSkgewogICAgICAg
ICBBU1NFUlQoIWJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgp
KTsKICAgICAgICAgaW50IGxpc3RJbmRleDsKLSAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1
Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0ID0gZ2V0UG9seW1vcnBoaWNBY2Nlc3NT
dHJ1Y3R1cmVMaXN0U2xvdChzdHViSW5mbywgbGlzdEluZGV4KTsKKyAgICAgICAgUG9seW1vcnBo
aWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0ID0gZ2V0UG9seW1v
cnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U2xvdChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3R1YkluZm8sIGxpc3RJbmRleCk7CiAgICAgICAg
IAogICAgICAgICBpZiAobGlzdEluZGV4IDwgUE9MWU1PUlBISUNfTElTVF9DQUNIRV9TSVpFKSB7
CiAgICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogcHJvdG9DaGFpbiA9IHN0cnVjdHVyZS0+cHJv
dG90eXBlQ2hhaW4oY2FsbEZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmgKaW5kZXggNjJjZWUzNzhkOTdlYzcxOGU1ZTZiOThkYTZhYTc0NzY5ZjlmNDExOC4uYWIwZTIz
NzM1MThmZDhjNjhjMTg2MDBmZmZiNzk5MGNmNzY4NGJhNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmgKQEAgLTY4LDYgKzY4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRTcGFjZTsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtl
ZEJsb2NrOwogICAgICAgICBmcmllbmQgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CisgICAgICAgIGZy
aWVuZCBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxp
Y2l0IEpTQ2VsbChTdHJ1Y3R1cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuY3BwCmluZGV4IDFkNWZjZjNjYzQwNzBkNDJjNGI2ZTViODNlMDNmNTRk
NTU3NTE4MGMuLmVlMTgyOWIzMWFkYzM1ZDk1MGIyNTU4YWM0ZThlNmM0YzJjYmM0NzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcApAQCAtMTg0
LDYgKzE4NCw3IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlIGds
b2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUgdGhyZWFkCiAgICAgcHJvZ3JhbUV4ZWN1dGFi
bGVTdHJ1Y3R1cmUgPSBQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBq
c051bGwoKSk7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlID0gRnVuY3Rpb25FeGVj
dXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKTsKICAgICBkdW1teU1hcmth
YmxlQ2VsbFN0cnVjdHVyZSA9IEpTQ2VsbDo6Y3JlYXRlRHVtbXlTdHJ1Y3R1cmUoKnRoaXMpOwor
ICAgIHN0cnVjdHVyZUNoYWluU3RydWN0dXJlID0gU3RydWN0dXJlQ2hhaW46OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywganNOdWxsKCkpOwogCiAgICAgaW50ZXJwcmV0ZXIgPSBuZXcgSW50ZXJwcmV0
ZXIoKnRoaXMpOwogICAgIGlmIChnbG9iYWxEYXRhVHlwZSA9PSBEZWZhdWx0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAppbmRleCAyOGJkYWRlMTIxMWNi
YWJmN2NmMTE4ODVhMWVkOGRjZTI2MDY3MzgwLi4zNGVhNzVkNjEyMWI2ZDM1MGM4ZTMxYTA0ZmI4
ZTMzNDgzYTkwMTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuaApAQCAtMTYxLDYgKzE2MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWZQ
dHI8U3RydWN0dXJlPiBwcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZTsKICAgICAgICAgUmVmUHRy
PFN0cnVjdHVyZT4gZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlOwogICAgICAgICBSZWZQdHI8
U3RydWN0dXJlPiBkdW1teU1hcmthYmxlQ2VsbFN0cnVjdHVyZTsKKyAgICAgICAgUmVmUHRyPFN0
cnVjdHVyZT4gc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmU7CiAKICAgICAgICAgc3RhdGljIHZvaWQg
c3RvcmVWUHRycygpOwogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSB2b2lkKiBqc0FycmF5
VlB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAppbmRleCBjOWIwOTg1Mzk5YTNiNTA4OGYzNDJjNzQwOWM0NjgwM2YzZWQ0MDFmLi40MTEw
OGM0NmU5NjUxNjdiMDBiOGRhYTIwYWU3Y2YyNjEzZjFhMDE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC04Niw4ICs4Niw4IEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgaW5saW5lIHZvaWQgbWFya0lmTmVlZGVkKE1h
cmtTdGFjayYgbWFya1N0YWNrLCBXcml0CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrSWZOZWVk
ZWQoTWFya1N0YWNrJiBtYXJrU3RhY2ssIGNvbnN0IFJlZlB0cjxTdHJ1Y3R1cmU+JiBzKQogewot
ICAgIGlmIChzICYmIHMtPnN0b3JlZFByb3RvdHlwZSgpKQotICAgICAgICBtYXJrU3RhY2suYXBw
ZW5kKHMtPnN0b3JlZFByb3RvdHlwZVNsb3QoKSk7CisgICAgaWYgKHMpCisgICAgICAgIHMtPm1h
cmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKIH0KIAogSlNHbG9iYWxPYmplY3Q6On5KU0dsb2JhbE9i
amVjdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAppbmRleCA1ZTAxZWJiZjgwYjYzNzk2M2M5NTNjMWJlZGNkZmEyMDRjMzNmMTI5Li4wMGVmNWNi
OGJhODBkOWMzZDNlMGI4ZWFlYzkyM2ZjZDdjZDIwMDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNs
dWRlICJKU1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oIgogI2luY2x1ZGUgIk51bWJlclByb3Rv
dHlwZS5oIgogI2luY2x1ZGUgIlN0cmluZ1Byb3RvdHlwZS5oIgorI2luY2x1ZGUgIlN0cnVjdHVy
ZUNoYWluLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgpAQCAtMzYyLDcgKzM2Myw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAvLyBXZSBjYWNoZSBvdXIgcHJvdG90eXBlIGNoYWluIHNv
IG91ciBjbGllbnRzIGNhbiBzaGFyZSBpdC4KICAgICAgICAgaWYgKCFpc1ZhbGlkKGV4ZWMsIG1f
Y2FjaGVkUHJvdG90eXBlQ2hhaW4uZ2V0KCkpKSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHByb3Rv
dHlwZSA9IHByb3RvdHlwZUZvckxvb2t1cChleGVjKTsKLSAgICAgICAgICAgIG1fY2FjaGVkUHJv
dG90eXBlQ2hhaW4gPSBTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlKHByb3RvdHlwZS5pc051bGwoKSA/
IDAgOiBhc09iamVjdChwcm90b3R5cGUpLT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBtX2Nh
Y2hlZFByb3RvdHlwZUNoYWluLnNldChleGVjLT5nbG9iYWxEYXRhKCksIFN0cnVjdHVyZUNoYWlu
OjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm90b3R5cGUuaXNOdWxsKCkgPyAwIDogYXNP
YmplY3QocHJvdG90eXBlKS0+c3RydWN0dXJlKCkpLCAwKTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gbV9jYWNoZWRQcm90b3R5cGVDaGFpbi5nZXQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCBmZTAxY2I5OTJkNjMwMmE0ZTg2MzkyNjAw
ODE4MTE2ODkyNGUwZWZlLi5iYjgyNWFmZThkYjI0MTZjODRjMTZhNGVjZjc0NmU0N2RlNzU5YjQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTY0NSw3ICs2
NDUsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaQogICAgIGlmICghaXNFeHRlbnNpYmxlKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVy
ZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKG1fc3RydWN0dXJlLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCk7CisgICAgUmVmUHRy
PFN0cnVjdHVyZT4gc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24o
Z2xvYmFsRGF0YSwgbV9zdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lm
aWNGdW5jdGlvbiwgb2Zmc2V0KTsKIAogICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0gc3RydWN0
dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQogICAgICAgICBhbGxvY2F0ZVByb3BlcnR5
U3RvcmFnZShjdXJyZW50Q2FwYWNpdHksIHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHkoKSk7CkBAIC04MTUsNyArODE1LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpTT2JqZWN0Ojpt
YXJrQ2hpbGRyZW5EaXJlY3QoTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAgSlNDZWxsOjpt
YXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKIAotICAgIG1hcmtTdGFjay5hcHBlbmQobV9zdHJ1Y3R1
cmUtPnN0b3JlZFByb3RvdHlwZVNsb3QoKSk7CisgICAgbV9zdHJ1Y3R1cmUtPm1hcmtBZ2dyZWdh
dGUobWFya1N0YWNrKTsKICAgICBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSA9IHByb3BlcnR5U3Rv
cmFnZSgpOwogICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0
b3JhZ2VTaXplKCk7CiAgICAgbWFya1N0YWNrLmFwcGVuZFZhbHVlcyhzdG9yYWdlLCBzdG9yYWdl
U2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuY3BwCmluZGV4IDBkNzU5Y2ZjMTVjOWQyYmU5YjAwYzg1Y2FkNjRi
MWUyOTY4MDVlMGEuLjZmMzFmOTk5ZDcwOTVkY2M1Y2Y2ZDNkMDZjYzMyZDI4NjhlYjI4YjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlO
YW1lSXRlcmF0b3IuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIEpTUHJvcGVydHlOYW1lSXRlcmF0b3Iq
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
CiAgICAgICAgICAgICByZXR1cm4ganNQcm9wZXJ0eU5hbWVJdGVyYXRvcjsKICAgICB9CiAKLSAg
ICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5zZXRDYWNoZWRQcm90b3R5cGVDaGFpbihzdHJ1Y3R1
cmVDaGFpbik7CisgICAganNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+c2V0Q2FjaGVkUHJvdG90eXBl
Q2hhaW4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmVDaGFpbik7CiAgICAganNQcm9wZXJ0
eU5hbWVJdGVyYXRvci0+c2V0Q2FjaGVkU3RydWN0dXJlKG8tPnN0cnVjdHVyZSgpKTsKICAgICBv
LT5zdHJ1Y3R1cmUoKS0+c2V0RW51bWVyYXRpb25DYWNoZShleGVjLT5nbG9iYWxEYXRhKCksIGpz
UHJvcGVydHlOYW1lSXRlcmF0b3IpOwogICAgIHJldHVybiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9y
OwpAQCAtODYsNyArODYsNyBAQCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdAogSlNWYWx1ZSBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yOjpnZXQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZSwg
c2l6ZV90IGkpCiB7CiAgICAgSlNWYWx1ZSBpZGVudGlmaWVyID0gbV9qc1N0cmluZ3NbaV0uZ2V0
KCk7Ci0gICAgaWYgKG1fY2FjaGVkU3RydWN0dXJlID09IGJhc2UtPnN0cnVjdHVyZSgpICYmIG1f
Y2FjaGVkUHJvdG90eXBlQ2hhaW4gPT0gYmFzZS0+c3RydWN0dXJlKCktPnByb3RvdHlwZUNoYWlu
KGV4ZWMpKQorICAgIGlmIChtX2NhY2hlZFN0cnVjdHVyZSA9PSBiYXNlLT5zdHJ1Y3R1cmUoKSAm
JiBtX2NhY2hlZFByb3RvdHlwZUNoYWluLmdldCgpID09IGJhc2UtPnN0cnVjdHVyZSgpLT5wcm90
b3R5cGVDaGFpbihleGVjKSkKICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiAKICAgICBpZiAo
IWJhc2UtPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgYXNTdHJpbmcoaWRlbnRp
ZmllciktPnZhbHVlKGV4ZWMpKSkpCkBAIC05Nyw2ICs5Nyw4IEBAIEpTVmFsdWUgSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcjo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIHNpemVf
dCBpKQogdm9pZCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNr
JiBtYXJrU3RhY2spCiB7CiAgICAgbWFya1N0YWNrLmFwcGVuZFZhbHVlcyhtX2pzU3RyaW5ncy5n
ZXQoKSwgbV9qc1N0cmluZ3NTaXplLCBNYXlDb250YWluTnVsbFZhbHVlcyk7CisgICAgaWYgKG1f
Y2FjaGVkUHJvdG90eXBlQ2hhaW4pCisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1fY2FjaGVk
UHJvdG90eXBlQ2hhaW4pOwogfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCmlu
ZGV4IDhiMDA3ZGQ3NjdmNjQ2NGIxNDM4MTk5ZTRmYTYxODVlNGQzMmFkMDEuLjQ5OTM5NmNjNTg3
ODM4ODM3MDZiMzI0ZGI2MTQ0NmMxMjVlMTc2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKQEAgLTczLDcgKzcz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAgICAgICAgU3RydWN0dXJlKiBjYWNo
ZWRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2NhY2hlZFN0cnVjdHVyZS5nZXQoKTsgfQogCi0gICAg
ICAgIHZvaWQgc2V0Q2FjaGVkUHJvdG90eXBlQ2hhaW4oTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0
dXJlQ2hhaW4+IGNhY2hlZFByb3RvdHlwZUNoYWluKSB7IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4g
PSBjYWNoZWRQcm90b3R5cGVDaGFpbjsgfQorICAgICAgICB2b2lkIHNldENhY2hlZFByb3RvdHlw
ZUNoYWluKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlQ2hhaW4qIGNhY2hlZFBy
b3RvdHlwZUNoYWluKSB7IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uc2V0KGdsb2JhbERhdGEsIHRo
aXMsIGNhY2hlZFByb3RvdHlwZUNoYWluKTsgfQogICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogY2Fj
aGVkUHJvdG90eXBlQ2hhaW4oKSB7IHJldHVybiBtX2NhY2hlZFByb3RvdHlwZUNoYWluLmdldCgp
OyB9CiAKICAgICBwcml2YXRlOgpAQCAtODQsNyArODQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICNl
bmRpZgogCiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG1fY2FjaGVkU3RydWN0dXJlOwotICAg
ICAgICBSZWZQdHI8U3RydWN0dXJlQ2hhaW4+IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW47CisgICAg
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmVDaGFpbj4gbV9jYWNoZWRQcm90b3R5cGVDaGFpbjsK
ICAgICAgICAgdWludDMyX3QgbV9udW1DYWNoZWFibGVTbG90czsKICAgICAgICAgdWludDMyX3Qg
bV9qc1N0cmluZ3NTaXplOwogICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93
bj4gPiBtX2pzU3RyaW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTWm9tYmllLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTWm9tYmll
LmNwcAppbmRleCAyM2NmMTM1ZjkwODM1YTM3YjY3MTBlNWZjMDM2YjFjYzljNGQ4NGE0Li43M2Jm
MDA3MmI1YmE3MDgwYzk0M2QyMGNmZThkMzg1MmJmNmU4MDAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNab21iaWUuY3BwCkBAIC0zNSwxMSArMzUsMTEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBKU1pvbWJpZTo6c19pbmZvID0geyAiWm9tYmllIiwg
MCwgMCwgMCB9OwogCi1TdHJ1Y3R1cmUqIEpTWm9tYmllOjpsZWFrZWRab21iaWVTdHJ1Y3R1cmUo
KSB7CitTdHJ1Y3R1cmUqIEpTWm9tYmllOjpsZWFrZWRab21iaWVTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhKSB7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogc3RydWN0dXJlID0gMDsK
ICAgICBpZiAoIXN0cnVjdHVyZSkgewogICAgICAgICBTdHJ1Y3R1cmU6OnN0YXJ0SWdub3JpbmdM
ZWFrcygpOwotICAgICAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmNyZWF0ZShqc051bGwoKSwg
VHlwZUluZm8oVW5zcGVjaWZpZWRUeXBlKSwgMCwgJnNfaW5mbykubGVha1JlZigpOworICAgICAg
ICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBqc051bGwoKSwgVHlw
ZUluZm8oVW5zcGVjaWZpZWRUeXBlKSwgMCwgJnNfaW5mbykubGVha1JlZigpOwogICAgICAgICBT
dHJ1Y3R1cmU6OnN0b3BJZ25vcmluZ0xlYWtzKCk7CiAgICAgfQogICAgIHJldHVybiBzdHJ1Y3R1
cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNab21iaWUuaAppbmRleCAxNzlmZjUz
MTAwZmQzZmQyMGFiM2MxNzQ3MzI1ZDlkZDE4MGNiNzI1Li5kZmZmMWE3YTY2MzczMThkMDA5OTA0
Nzc5MWJkOGQ3NDBjMjBiMjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1pvbWJpZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTWm9t
YmllLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwgYm9v
bCBpc1pvbWJpZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICBzdGF0aWMgU3RydWN0dXJl
KiBsZWFrZWRab21iaWVTdHJ1Y3R1cmUoKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBsZWFrZWRa
b21iaWVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNHZXR0
ZXJTZXR0ZXIoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNBUElWYWx1ZVdyYXBwZXIoKSBjb25zdCB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hcmtTdGFjay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWFya1N0YWNrLmgKaW5kZXggZGVlNGYzNDIwY2U2MTU2MGQ4MTkwMGZiMDg0MjE0YzY0YTZkNTdl
YS4uNzEzMTkxN2Y2NWQ0YjQ2YjkwMzFhMDY4OGY0N2Y5OTZkZDIzN2ZiMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya1N0YWNrLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya1N0YWNrLmgKQEAgLTIxNSwxMiArMjE1LDEyIEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIE1h
cmtTdGFjazo6YXBwZW5kKERlcHJlY2F0ZWRQdHI8VD4qIHNsb3QpCiAgICAgewotICAgICAgICBp
bnRlcm5hbEFwcGVuZChzbG90LT5nZXQoKSk7CisgICAgICAgIGludGVybmFsQXBwZW5kKCpzbG90
LT5zbG90KCkpOwogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5l
IHZvaWQgTWFya1N0YWNrOjphcHBlbmQoV3JpdGVCYXJyaWVyQmFzZTxUPiogc2xvdCkKICAgICB7
Ci0gICAgICAgIGludGVybmFsQXBwZW5kKHNsb3QtPmdldCgpKTsKKyAgICAgICAgaW50ZXJuYWxB
cHBlbmQoKnNsb3QtPnNsb3QoKSk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIE1h
cmtTdGFjazo6ZGVwcmVjYXRlZEFwcGVuZChKU0NlbGwqKiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZEJsb2NrLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZEJsb2NrLmNwcAppbmRleCBjYWU3MDFmYTJjYjFiY2Zl
MDdmZmI0MDk1N2U0ODRmYzQxZTdjNmM3Li4zOThkNDMzMjVjNjRkMmNlMmRiNDRlZWI3NTJkMjNj
ZmZmOTNjZjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJr
ZWRCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2VkQmxv
Y2suY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgTWFya2VkQmxvY2s6OnN3ZWVwKCkKICAgICAg
ICAgaWYgKCFjZWxsLT5pc1pvbWJpZSgpKSB7CiAgICAgICAgICAgICBjb25zdCBDbGFzc0luZm8q
IGluZm8gPSBjZWxsLT5jbGFzc0luZm8oKTsKICAgICAgICAgICAgIGNlbGwtPn5KU0NlbGwoKTsK
LSAgICAgICAgICAgIG5ldyAoY2VsbCkgSlNab21iaWUoaW5mbywgSlNab21iaWU6OmxlYWtlZFpv
bWJpZVN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIG5ldyAoY2VsbCkgSlNab21iaWUoaW5mbywg
SlNab21iaWU6OmxlYWtlZFpvbWJpZVN0cnVjdHVyZSgqbV9oZWFwLT5nbG9iYWxEYXRhKCkpKTsK
ICAgICAgICAgICAgIG1fbWFya3Muc2V0KGkpOwogICAgICAgICB9CiAjZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggODI5ZTNkYmQ5ZGI3ZDMw
MTI5NjFiNTlhMDgwMjAzYmFjOWNjYTY3NS4uMTMxZWE2YmRlMzBhNTYwOTc1MTk4ZGUxMTdmZjQy
ZWM2N2I3OWI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCkBAIC0zNjcsNyArMzY3LDcgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6
YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3QKICAgICByZXR1
cm4gMDsKIH0KIAotUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlU
cmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90
JiBvZmZzZXQpCitQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0Nl
bGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KQogewogICAgIC8vIElmIHdlIGhhdmUg
YSBzcGVjaWZpYyBmdW5jdGlvbiwgd2UgbWF5IGhhdmUgZ290IHRvIHRoaXMgcG9pbnQgaWYgdGhl
cmUgaXMKICAgICAvLyBhbHJlYWR5IGEgdHJhbnNpdGlvbiB3aXRoIHRoZSBjb3JyZWN0IHByb3Bl
cnR5IG5hbWUgYW5kIGF0dHJpYnV0ZXMsIGJ1dApAQCAtMzk5LDcgKzM5OSw3IEBAIFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uCiAKICAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0aW9uID0gY3Jl
YXRlKHN0cnVjdHVyZSk7CiAKLSAgICB0cmFuc2l0aW9uLT5tX2NhY2hlZFByb3RvdHlwZUNoYWlu
ID0gc3RydWN0dXJlLT5tX2NhY2hlZFByb3RvdHlwZUNoYWluOworICAgIHRyYW5zaXRpb24tPm1f
Y2FjaGVkUHJvdG90eXBlQ2hhaW4uc2V0KGdsb2JhbERhdGEsIHN0cnVjdHVyZS0+bV9jYWNoZWRQ
cm90b3R5cGVDaGFpbi5nZXQoKSwgMCk7CiAgICAgdHJhbnNpdGlvbi0+bV9wcmV2aW91cyA9IHN0
cnVjdHVyZTsKICAgICB0cmFuc2l0aW9uLT5tX25hbWVJblByZXZpb3VzID0gcHJvcGVydHlOYW1l
LmltcGwoKTsKICAgICB0cmFuc2l0aW9uLT5tX2F0dHJpYnV0ZXNJblByZXZpb3VzID0gYXR0cmli
dXRlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggNmY3
MDYwYmYxYWFkYzI0MDNmOTcwYzUxZGU4ZWIyNjg1MGE0NDUyZi4uZTY4NThiNTIwOGQzNThhN2Yy
NzAzNDhiN2RlZjVhNTE4ZDYwMGZhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hU
YWJsZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSAiUHJvdGVj
dC5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlVHJh
bnNpdGlvblRhYmxlLmgiCiAjaW5jbHVkZSAiSlNUeXBlSW5mby5oIgogI2luY2x1ZGUgIlVTdHJp
bmcuaCIKQEAgLTQ2LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgTWFya1N0
YWNrOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwogICAgIGNsYXNzIFByb3BlcnR5TmFt
ZUFycmF5RGF0YTsKKyAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKIAogICAgIHN0cnVjdCBDbGFz
c0luZm87CiAKQEAgLTczLDcgKzczLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3Rh
dGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IGFkZFByb3BlcnR5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNW
YWx1ZSwgc2l6ZV90JiBvZmZzZXQpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+IGFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCog
c3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTdHJ1Y3R1cmU+IGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3Ry
dWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KTsKICAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oU3RydWN0
dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBzaXplX3QmIG9mZnNldCk7CiAg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY2hhbmdlUHJvdG90eXBlVHJhbnNp
dGlvbihTdHJ1Y3R1cmUqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CkBAIC0xMDQsOSArMTA0LDEzIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBUeXBlSW5mbyYgdHlwZUluZm8oKSBjb25z
dCB7IHJldHVybiBtX3R5cGVJbmZvOyB9CiAKICAgICAgICAgSlNWYWx1ZSBzdG9yZWRQcm90b3R5
cGUoKSBjb25zdCB7IHJldHVybiBtX3Byb3RvdHlwZS5nZXQoKTsgfQotICAgICAgICBEZXByZWNh
dGVkUHRyPFVua25vd24+KiBzdG9yZWRQcm90b3R5cGVTbG90KCkgeyByZXR1cm4gJm1fcHJvdG90
eXBlOyB9CiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlRm9yTG9va3VwKEV4ZWNTdGF0ZSopIGNv
bnN0OwogICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogcHJvdG90eXBlQ2hhaW4oRXhlY1N0YXRlKikg
Y29uc3Q7CisgICAgICAgIHZvaWQgbWFya0FnZ3JlZ2F0ZShNYXJrU3RhY2smIG1hcmtTdGFjaykK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fcHJvdG90eXBlKQorICAgICAgICAgICAgICAg
IG1hcmtTdGFjay5hcHBlbmQoJm1fcHJvdG90eXBlKTsKKyAgICAgICAgfQogCiAgICAgICAgIFN0
cnVjdHVyZSogcHJldmlvdXNJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7IH0K
IApAQCAtMjEwLDcgKzIxNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBUeXBlSW5mbyBt
X3R5cGVJbmZvOwogCiAgICAgICAgIERlcHJlY2F0ZWRQdHI8VW5rbm93bj4gbV9wcm90b3R5cGU7
Ci0gICAgICAgIG11dGFibGUgUmVmUHRyPFN0cnVjdHVyZUNoYWluPiBtX2NhY2hlZFByb3RvdHlw
ZUNoYWluOworICAgICAgICBtdXRhYmxlIFdlYWtHQ1B0cjxTdHJ1Y3R1cmVDaGFpbj4gbV9jYWNo
ZWRQcm90b3R5cGVDaGFpbjsKIAogICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBtX3ByZXZpb3Vz
OwogICAgICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbV9uYW1lSW5QcmV2aW91czsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAppbmRleCBlNDUy
M2MzYTY4OTNkNWRkYjZkOWZlNTg1NzNlOTRhY2U5NThkOTViLi42YTVlMTc0YzYzNTAzOGZlZWM3
NDZmNDg2MjAzYzg2NTc3NDkzNDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCkBAIC0zMiw3ICszMiw4IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi1TdHJ1Y3R1cmVDaGFpbjo6U3RydWN0dXJlQ2hhaW4oU3RydWN0dXJlKiBoZWFkKQor
U3RydWN0dXJlQ2hhaW46OlN0cnVjdHVyZUNoYWluKE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4gc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIGhlYWQpCisgICAgOiBKU0NlbGwoc3RydWN0dXJlLnJl
bGVhc2VSZWYoKSkKIHsKICAgICBzaXplX3Qgc2l6ZSA9IDA7CiAgICAgZm9yIChTdHJ1Y3R1cmUq
IGN1cnJlbnQgPSBoZWFkOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+c3RvcmVkUHJvdG90
eXBlKCkuaXNOdWxsKCkgPyAwIDogYXNPYmplY3QoY3VycmVudC0+c3RvcmVkUHJvdG90eXBlKCkp
LT5zdHJ1Y3R1cmUoKSkKQEAgLTQ2LDQgKzQ3LDE1IEBAIFN0cnVjdHVyZUNoYWluOjpTdHJ1Y3R1
cmVDaGFpbihTdHJ1Y3R1cmUqIGhlYWQpCiAgICAgbV92ZWN0b3JbaV0gPSAwOwogfQogCitTdHJ1
Y3R1cmVDaGFpbjo6flN0cnVjdHVyZUNoYWluKCkKK3sKK30KKwordm9pZCBTdHJ1Y3R1cmVDaGFp
bjo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQoreworICAgIHNpemVfdCBpID0g
MDsKKyAgICB3aGlsZSAobV92ZWN0b3JbaV0pCisgICAgICAgIG1fdmVjdG9yW2krK10tPm1hcmtB
Z2dyZWdhdGUobWFya1N0YWNrKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAppbmRleCA4MTZiNjZkNTA1
MTU1MGJjZWIyYjRlZmEyN2U1MTQxOWUyZDlhMzNmLi4zNDU2NGFiMWMwMWUxMzM0NzhhMTU0MTIx
ZWQyNWM5MzIyMTY2NjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVDaGFpbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUNoYWluLmgKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5kZWYgU3RydWN0dXJlQ2hhaW5f
aAogI2RlZmluZSBTdHJ1Y3R1cmVDaGFpbl9oCiAKKyNpbmNsdWRlICJKU0NlbGwuaCIKKwogI2lu
Y2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTM1LDE2ICszNywxOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIFN0cnVjdHVyZTsKIAotICAgIGNsYXNzIFN0cnVjdHVyZUNoYWlu
IDogcHVibGljIFJlZkNvdW50ZWQ8U3RydWN0dXJlQ2hhaW4+IHsKKyAgICBjbGFzcyBTdHJ1Y3R1
cmVDaGFpbiA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogCiAg
ICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmVDaGFpbj4gY3Jl
YXRlKFN0cnVjdHVyZSogaGVhZCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFN0cnVjdHVyZUNoYWlu
KGhlYWQpKTsgfQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlQ2hhaW4qIGNyZWF0ZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogaGVhZCkgeyByZXR1cm4gbmV3ICgmZ2xvYmFs
RGF0YSkgU3RydWN0dXJlQ2hhaW4oZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZSwg
aGVhZCk7IH0KICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4qIGhlYWQoKSB7IHJldHVybiBtX3Zl
Y3Rvci5nZXQoKTsgfQorICAgICAgICB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3RhY2smKTsKIAot
ICAgIHByaXZhdGU6Ci0gICAgICAgIFN0cnVjdHVyZUNoYWluKFN0cnVjdHVyZSogaGVhZCk7Cisg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpIHsgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBP
dmVycmlkZXNNYXJrQ2hpbGRyZW4pLCAwLCAwKTsgfQogCisgICAgcHJpdmF0ZToKKyAgICAgICAg
U3RydWN0dXJlQ2hhaW4oTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgU3RydWN0dXJlKiBo
ZWFkKTsKKyAgICAgICAgflN0cnVjdHVyZUNoYWluKCk7CiAgICAgICAgIE93bkFycmF5UHRyPFJl
ZlB0cjxTdHJ1Y3R1cmU+ID4gbV92ZWN0b3I7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaAppbmRleCBhZjAxOGE4MWMyOTA3YjNkYmMwYmIx
NTk1NTIzOTQwNWM4MmVkYWRkLi4zNGRlYmEyYTYwNDg4MjUwYWIxZjViMGYyNTllN2E5ZjQ5YWZj
ZDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJp
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaApA
QCAtOTQsOSArOTQsMjEgQEAgcHVibGljOgogICAgIENPTVBJTEVfQVNTRVJUKCFKU1ZhbHVlQ2hl
Y2tlcjxUPjo6SXNKU1ZhbHVlLCBXcml0ZUJhcnJpZXJfSlNWYWx1ZV9pc19pbnZhbGlkX191c2Vf
dW5rbm93bik7CiAgICAgdm9pZCBzZXQoSlNHbG9iYWxEYXRhJiwgY29uc3QgSlNDZWxsKiwgVCog
dmFsdWUpIHsgdGhpcy0+bV9jZWxsID0gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPih2YWx1ZSk7
IH0KICAgICAKLSAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PFQq
PihtX2NlbGwpOyB9Ci0gICAgVCogb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8VCo+KG1fY2VsbCk7IH0KLSAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8VCo+KG1fY2VsbCk7IH0KKyAgICBUKiBnZXQoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KG1fY2VsbCk7CisgICAgfQorCisgICAgVCog
b3BlcmF0b3IqKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4o
bV9jZWxsKTsKKyAgICB9CisKKyAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9jZWxsKTsKKyAgICB9CisKICAgICB2b2lkIGNs
ZWFyKCkgeyBtX2NlbGwgPSAwOyB9CiAgICAgCiAgICAgSlNDZWxsKiogc2xvdCgpIHsgcmV0dXJu
ICZtX2NlbGw7IH0KQEAgLTExNiw3ICsxMjgsMTMgQEAgdGVtcGxhdGUgPD4gY2xhc3MgV3JpdGVC
YXJyaWVyQmFzZTxVbmtub3duPiB7CiBwdWJsaWM6CiAgICAgdm9pZCBzZXQoSlNHbG9iYWxEYXRh
JiwgY29uc3QgSlNDZWxsKiwgSlNWYWx1ZSB2YWx1ZSkgeyBtX3ZhbHVlID0gSlNWYWx1ZTo6ZW5j
b2RlKHZhbHVlKTsgfQogICAgIHZvaWQgc2V0V2l0aG91dFdyaXRlQmFycmllcihKU1ZhbHVlIHZh
bHVlKSB7IG1fdmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOyB9Ci0gICAgSlNWYWx1ZSBn
ZXQoKSBjb25zdCB7IHJldHVybiBKU1ZhbHVlOjpkZWNvZGUobV92YWx1ZSk7IH0KKyAgICBKU1Zh
bHVlIGdldCgpIGNvbnN0CisgICAgeworI2lmIEVOQUJMRShKU0NfWk9NQklFUykKKyAgICAgICAg
QVNTRVJUKCFKU1ZhbHVlOjpkZWNvZGUobV92YWx1ZSkgfHwgIUpTVmFsdWU6OmRlY29kZShtX3Zh
bHVlKS5pc1pvbWJpZSgpKTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2Rl
KG1fdmFsdWUpOworICAgIH0KICAgICB2b2lkIGNsZWFyKCkgeyBtX3ZhbHVlID0gSlNWYWx1ZTo6
ZW5jb2RlKEpTVmFsdWUoKSk7IH0KICAgICB2b2lkIHNldFVuZGVmaW5lZCgpIHsgbV92YWx1ZSA9
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsgfQogICAgIGJvb2wgaXNOdW1iZXIoKSBj
b25zdCB7IHJldHVybiBnZXQoKS5pc051bWJlcigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQ5YjNmMzM2
YmJjYmU2OWQ3YTEzN2YxMGU1NjU4Y2VmYTI3NjAwZi4uYzdlNTQ5OTdkN2FlZTFkZDRiZGQ0MThm
OGQxNjlhYzA3Y2RkN2U1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTA0LTAx
ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBTdHJ1Y3R1cmVDaGFpbiBHQyBhbGxvY2F0
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2Njk1
CisKKyAgICAgICAgVXBkYXRlIGZvciBuZXcgU3RydWN0dXJlIG1hcmtpbmcgZnVuY3Rpb24KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0OjptYXJrQ2hpbGRyZW4pOgorCiAyMDExLTAzLTMxICBU
b255IEdlbnRpbGNvcmUgIDx0b255Z0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQnVpbGQgZml4
OiBBZGQgbWlzc2luZyBpbmNsdWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggODE4M2I2ZTJjNDBkNTRjMzhkNzEzNTBiMzgzNTEz
MGRmMjIwYjZiOC4uMmNlZjk5MDZlOTA3NGE5YzkxYTkxZjEzMGEzZDZkYzBiZTI1M2FkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApA
QCAtNTYsNyArNTYsNyBAQCB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjptYXJrQ2hpbGRyZW4oTWFy
a1N0YWNrJiBtYXJrU3RhY2spCiAKICAgICBKU0RPTVN0cnVjdHVyZU1hcDo6aXRlcmF0b3IgZW5k
ID0gc3RydWN0dXJlcygpLmVuZCgpOwogICAgIGZvciAoSlNET01TdHJ1Y3R1cmVNYXA6Oml0ZXJh
dG9yIGl0ID0gc3RydWN0dXJlcygpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAg
bWFya1N0YWNrLmFwcGVuZChpdC0+c2Vjb25kLT5zdG9yZWRQcm90b3R5cGVTbG90KCkpOworICAg
ICAgICBpdC0+c2Vjb25kLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7CiAKICAgICBKU0RPTUNv
bnN0cnVjdG9yTWFwOjppdGVyYXRvciBlbmQyID0gY29uc3RydWN0b3JzKCkuZW5kKCk7CiAgICAg
Zm9yIChKU0RPTUNvbnN0cnVjdG9yTWFwOjppdGVyYXRvciBpdDIgPSBjb25zdHJ1Y3RvcnMoKS5i
ZWdpbigpOyBpdDIgIT0gZW5kMjsgKytpdDIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87950</attachid>
            <date>2011-04-01 18:11:42 -0700</date>
            <delta_ts>2011-04-04 10:09:19 -0700</delta_ts>
            <desc>Removed export from windows .def file, now need to wait to find out what the new version is called</desc>
            <filename>bug-56695-20110401181141.patch</filename>
            <type>text/plain</type>
            <size>53187</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI3NDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDRl
YWM0NDYxMDk5NWEyZGY1NzAzMGM3YmI5NjYwYTg0Y2JiMDhkNzQuLjk4ZjRjNGQzZDY1OGZkN2Jl
NmE0ZjQ4YzdkYmFkMjU4OWJlZDg2N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDkyIEBACisyMDExLTA0LTAxICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBTdHJ1
Y3R1cmVDaGFpbiBHQyBhbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU2Njk1CisKKyAgICAgICAgTWFrZSBTdHJ1Y3R1cmVDaGFpbiBHQyBh
bGxvY2F0ZWQsIGFuZCBtYWtlIHRoZSB2YXJpb3VzIG93bmVycworICAgICAgICBtYXJrIGl0IGNv
cnJlY3RseS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmRlcmVmU3RydWN0dXJlcyk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6cmVmU3RydWN0dXJlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bWFya0Fn
Z3JlZ2F0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEpT
Qzo6UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0OjpQb2x5bW9ycGhpY1N0dWJJbmZvOjpz
ZXQpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Q6OlBvbHlt
b3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCk6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNj
ZXNzU3RydWN0dXJlTGlzdDo6ZGVyZWZTdHJ1Y3R1cmVzKToKKyAgICAgICAgKEpTQzo6UG9seW1v
cnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0OjptYXJrQWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6
SW5zdHJ1Y3Rpb246Okluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpkZXJlZik6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjptYXJrQWdncmVnYXRlKToKKyAgICAgICAg
KiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVT
dHViSW5mbzo6aW5pdEdldEJ5SWRDaGFpbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJ
bmZvOjppbml0UHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
SnVtcElmTm90RnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KToKKyAgICAgICAgKiBjb2xsZWN0b3IvaGFuZGxl
cy9IYW5kbGUuaDoKKyAgICAgICAgKEpTQzo6SGFuZGxlQ29udmVydGVyOjpvcGVyYXRvci0+KToK
KyAgICAgICAgKEpTQzo6SGFuZGxlQ29udmVydGVyOjpvcGVyYXRvciopOgorICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnBy
aXZhdGVFeGVjdXRlKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9qbmVxX3B0cik6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82
NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX3B0cik6CisgICAgICAgICog
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxp
c3QpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkpJVFRodW5r
czo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0cnlDYWNoZUdl
dEJ5SUQpOgorICAgICAgICAoSlNDOjpnZXRQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RT
bG90KToKKyAgICAgICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuY3BwOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6bWFya0lmTmVlZGVkKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0Lmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHJvdG90eXBlQ2hhaW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERp
cmVjdEludGVybmFsKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om1hcmtDaGlsZHJlbkRpcmVj
dCk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Z2V0KToKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcjo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlO
YW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6c2V0
Q2FjaGVkUHJvdG90eXBlQ2hhaW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNab21iaWUuY3BwOgor
ICAgICAgICAoSlNDOjpKU1pvbWJpZTo6bGVha2VkWm9tYmllU3RydWN0dXJlKToKKyAgICAgICAg
KiBydW50aW1lL0pTWm9tYmllLmg6CisgICAgICAgICogcnVudGltZS9NYXJrU3RhY2suaDoKKyAg
ICAgICAgKEpTQzo6TWFya1N0YWNrOjphcHBlbmQpOgorICAgICAgICAqIHJ1bnRpbWUvTWFya2Vk
QmxvY2suY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c3dlZXApOgorICAgICAgICAq
IHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9w
ZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6bWFya0FnZ3JlZ2F0ZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmVDaGFpbi5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNoYWluOjpTdHJ1Y3R1cmVD
aGFpbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNoYWluOjp+U3RydWN0dXJlQ2hhaW4pOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVDaGFpbjo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBy
dW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNoYWluOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKiBydW50aW1lL1dyaXRlQmFycmllci5oOgorICAgICAgICAoSlNDOjpXcml0ZUJh
cnJpZXJCYXNlOjpnZXQpOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJCYXNlOjpvcGVyYXRv
ciopOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJCYXNlOjpvcGVyYXRvci0+KToKKwogMjAx
MS0wNC0wMSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE9saXZlciBIdW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5leHAKaW5kZXggZTI2NDdkMWEzMWViZDc4MGE0NGM3MWM2NmZlMDQ0ZGI0YmE3OTE4NC4uYjll
NTM1NDljZGY4OTRjMjAxYWI2YWVlZWZjOTkxYTdkOWRlODY3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0zMTQsNyArMzE0LDcgQEAgX19aTjNKU0M5TWFy
a1N0YWNrMTBzX3BhZ2VTaXplRQogX19aTjNKU0M5TWFya1N0YWNrMThpbml0aWFsaXplUGFnZXNp
emVFdgogX19aTjNKU0M5U3RydWN0dXJlMTdzdG9wSWdub3JpbmdMZWFrc0V2CiBfX1pOM0pTQzlT
dHJ1Y3R1cmUxOHN0YXJ0SWdub3JpbmdMZWFrc0V2Ci1fX1pOM0pTQzlTdHJ1Y3R1cmUyMWFkZFBy
b3BlcnR5VHJhbnNpdGlvbkVQUzBfUktOU18xMElkZW50aWZpZXJFalBOU182SlNDZWxsRVJtCitf
X1pOM0pTQzlTdHJ1Y3R1cmUyMWFkZFByb3BlcnR5VHJhbnNpdGlvbkVSTlNfMTJKU0dsb2JhbERh
dGFFUFMwX1JLTlNfMTBJZGVudGlmaWVyRWpQTlNfNkpTQ2VsbEVSbQogX19aTjNKU0M5U3RydWN0
dXJlMjJtYXRlcmlhbGl6ZVByb3BlcnR5TWFwRXYKIF9fWk4zSlNDOVN0cnVjdHVyZTI1Y2hhbmdl
UHJvdG90eXBlVHJhbnNpdGlvbkVQUzBfTlNfN0pTVmFsdWVFCiBfX1pOM0pTQzlTdHJ1Y3R1cmUy
N2Rlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbkVSS05TXzEwSWRlbnRpZmllckUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZGVmIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKaW5kZXggZDdj
ZGRmNGY1OGI4OGMzZTUyMmY3YzUxMWI5NzYwMTM4M2FlMzI0NC4uYzdmYmZkYjY2NjQ5YmU1ZjFj
Njg1NmJkOTQ2ODA0NmIwYTM0NDY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKQEAgLTUxLDcgKzUxLDYgQEAgRVhQT1JUUwogICAg
ID9hZGRCeXRlc0BNRDVAV1RGQEBRQUVYUEJFSUBaCiAgICAgP2FkZEJ5dGVzQFNIQTFAV1RGQEBR
QUVYUEJFSUBaCiAgICAgP2FkZEN1cnJlbnRUaHJlYWRATWFjaGluZVRocmVhZHNASlNDQEBRQUVY
WFoKLSAgICA/YWRkUHJvcGVydHlUcmFuc2l0aW9uQFN0cnVjdHVyZUBKU0NAQFNBP0FWPyRQYXNz
UmVmUHRyQFZTdHJ1Y3R1cmVASlNDQEBAV1RGQEBQQVYxMkBBQlZJZGVudGlmaWVyQDJASVBBVkpT
Q2VsbEAyQEFBSUBaCiAgICAgP2FkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1
cmVAU3RydWN0dXJlQEpTQ0BAU0E/QVY/JFBhc3NSZWZQdHJAVlN0cnVjdHVyZUBKU0NAQEBXVEZA
QFBBVjEyQEFCVklkZW50aWZpZXJAMkBJUEFWSlNDZWxsQDJAQUFJQFoKICAgICA/YWRkUHJvcGVy
dHlXaXRob3V0VHJhbnNpdGlvbkBTdHJ1Y3R1cmVASlNDQEBRQUVJQUJWSWRlbnRpZmllckAyQElQ
QVZKU0NlbGxAMkBAWgogICAgID9hZGRTbG93Q2FzZUBJZGVudGlmaWVyQEpTQ0BAQ0E/QVY/JFBh
c3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBAV1RGQEBQQVZFeGVjU3RhdGVAMkBQQVZTdHJpbmdJ
bXBsQDRAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
aW5kZXggMGEwY2Y4NDRkZDQyODk2MThlYThjYTNiMTQ1ZDk0NjJkNGQ4Nzc0YS4uYjIwY2E0NGQ1
OTAwMGU5YTU1ODM2ZDViNGQwYWFiMGE1YjNlYTA1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTczMSw3ICs3MzEsNyBAQCB2b2lkIENvZGVC
bG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFZlY3RvcjxJbnN0cnVjdGlvbj46OmNv
bnN0X2l0ZXJhdG9yJgogICAgICAgICBjYXNlIG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWM6IHsK
ICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50
IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgSlNWYWx1ZSBzY29wZSA9IEpT
VmFsdWUoKCsraXQpLT51LmpzQ2VsbCk7CisgICAgICAgICAgICBKU1ZhbHVlIHNjb3BlID0gSlNW
YWx1ZSgoKytpdCktPnUuanNDZWxsLmdldCgpKTsKICAgICAgICAgICAgICsraXQ7CiAgICAgICAg
ICAgICBpbnQgZGVwdGggPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIHByaW50Zigi
WyU0ZF0gcmVzb2x2ZV9nbG9iYWxfZHluYW1pY1x0ICVzLCAlcywgJXMsICVkXG4iLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHZhbHVlVG9Tb3VyY2VTdHJpbmcoZXhl
Yywgc2NvcGUpLnV0ZjgoKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSku
ZGF0YSgpLCBkZXB0aCk7CkBAIC0xNDM3LDEzICsxNDM3LDExIEBAIHZvaWQgQ29kZUJsb2NrOjpk
ZXJlZlN0cnVjdHVyZXMoSW5zdHJ1Y3Rpb24qIHZQQykgY29uc3QKICAgICB9CiAgICAgaWYgKHZQ
Q1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9jaGFp
bikgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5
X2lkX2dldHRlcl9jaGFpbikgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRP
cGNvZGUob3BfZ2V0X2J5X2lkX2N1c3RvbV9jaGFpbikpIHsKICAgICAgICAgdlBDWzRdLnUuc3Ry
dWN0dXJlLT5kZXJlZigpOwotICAgICAgICB2UENbNV0udS5zdHJ1Y3R1cmVDaGFpbi0+ZGVyZWYo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGlu
dGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24pKSB7CiAgICAgICAg
IHZQQ1s0XS51LnN0cnVjdHVyZS0+ZGVyZWYoKTsKICAgICAgICAgdlBDWzVdLnUuc3RydWN0dXJl
LT5kZXJlZigpOwotICAgICAgICB2UENbNl0udS5zdHJ1Y3R1cmVDaGFpbi0+ZGVyZWYoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVycHJl
dGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX3JlcGxhY2UpKSB7CkBAIC0xNDg2LDEzICsxNDg0
LDExIEBAIHZvaWQgQ29kZUJsb2NrOjpyZWZTdHJ1Y3R1cmVzKEluc3RydWN0aW9uKiB2UEMpIGNv
bnN0CiAgICAgfQogICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9w
Y29kZShvcF9nZXRfYnlfaWRfY2hhaW4pIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRl
ci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9nZXR0ZXJfY2hhaW4pIHx8IHZQQ1swXS51Lm9wY29k
ZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9jdXN0b21fY2hhaW4pKSB7
CiAgICAgICAgIHZQQ1s0XS51LnN0cnVjdHVyZS0+cmVmKCk7Ci0gICAgICAgIHZQQ1s1XS51LnN0
cnVjdHVyZUNoYWluLT5yZWYoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodlBD
WzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX3RyYW5z
aXRpb24pKSB7CiAgICAgICAgIHZQQ1s0XS51LnN0cnVjdHVyZS0+cmVmKCk7CiAgICAgICAgIHZQ
Q1s1XS51LnN0cnVjdHVyZS0+cmVmKCk7Ci0gICAgICAgIHZQQ1s2XS51LnN0cnVjdHVyZUNoYWlu
LT5yZWYoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodlBDWzBdLnUub3Bjb2Rl
ID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX3JlcGxhY2UpKSB7CkBAIC0x
NTI3LDYgKzE1MjMsMzQgQEAgdm9pZCBDb2RlQmxvY2s6Om1hcmtBZ2dyZWdhdGUoTWFya1N0YWNr
JiBtYXJrU3RhY2spCiAgICAgICAgIGlmIChjYWxsTGlua0luZm8oaSkuaXNMaW5rZWQoKSkKICAg
ICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJmNhbGxMaW5rSW5mbyhpKS5jYWxsZWUpOwogI2Vu
ZGlmCisjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQorICAgIEludGVycHJldGVyKiBpbnRlcnByZXRl
ciA9IG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXI7CisgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1f
cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkg
eworICAgICAgICBJbnN0cnVjdGlvbiogdlBDID0gJm1faW5zdHJ1Y3Rpb25zW21fcHJvcGVydHlB
Y2Nlc3NJbnN0cnVjdGlvbnNbaV1dOworICAgICAgICBpZiAodlBDWzBdLnUub3Bjb2RlID09IGlu
dGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2NoYWluKSB8fCB2UENbMF0udS5vcGNv
ZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfZ2V0dGVyX2NoYWluKSB8
fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRf
Y3VzdG9tX2NoYWluKSkKKyAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnZQQ1s1XS51LnN0
cnVjdHVyZUNoYWluKTsKKyAgICAgICAgZWxzZSBpZiAodlBDWzBdLnUub3Bjb2RlID09IGludGVy
cHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24pKQorICAgICAgICAgICAg
bWFya1N0YWNrLmFwcGVuZCgmdlBDWzZdLnUuc3RydWN0dXJlQ2hhaW4pOworICAgIH0KKyNlbmRp
ZgorI2lmIEVOQUJMRShKSVQpCisgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2
ZUluZm9zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgaWYgKFN0cnVj
dHVyZSogc3RydWN0dXJlID0gbV9nbG9iYWxSZXNvbHZlSW5mb3NbaV0uc3RydWN0dXJlKQorICAg
ICAgICAgICAgc3RydWN0dXJlLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7CisgICAgfQorCisg
ICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fc3RydWN0dXJlU3R1YkluZm9zLnNpemUoKSwgaSA9IDA7
IGkgPCBzaXplOyArK2kpCisgICAgICAgIG1fc3RydWN0dXJlU3R1YkluZm9zW2ldLm1hcmtBZ2dy
ZWdhdGUobWFya1N0YWNrKTsKKworICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX21ldGhvZENhbGxM
aW5rSW5mb3Muc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBtX21ldGhvZENhbGxMaW5rSW5mb3NbaV0uY2FjaGVkU3RydWN0
dXJlKSB7CisgICAgICAgICAgICAvLyBCb3RoIG1lbWJlcnMgbXVzdCBiZSBmaWxsZWQgYXQgdGhl
IHNhbWUgdGltZQorICAgICAgICAgICAgc3RydWN0dXJlLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFj
ayk7CisgICAgICAgICAgICBBU1NFUlQoISFtX21ldGhvZENhbGxMaW5rSW5mb3NbaV0uY2FjaGVk
UHJvdG90eXBlU3RydWN0dXJlKTsKKyAgICAgICAgICAgIG1fbWV0aG9kQ2FsbExpbmtJbmZvc1tp
XS5jYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUtPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKKyAg
ICAgICAgfQorICAgIH0KKyNlbmRpZgogfQogCiBIYW5kbGVySW5mbyogQ29kZUJsb2NrOjpoYW5k
bGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCmluZGV4IGYwNzdjYmZmNTgzYzYz
ZjVhYjhjMWY1MDM1NTljYjEzOWZmNDBlNDguLmFhOGY2YzA2ZTNjYzdjNGJiOWQ3NGE3NTVlMDRm
N2M1NzAwMWY4MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bnN0cnVjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVj
dGlvbi5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAi
UHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSAiU3RydWN0
dXJlQ2hhaW4uaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yVHJhaXRzLmg+CiAKICNkZWZpbmUgUE9M
WU1PUlBISUNfTElTVF9DQUNIRV9TSVpFIDgKQEAgLTYzLDcgKzY0LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGJhc2U7CiAgICAgICAgICAgICB1bmlvbiB7CiAg
ICAgICAgICAgICAgICAgU3RydWN0dXJlKiBwcm90bzsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1
cmVDaGFpbiogY2hhaW47CisgICAgICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1
cmVDaGFpbj4gY2hhaW47CiAgICAgICAgICAgICB9IHU7CiAKICAgICAgICAgICAgIHZvaWQgc2V0
KFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdFN0dWJSb3V0aW5lVHlwZSBfc3R1YlJvdXRp
bmUsIFN0cnVjdHVyZSogX2Jhc2UpCkBAIC04MiwxMSArODMsMTEgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICAgICAgaXNDaGFpbiA9IGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgCi0gICAgICAgICAgICB2b2lkIHNldChQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxp
c3RTdHViUm91dGluZVR5cGUgX3N0dWJSb3V0aW5lLCBTdHJ1Y3R1cmUqIF9iYXNlLCBTdHJ1Y3R1
cmVDaGFpbiogX2NoYWluKQorICAgICAgICAgICAgdm9pZCBzZXQoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU0NlbGwqIG93bmVyLCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTdHVi
Um91dGluZVR5cGUgX3N0dWJSb3V0aW5lLCBTdHJ1Y3R1cmUqIF9iYXNlLCBTdHJ1Y3R1cmVDaGFp
biogX2NoYWluKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHN0dWJSb3V0aW5lID0g
X3N0dWJSb3V0aW5lOwogICAgICAgICAgICAgICAgIGJhc2UgPSBfYmFzZTsKLSAgICAgICAgICAg
ICAgICB1LmNoYWluID0gX2NoYWluOworICAgICAgICAgICAgICAgIHUuY2hhaW4uc2V0KGdsb2Jh
bERhdGEsIG93bmVyLCBfY2hhaW4pOwogICAgICAgICAgICAgICAgIGlzQ2hhaW4gPSB0cnVlOwog
ICAgICAgICAgICAgfQogICAgICAgICB9IGxpc3RbUE9MWU1PUlBISUNfTElTVF9DQUNIRV9TSVpF
XTsKQEAgLTEwMSw5ICsxMDIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGxpc3Rb
MF0uc2V0KHN0dWJSb3V0aW5lLCBmaXJzdEJhc2UsIGZpcnN0UHJvdG8pOwogICAgICAgICB9CiAK
LSAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KFBvbHltb3JwaGljQWNjZXNz
U3RydWN0dXJlTGlzdFN0dWJSb3V0aW5lVHlwZSBzdHViUm91dGluZSwgU3RydWN0dXJlKiBmaXJz
dEJhc2UsIFN0cnVjdHVyZUNoYWluKiBmaXJzdENoYWluKQorICAgICAgICBQb2x5bW9ycGhpY0Fj
Y2Vzc1N0cnVjdHVyZUxpc3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVy
LCBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTdHViUm91dGluZVR5cGUgc3R1YlJvdXRp
bmUsIFN0cnVjdHVyZSogZmlyc3RCYXNlLCBTdHJ1Y3R1cmVDaGFpbiogZmlyc3RDaGFpbikKICAg
ICAgICAgewotICAgICAgICAgICAgbGlzdFswXS5zZXQoc3R1YlJvdXRpbmUsIGZpcnN0QmFzZSwg
Zmlyc3RDaGFpbik7CisgICAgICAgICAgICBsaXN0WzBdLnNldChnbG9iYWxEYXRhLCBvd25lciwg
c3R1YlJvdXRpbmUsIGZpcnN0QmFzZSwgZmlyc3RDaGFpbik7CiAgICAgICAgIH0KIAogICAgICAg
ICB2b2lkIGRlcmVmU3RydWN0dXJlcyhpbnQgY291bnQpCkBAIC0xMTUsMTMgKzExNiwyMiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBpbmZvLmJhc2UtPmRlcmVmKCk7CiAKICAg
ICAgICAgICAgICAgICBpZiAoaW5mby51LnByb3RvKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChpbmZvLmlzQ2hhaW4pCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvLnUuY2hhaW4tPmRl
cmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFpbmZvLmlzQ2hhaW4pCiAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLnUucHJvdG8tPmRl
cmVmKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CisKKyAg
ICAgICAgdm9pZCBtYXJrQWdncmVnYXRlKE1hcmtTdGFjayYgbWFya1N0YWNrLCBpbnQgY291bnQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkg
eworICAgICAgICAgICAgICAgIFBvbHltb3JwaGljU3R1YkluZm8mIGluZm8gPSBsaXN0W2ldOwor
ICAgICAgICAgICAgICAgIEFTU0VSVChpbmZvLmJhc2UpOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIGlmIChpbmZvLnUuY2hhaW4gJiYgaW5mby5pc0NoYWluKQorICAgICAgICAg
ICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZpbmZvLnUuY2hhaW4pOworICAgICAgICAgICAg
fQorICAgICAgICB9CiAgICAgfTsKIAogICAgIHN0cnVjdCBJbnN0cnVjdGlvbiB7CkBAIC0xMzAs
NyArMTQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjaWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0lO
VEVSUFJFVEVSKQogICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBpbml0aWFsaXplIG9uZSBvZiB0
aGUgcG9pbnRlciBtZW1iZXJzIHRvIGVuc3VyZSB0aGF0CiAgICAgICAgICAgICAvLyB0aGUgZW50
aXJlIHN0cnVjdCBpcyBpbml0aWFsaXplZCwgd2hlbiBvcGNvZGUgaXMgbm90IGEgcG9pbnRlci4K
LSAgICAgICAgICAgIHUuanNDZWxsID0gMDsKKyAgICAgICAgICAgIHUuanNDZWxsLmNsZWFyKCk7
CiAjZW5kaWYKICAgICAgICAgICAgIHUub3Bjb2RlID0gb3Bjb2RlOwogICAgICAgICB9CkBAIC0x
MzksMTMgKzE0OSwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAg
Ly8gV2UgaGF2ZSB0byBpbml0aWFsaXplIG9uZSBvZiB0aGUgcG9pbnRlciBtZW1iZXJzIHRvIGVu
c3VyZSB0aGF0CiAgICAgICAgICAgICAvLyB0aGUgZW50aXJlIHN0cnVjdCBpcyBpbml0aWFsaXpl
ZCBpbiA2NC1iaXQuCi0gICAgICAgICAgICB1LmpzQ2VsbCA9IDA7CisgICAgICAgICAgICB1Lmpz
Q2VsbC5jbGVhcigpOwogICAgICAgICAgICAgdS5vcGVyYW5kID0gb3BlcmFuZDsKICAgICAgICAg
fQogCiAgICAgICAgIEluc3RydWN0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7IHUuc3RydWN0
dXJlID0gc3RydWN0dXJlOyB9Ci0gICAgICAgIEluc3RydWN0aW9uKFN0cnVjdHVyZUNoYWluKiBz
dHJ1Y3R1cmVDaGFpbikgeyB1LnN0cnVjdHVyZUNoYWluID0gc3RydWN0dXJlQ2hhaW47IH0KLSAg
ICAgICAgSW5zdHJ1Y3Rpb24oSlNDZWxsKiBqc0NlbGwpIHsgdS5qc0NlbGwgPSBqc0NlbGw7IH0K
KyAgICAgICAgSW5zdHJ1Y3Rpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93
bmVyLCBTdHJ1Y3R1cmVDaGFpbiogc3RydWN0dXJlQ2hhaW4pCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHUuc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKKyAgICAgICAgICAgIHUuc3RydWN0dXJlQ2hh
aW4uc2V0KGdsb2JhbERhdGEsIG93bmVyLCBzdHJ1Y3R1cmVDaGFpbik7CisgICAgICAgIH0KKyAg
ICAgICAgSW5zdHJ1Y3Rpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVy
LCBKU0NlbGwqIGpzQ2VsbCkKKyAgICAgICAgeworICAgICAgICAgICAgdS5qc0NlbGwuY2xlYXIo
KTsKKyAgICAgICAgICAgIHUuanNDZWxsLnNldChnbG9iYWxEYXRhLCBvd25lciwganNDZWxsKTsK
KyAgICAgICAgfQogICAgICAgICBJbnN0cnVjdGlvbihQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVy
ZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcykgeyB1LnBvbHltb3JwaGljU3RydWN0dXJlcyA9
IHBvbHltb3JwaGljU3RydWN0dXJlczsgfQogICAgICAgICBJbnN0cnVjdGlvbihQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXJGdW5jKSB7IHUuZ2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7
IH0KIApAQCAtMTUzLDggKzE3MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgT3Bj
b2RlIG9wY29kZTsKICAgICAgICAgICAgIGludCBvcGVyYW5kOwogICAgICAgICAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmU7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogc3RydWN0dXJlQ2hh
aW47Ci0gICAgICAgICAgICBKU0NlbGwqIGpzQ2VsbDsKKyAgICAgICAgICAgIFdyaXRlQmFycmll
ckJhc2U8U3RydWN0dXJlQ2hhaW4+IHN0cnVjdHVyZUNoYWluOworICAgICAgICAgICAgV3JpdGVC
YXJyaWVyQmFzZTxKU0NlbGw+IGpzQ2VsbDsKICAgICAgICAgICAgIFBvbHltb3JwaGljQWNjZXNz
U3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzOwogICAgICAgICAgICAgUHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYzsKICAgICAgICAgfSB1OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5k
ZXggNWRmNDg0MTRhYWM3Yjg2ZDFkNzhlMzkxMmQ3MmY3OTYyMjc3OWY3NS4uYzZlNTJkMjQwNjI2
OWU0YTVmMDkwODk5NTI2YmUzMTY4Y2QyZGU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC00NCw3ICs0NCw2IEBA
IHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmRlcmVmKCkKICAgICAgICAgcmV0dXJuOwogICAgIGNh
c2UgYWNjZXNzX2dldF9ieV9pZF9jaGFpbjoKICAgICAgICAgdS5nZXRCeUlkQ2hhaW4uYmFzZU9i
amVjdFN0cnVjdHVyZS0+ZGVyZWYoKTsKLSAgICAgICAgdS5nZXRCeUlkQ2hhaW4uY2hhaW4tPmRl
cmVmKCk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfc2VsZl9s
aXN0OiB7CiAgICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBo
aWNTdHJ1Y3R1cmVzID0gdS5nZXRCeUlkU2VsZkxpc3Quc3RydWN0dXJlTGlzdDsKQEAgLTYwLDgg
KzU5LDYgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6ZGVyZWYoKQogICAgIH0KICAgICBjYXNl
IGFjY2Vzc19wdXRfYnlfaWRfdHJhbnNpdGlvbjoKICAgICAgICAgdS5wdXRCeUlkVHJhbnNpdGlv
bi5wcmV2aW91c1N0cnVjdHVyZS0+ZGVyZWYoKTsKLSAgICAgICAgdS5wdXRCeUlkVHJhbnNpdGlv
bi5zdHJ1Y3R1cmUtPmRlcmVmKCk7Ci0gICAgICAgIHUucHV0QnlJZFRyYW5zaXRpb24uY2hhaW4t
PmRlcmVmKCk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVw
bGFjZToKICAgICAgICAgdS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5kZXJl
ZigpOwpAQCAtNzgsNiArNzUsNTEgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6ZGVyZWYoKQog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9CisKK3ZvaWQgU3RydWN0dXJl
U3R1YkluZm86Om1hcmtBZ2dyZWdhdGUoTWFya1N0YWNrJiBtYXJrU3RhY2spCit7CisgICAgc3dp
dGNoIChhY2Nlc3NUeXBlKSB7CisgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGY6CisgICAg
ICAgIHUuZ2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS0+bWFya0FnZ3JlZ2F0ZShtYXJr
U3RhY2spOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3Byb3Rv
OgorICAgICAgICB1LmdldEJ5SWRQcm90by5iYXNlT2JqZWN0U3RydWN0dXJlLT5tYXJrQWdncmVn
YXRlKG1hcmtTdGFjayk7CisgICAgICAgIHUuZ2V0QnlJZFByb3RvLnByb3RvdHlwZVN0cnVjdHVy
ZS0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBh
Y2Nlc3NfZ2V0X2J5X2lkX2NoYWluOgorICAgICAgICB1LmdldEJ5SWRDaGFpbi5iYXNlT2JqZWN0
U3RydWN0dXJlLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7CisgICAgICAgIG1hcmtTdGFjay5h
cHBlbmQoJnUuZ2V0QnlJZENoYWluLmNoYWluKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
YWNjZXNzX2dldF9ieV9pZF9zZWxmX2xpc3Q6IHsKKyAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3NT
dHJ1Y3R1cmVMaXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMgPSB1LmdldEJ5SWRTZWxmTGlzdC5z
dHJ1Y3R1cmVMaXN0OworICAgICAgICBwb2x5bW9ycGhpY1N0cnVjdHVyZXMtPm1hcmtBZ2dyZWdh
dGUobWFya1N0YWNrLCB1LmdldEJ5SWRTZWxmTGlzdC5saXN0U2l6ZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3Byb3RvX2xpc3Q6IHsKKyAgICAg
ICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMg
PSB1LmdldEJ5SWRQcm90b0xpc3Quc3RydWN0dXJlTGlzdDsKKyAgICAgICAgcG9seW1vcnBoaWNT
dHJ1Y3R1cmVzLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjaywgdS5nZXRCeUlkUHJvdG9MaXN0Lmxp
c3RTaXplKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIGFjY2Vzc19wdXRfYnlf
aWRfdHJhbnNpdGlvbjoKKyAgICAgICAgdS5wdXRCeUlkVHJhbnNpdGlvbi5wcmV2aW91c1N0cnVj
dHVyZS0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOworICAgICAgICB1LnB1dEJ5SWRUcmFuc2l0
aW9uLnN0cnVjdHVyZS0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOworICAgICAgICBtYXJrU3Rh
Y2suYXBwZW5kKCZ1LnB1dEJ5SWRUcmFuc2l0aW9uLmNoYWluKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF9yZXBsYWNlOgorICAgICAgICB1LnB1dEJ5SWRSZXBs
YWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZDoKKyAgICBjYXNlIGFjY2Vzc19w
dXRfYnlfaWQ6CisgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX2dlbmVyaWM6CisgICAgY2FzZSBh
Y2Nlc3NfcHV0X2J5X2lkX2dlbmVyaWM6CisgICAgY2FzZSBhY2Nlc3NfZ2V0X2FycmF5X2xlbmd0
aDoKKyAgICBjYXNlIGFjY2Vzc19nZXRfc3RyaW5nX2xlbmd0aDoKKyAgICAgICAgLy8gVGhlc2Ug
aW5zdHJ1Y3Rpb25zIGRvbid0IHJlZiB0aGVpciBTdHJ1Y3R1cmVzLgorICAgICAgICByZXR1cm47
CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQog
I2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAppbmRleCA4ZTJjNDg5YWE5MzAyMzEzOWI5
YWY5NmRhZThlNTY1ZGVjZjIyNGZlLi42NzAyZGNlY2Q0OTc5ZTM1NjUyNmQ4NTk4Yzg0MzdjYWU0
NDgwNjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uaApAQCAtNzcsMTUgKzc3LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgcHJvdG90eXBlU3RydWN0dXJlLT5yZWYoKTsKICAgICAgICAgfQogCi0gICAgICAgIHZv
aWQgaW5pdEdldEJ5SWRDaGFpbihTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFN0cnVj
dHVyZUNoYWluKiBjaGFpbikKKyAgICAgICAgdm9pZCBpbml0R2V0QnlJZENoYWluKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3Ry
dWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4pCiAgICAgICAgIHsKICAgICAgICAgICAgIGFj
Y2Vzc1R5cGUgPSBhY2Nlc3NfZ2V0X2J5X2lkX2NoYWluOwogCiAgICAgICAgICAgICB1LmdldEJ5
SWRDaGFpbi5iYXNlT2JqZWN0U3RydWN0dXJlID0gYmFzZU9iamVjdFN0cnVjdHVyZTsKICAgICAg
ICAgICAgIGJhc2VPYmplY3RTdHJ1Y3R1cmUtPnJlZigpOwogCi0gICAgICAgICAgICB1LmdldEJ5
SWRDaGFpbi5jaGFpbiA9IGNoYWluOwotICAgICAgICAgICAgY2hhaW4tPnJlZigpOworICAgICAg
ICAgICAgdS5nZXRCeUlkQ2hhaW4uY2hhaW4uc2V0KGdsb2JhbERhdGEsIG93bmVyLCBjaGFpbik7
CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGluaXRHZXRCeUlkU2VsZkxpc3QoUG9seW1vcnBo
aWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBzdHJ1Y3R1cmVMaXN0LCBpbnQgbGlzdFNpemUpCkBAIC0x
MDYsNyArMTA1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgLy8gUHV0QnlJZCoKIAot
ICAgICAgICB2b2lkIGluaXRQdXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHByZXZpb3VzU3Ry
dWN0dXJlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluKQorICAg
ICAgICB2b2lkIGluaXRQdXRCeUlkVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTQ2VsbCogb3duZXIsIFN0cnVjdHVyZSogcHJldmlvdXNTdHJ1Y3R1cmUsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4pCiAgICAgICAgIHsKICAgICAgICAgICAg
IGFjY2Vzc1R5cGUgPSBhY2Nlc3NfcHV0X2J5X2lkX3RyYW5zaXRpb247CiAKQEAgLTExNiw4ICsx
MTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHUucHV0QnlJZFRyYW5zaXRpb24u
c3RydWN0dXJlID0gc3RydWN0dXJlOwogICAgICAgICAgICAgc3RydWN0dXJlLT5yZWYoKTsKIAot
ICAgICAgICAgICAgdS5wdXRCeUlkVHJhbnNpdGlvbi5jaGFpbiA9IGNoYWluOwotICAgICAgICAg
ICAgY2hhaW4tPnJlZigpOworICAgICAgICAgICAgdS5wdXRCeUlkVHJhbnNpdGlvbi5jaGFpbi5z
ZXQoZ2xvYmFsRGF0YSwgb3duZXIsIGNoYWluKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQg
aW5pdFB1dEJ5SWRSZXBsYWNlKFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZSkKQEAgLTEy
OSw2ICsxMjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQg
ZGVyZWYoKTsKKyAgICAgICAgdm9pZCBtYXJrQWdncmVnYXRlKE1hcmtTdGFjayYpOwogCiAgICAg
ICAgIGJvb2wgc2Vlbk9uY2UoKQogICAgICAgICB7CkBAIC0xNTMsNyArMTUyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICB9IGdldEJ5SWRQcm90bzsKICAgICAgICAgICAgIHN0cnVj
dCB7CiAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlOwotICAg
ICAgICAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbjsKKyAgICAgICAgICAgICAgICBXcml0
ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZUNoYWluPiBjaGFpbjsKICAgICAgICAgICAgIH0gZ2V0QnlJ
ZENoYWluOwogICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICBQb2x5bW9ycGhp
Y0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHN0cnVjdHVyZUxpc3Q7CkBAIC0xNjYsNyArMTY1LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgIFN0
cnVjdHVyZSogcHJldmlvdXNTdHJ1Y3R1cmU7CiAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmU7Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluOworICAgICAg
ICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlQ2hhaW4+IGNoYWluOwogICAgICAg
ICAgICAgfSBwdXRCeUlkVHJhbnNpdGlvbjsKICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAg
ICAgICAgICAgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApp
bmRleCBiNWRmNTNmMmFhMThjYjcyMWM1Nzc3NDVhODI2YTkzMTk0YTA3MThlLi41YWYzNDIwNzM3
YWM1NjY4N2Q1YjRlMGFjYjIzMjBiZTJlMGU2MzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtOTI1
LDcgKzkyNSw3IEBAIFBhc3NSZWZQdHI8TGFiZWw+IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVt
cElmTm90RnVuY3Rpb25DYWxsKFJlZ2lzdGVySUQqIGNvbmQsCiAKICAgICBlbWl0T3Bjb2RlKG9w
X2puZXFfcHRyKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY29uZC0+aW5kZXgoKSk7Ci0g
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LT5jYWxs
RnVuY3Rpb24oKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKEluc3RydWN0aW9uKCptX2ds
b2JhbERhdGEsIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgbV9zY29wZUNoYWluLT5n
bG9iYWxPYmplY3QtPmNhbGxGdW5jdGlvbigpKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHRhcmdldC0+YmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiAgICAgcmV0dXJu
IHRhcmdldDsKIH0KQEAgLTkzNiw3ICs5MzYsNyBAQCBQYXNzUmVmUHRyPExhYmVsPiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkoUmVnaXN0ZXJJRCogY29uZAog
CiAgICAgZW1pdE9wY29kZShvcF9qbmVxX3B0cik7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGNvbmQtPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX3Njb3BlQ2hhaW4t
Pmdsb2JhbE9iamVjdC0+YXBwbHlGdW5jdGlvbigpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoSW5zdHJ1Y3Rpb24oKm1fZ2xvYmFsRGF0YSwgbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLCBtX3Njb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC0+YXBwbHlGdW5jdGlvbigpKSk7CiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRhcmdldC0+YmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpKSk7CiAgICAgcmV0dXJuIHRhcmdldDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGUuaAppbmRleCBkNGUzOGMwY2ZlOGIzYTM2NmE4
OTFjZGMwZDJmMGZlYWEyODVhZjM4Li5jMWQ4YTM1ZTMwM2U4ZDgxNTA0ODA3NmViNTg4NzhiN2Nm
MTJjNWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRs
ZXMvSGFuZGxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVz
L0hhbmRsZS5oCkBAIC0xMDQsMTAgKzEwNCwzNSBAQCB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGFuZGxl
VHlwZXM8VW5rbm93bj4gewogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEJhc2UsIHR5cGVuYW1l
IFQ+IHN0cnVjdCBIYW5kbGVDb252ZXJ0ZXIgewotICAgIFQqIG9wZXJhdG9yLT4oKSB7IHJldHVy
biBzdGF0aWNfY2FzdDxCYXNlKj4odGhpcyktPmdldCgpOyB9Ci0gICAgY29uc3QgVCogb3BlcmF0
b3ItPigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+Z2V0
KCk7IH0KLSAgICBUKiBvcGVyYXRvciooKSB7IHJldHVybiBzdGF0aWNfY2FzdDxCYXNlKj4odGhp
cyktPmdldCgpOyB9Ci0gICAgY29uc3QgVCogb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5nZXQoKTsgfQorICAgIFQqIG9wZXJhdG9yLT4o
KQorICAgIHsKKyNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCisgICAgICAgIEFTU0VSVCghc3RhdGlj
X2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5nZXQoKSB8fCAhc3RhdGljX2Nhc3Q8Y29uc3QgQmFz
ZSo+KHRoaXMpLT5nZXQoKS0+aXNab21iaWUoKSk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEJhc2UqPih0aGlzKS0+Z2V0KCk7CisgICAgfQorICAgIGNvbnN0IFQqIG9wZXJh
dG9yLT4oKSBjb25zdAorICAgIHsKKyNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCisgICAgICAgIEFT
U0VSVCghc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5nZXQoKSB8fCAhc3RhdGljX2Nh
c3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5nZXQoKS0+aXNab21iaWUoKSk7CisjZW5kaWYKKyAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+Z2V0KCk7CisgICAgfQor
CisgICAgVCogb3BlcmF0b3IqKCkKKyAgICB7CisjaWYgRU5BQkxFKEpTQ19aT01CSUVTKQorICAg
ICAgICBBU1NFUlQoIXN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+Z2V0KCkgfHwgIXN0
YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+Z2V0KCktPmlzWm9tYmllKCkpOworI2VuZGlm
CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxCYXNlKj4odGhpcyktPmdldCgpOworICAgIH0K
KyAgICBjb25zdCBUKiBvcGVyYXRvciooKSBjb25zdAorICAgIHsKKyNpZiBFTkFCTEUoSlNDX1pP
TUJJRVMpCisgICAgICAgIEFTU0VSVCghc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5n
ZXQoKSB8fCAhc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5nZXQoKS0+aXNab21iaWUo
KSk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0aGlz
KS0+Z2V0KCk7CisgICAgfQogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEJhc2U+IHN0cnVjdCBI
YW5kbGVDb252ZXJ0ZXI8QmFzZSwgVW5rbm93bj4gewpAQCAtMTE4LDcgKzE0MywxMyBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQmFzZT4gc3RydWN0IEhhbmRsZUNvbnZlcnRlcjxCYXNlLCBVbmtub3du
PiB7CiAgICAgYm9vbCBpc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0IHsgcmV0dXJuIGpzVmFsdWUo
KS5pc1VuZGVmaW5lZE9yTnVsbCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgSlNWYWx1ZSBqc1ZhbHVl
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5nZXQoKTsg
fQorICAgIEpTVmFsdWUganNWYWx1ZSgpIGNvbnN0CisgICAgeworI2lmIEVOQUJMRShKU0NfWk9N
QklFUykKKyAgICAgICAgQVNTRVJUKCFzdGF0aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcyktPmdl
dCgpIHx8ICFzdGF0aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcyktPmdldCgpLmlzWm9tYmllKCkp
OworI2VuZGlmCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcykt
PmdldCgpOworICAgIH0KIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBIYW5kbGUg
OiBwdWJsaWMgSGFuZGxlQmFzZSwgcHVibGljIEhhbmRsZUNvbnZlcnRlcjxIYW5kbGU8VD4sIFQ+
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCmluZGV4IDA4MjZmNWRiZmM1OWNjYWM0YWFmYTNiMWRkNDg1ZDZkNTFlODllMmEuLjYwMjEy
Nzk2YWIyMzhiOGI4YWNiOTRhNjM0ZmQ3MDVkZGE4YzY4YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMzUzNywxMCArMzUz
Nyw5IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAgICAgIHRvIHB0ciwgdXNpbmcgcG9p
bnRlciBlcXVhbGl0eS4KICAgICAgICAgICovCiAgICAgICAgIGludCBzcmMgPSB2UENbMV0udS5v
cGVyYW5kOwotICAgICAgICBKU1ZhbHVlIHB0ciA9IEpTVmFsdWUodlBDWzJdLnUuanNDZWxsKTsK
ICAgICAgICAgaW50IHRhcmdldCA9IHZQQ1szXS51Lm9wZXJhbmQ7CiAgICAgICAgIEpTVmFsdWUg
c3JjVmFsdWUgPSBjYWxsRnJhbWUtPnIoc3JjKS5qc1ZhbHVlKCk7Ci0gICAgICAgIGlmIChzcmNW
YWx1ZSAhPSBwdHIpIHsKKyAgICAgICAgaWYgKHNyY1ZhbHVlICE9IHZQQ1syXS51LmpzQ2VsbC5n
ZXQoKSkgewogICAgICAgICAgICAgdlBDICs9IHRhcmdldDsKICAgICAgICAgICAgIE5FWFRfSU5T
VFJVQ1RJT04oKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAKaW5kZXggOTY1ZDZkOTJiY2FmMjllNTdjMTg5OGEzYWRmMDMzZTY5MDIxNTIyYi4uZGFj
ZWVhNmNhNjhlNzU3ZTFmNjdkNDE1OTEyZmM3MTI0MjI3NGZhOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC03NjIsNyArNzYyLDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3Bfam5lcV9udWxsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9qbmVxX3B0cihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIHVuc2lnbmVkIHNyYyA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAg
SlNDZWxsKiBwdHIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5qc0NlbGw7CisgICAgSlNDZWxs
KiBwdHIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5qc0NlbGwuZ2V0KCk7CiAgICAgdW5zaWdu
ZWQgdGFyZ2V0ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAgICAKICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyYywgcmVnVDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDljM2E5MjMyNmY1ZDExMTBiNzFmYWZi
M2M4ZTY0MzNjYTkxNGJlODMuLmJjMGIyY2I5NGQ1MTVmMjYzZDQwZWJhN2U0MzhlMmE3MWQyNTZj
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAK
QEAgLTk3OSw3ICs5NzksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX251bGwoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHZvaWQgSklUOjplbWl0X29wX2puZXFfcHRyKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgdW5zaWduZWQgc3JjID0gY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICBKU0NlbGwqIHB0ciA9IGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51LmpzQ2VsbDsKKyAgICBKU0NlbGwqIHB0ciA9IGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51LmpzQ2VsbC5nZXQoKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kOwogCiAgICAgZW1pdExvYWQoc3JjLCByZWdUMSwgcmVnVDApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRl
eCAwZjRlMTc4N2FiYmUxYmJmZDQxN2QyNjM2YWUzZjFhN2M4YjJiMzZmLi42OGY4ZGRhMWE1N2Q1
ZmVlYjEyYTczOGRlNjJkN2VkMGRjY2I2OWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtOTc5LDggKzk3OSw3IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBQb2x5bW9ycGhpCiAKICAgICAvLyBUcmFjayB0aGUgc3R1YiB3ZSBoYXZlIGNyZWF0ZWQg
c28gdGhhdCBpdCB3aWxsIGJlIGRlbGV0ZWQgbGF0ZXIuCiAgICAgc3RydWN0dXJlLT5yZWYoKTsK
LSAgICBjaGFpbi0+cmVmKCk7Ci0gICAgcHJvdG90eXBlU3RydWN0dXJlcy0+bGlzdFtjdXJyZW50
SW5kZXhdLnNldChlbnRyeUxhYmVsLCBzdHJ1Y3R1cmUsIGNoYWluKTsKKyAgICBwcm90b3R5cGVT
dHJ1Y3R1cmVzLT5saXN0W2N1cnJlbnRJbmRleF0uc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgp
LCBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGVudHJ5TGFiZWwsIHN0cnVjdHVyZSwg
Y2hhaW4pOwogCiAgICAgLy8gRmluYWxseSBwYXRjaCB0aGUganVtcCB0byBzbG93IGNhc2UgYmFj
ayBpbiB0aGUgaG90IHBhdGggdG8ganVtcCBoZXJlIGluc3RlYWQuCiAgICAgQ29kZUxvY2F0aW9u
SnVtcCBqdW1wTG9jYXRpb24gPSBzdHViSW5mby0+aG90UGF0aEJlZ2luLmp1bXBBdE9mZnNldChw
YXRjaE9mZnNldEdldEJ5SWRCcmFuY2hUb1Nsb3dDYXNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IDFlZWZlM2Q3
YWE5Y2UzZWFkNGQ4NjQzYmVkOTEyM2ZjZmYxM2EwMjUuLjJhNDdlNWNhZmE1OTAxNmFkNzhkZTZm
MTc0ODM4ZTQ2NmFjZDQ4YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMTAwNyw4ICsxMDA3LDcgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8sIFBvbHltb3JwaGkKICAgICAKICAgICAvLyBUcmFjayB0aGUgc3R1YiB3ZSBoYXZlIGNy
ZWF0ZWQgc28gdGhhdCBpdCB3aWxsIGJlIGRlbGV0ZWQgbGF0ZXIuCiAgICAgc3RydWN0dXJlLT5y
ZWYoKTsKLSAgICBjaGFpbi0+cmVmKCk7Ci0gICAgcHJvdG90eXBlU3RydWN0dXJlcy0+bGlzdFtj
dXJyZW50SW5kZXhdLnNldChlbnRyeUxhYmVsLCBzdHJ1Y3R1cmUsIGNoYWluKTsKKyAgICBwcm90
b3R5cGVTdHJ1Y3R1cmVzLT5saXN0W2N1cnJlbnRJbmRleF0uc2V0KGNhbGxGcmFtZS0+Z2xvYmFs
RGF0YSgpLCBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGVudHJ5TGFiZWwsIHN0cnVj
dHVyZSwgY2hhaW4pOwogICAgIAogICAgIC8vIEZpbmFsbHkgcGF0Y2ggdGhlIGp1bXAgdG8gc2xv
dyBjYXNlIGJhY2sgaW4gdGhlIGhvdCBwYXRoIHRvIGp1bXAgaGVyZSBpbnN0ZWFkLgogICAgIENv
ZGVMb2NhdGlvbkp1bXAganVtcExvY2F0aW9uID0gc3R1YkluZm8tPmhvdFBhdGhCZWdpbi5qdW1w
QXRPZmZzZXQocGF0Y2hPZmZzZXRHZXRCeUlkQnJhbmNoVG9TbG93Q2FzZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCmluZGV4IGEzOGYwMWUyMjMxNWQ3NWY3YTBiNThmYzUw
ZTM1MWE3MTBmOTYyZWIuLmNhYzlmMDI1MTk0NzY0NDM2MDU4MzAyNDU4Mjc4OTIxZmQ1ZDcwZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC03NzEsNyArNzcxLDcg
QEAgTkVWRVJfSU5MSU5FIHZvaWQgSklUVGh1bmtzOjp0cnlDYWNoZVB1dEJ5SUQoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIENvZGVCbG9jayogY28KICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hh
aW4oY2FsbEZyYW1lLCBiYXNlQ2VsbCk7CiAKICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIHByb3Rv
dHlwZUNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihjYWxsRnJhbWUpOwotICAgICAg
ICBzdHViSW5mby0+aW5pdFB1dEJ5SWRUcmFuc2l0aW9uKHN0cnVjdHVyZS0+cHJldmlvdXNJRCgp
LCBzdHJ1Y3R1cmUsIHByb3RvdHlwZUNoYWluKTsKKyAgICAgICAgc3R1YkluZm8tPmluaXRQdXRC
eUlkVHJhbnNpdGlvbihjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKSwgc3RydWN0dXJlLT5wcmV2aW91c0lEKCksIHN0cnVjdHVyZSwgcHJvdG90eXBl
Q2hhaW4pOwogICAgICAgICBKSVQ6OmNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihjYWxsRnJhbWUt
PnNjb3BlQ2hhaW4oKS0+Z2xvYmFsRGF0YSwgY29kZUJsb2NrLCBzdHViSW5mbywgc3RydWN0dXJl
LT5wcmV2aW91c0lEKCksIHN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSwgcHJvdG90eXBl
Q2hhaW4sIHJldHVybkFkZHJlc3MsIGRpcmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC04NjYsNyArODY2LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSklUVGh1bmtzOjp0cnlDYWNoZUdl
dEJ5SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY28KICAgICB9CiAKICAgICBT
dHJ1Y3R1cmVDaGFpbiogcHJvdG90eXBlQ2hhaW4gPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWlu
KGNhbGxGcmFtZSk7Ci0gICAgc3R1YkluZm8tPmluaXRHZXRCeUlkQ2hhaW4oc3RydWN0dXJlLCBw
cm90b3R5cGVDaGFpbik7CisgICAgc3R1YkluZm8tPmluaXRHZXRCeUlkQ2hhaW4oY2FsbEZyYW1l
LT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSwg
cHJvdG90eXBlQ2hhaW4pOwogICAgIEpJVDo6Y29tcGlsZUdldEJ5SWRDaGFpbihjYWxsRnJhbWUt
PnNjb3BlQ2hhaW4oKS0+Z2xvYmFsRGF0YSwgY2FsbEZyYW1lLCBjb2RlQmxvY2ssIHN0dWJJbmZv
LCBzdHJ1Y3R1cmUsIHByb3RvdHlwZUNoYWluLCBjb3VudCwgcHJvcGVydHlOYW1lLCBzbG90LCBv
ZmZzZXQsIHJldHVybkFkZHJlc3MpOwogfQogCkBAIC0xNTUzLDcgKzE1NTMsNyBAQCBERUZJTkVf
U1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZ2V0X2J5X2lkX3NlbGZfZmFpbCkKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLXN0YXRpYyBQb2x5bW9ycGhp
Y0FjY2Vzc1N0cnVjdHVyZUxpc3QqIGdldFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdFNs
b3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBpbnQmIGxpc3RJbmRleCkKK3N0YXRpYyBQ
b2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIGdldFBvbHltb3JwaGljQWNjZXNzU3RydWN0
dXJlTGlzdFNsb3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTY3JpcHRFeGVjdXRhYmxlKiBv
d25lciwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBpbnQmIGxpc3RJbmRleCkKIHsKICAg
ICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZUxpc3Qg
PSAwOwogICAgIGxpc3RJbmRleCA9IDE7CkBAIC0xNTY1LDcgKzE1NjUsNyBAQCBzdGF0aWMgUG9s
eW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBnZXRQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVy
ZUxpc3RTbG90KFN0cgogICAgICAgICBzdHViSW5mby0+aW5pdEdldEJ5SWRQcm90b0xpc3QocHJv
dG90eXBlU3RydWN0dXJlTGlzdCwgMik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgYWNjZXNz
X2dldF9ieV9pZF9jaGFpbjoKLSAgICAgICAgcHJvdG90eXBlU3RydWN0dXJlTGlzdCA9IG5ldyBQ
b2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Qoc3R1YkluZm8tPnN0dWJSb3V0aW5lLCBzdHVi
SW5mby0+dS5nZXRCeUlkQ2hhaW4uYmFzZU9iamVjdFN0cnVjdHVyZSwgc3R1YkluZm8tPnUuZ2V0
QnlJZENoYWluLmNoYWluKTsKKyAgICAgICAgcHJvdG90eXBlU3RydWN0dXJlTGlzdCA9IG5ldyBQ
b2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QoZ2xvYmFsRGF0YSwgb3duZXIsIHN0dWJJbmZv
LT5zdHViUm91dGluZSwgc3R1YkluZm8tPnUuZ2V0QnlJZENoYWluLmJhc2VPYmplY3RTdHJ1Y3R1
cmUsIHN0dWJJbmZvLT51LmdldEJ5SWRDaGFpbi5jaGFpbi5nZXQoKSk7CiAgICAgICAgIHN0dWJJ
bmZvLT5zdHViUm91dGluZSA9IENvZGVMb2NhdGlvbkxhYmVsKCk7CiAgICAgICAgIHN0dWJJbmZv
LT5pbml0R2V0QnlJZFByb3RvTGlzdChwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0LCAyKTsKICAgICAg
ICAgYnJlYWs7CkBAIC0xNjUzLDcgKzE2NTMsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNv
ZGVkSlNWYWx1ZSwgb3BfZ2V0X2J5X2lkX3Byb3RvX2xpc3QpCiAgICAgICAgIH0KIAogICAgICAg
ICBpbnQgbGlzdEluZGV4OwotICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Qq
IHByb3RvdHlwZVN0cnVjdHVyZUxpc3QgPSBnZXRQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxp
c3RTbG90KHN0dWJJbmZvLCBsaXN0SW5kZXgpOworICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0
cnVjdHVyZUxpc3QqIHByb3RvdHlwZVN0cnVjdHVyZUxpc3QgPSBnZXRQb2x5bW9ycGhpY0FjY2Vz
c1N0cnVjdHVyZUxpc3RTbG90KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93
bmVyRXhlY3V0YWJsZSgpLCBzdHViSW5mbywgbGlzdEluZGV4KTsKICAgICAgICAgaWYgKGxpc3RJ
bmRleCA8IFBPTFlNT1JQSElDX0xJU1RfQ0FDSEVfU0laRSkgewogICAgICAgICAgICAgSklUOjpj
b21waWxlR2V0QnlJZFByb3RvTGlzdChjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsRGF0
YSwgY2FsbEZyYW1lLCBjb2RlQmxvY2ssIHN0dWJJbmZvLCBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0
LCBsaXN0SW5kZXgsIHN0cnVjdHVyZSwgc2xvdEJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QsIG9mZnNldCk7CiAKQEAgLTE2NjMsNyArMTY2Myw3IEBAIERFRklORV9T
VFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9nZXRfYnlfaWRfcHJvdG9fbGlzdCkKICAg
ICB9IGVsc2UgaWYgKHNpemVfdCBjb3VudCA9IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGNhbGxG
cmFtZSwgYmFzZVZhbHVlLCBzbG90LnNsb3RCYXNlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KSkg
ewogICAgICAgICBBU1NFUlQoIWJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCktPmlzRGlj
dGlvbmFyeSgpKTsKICAgICAgICAgaW50IGxpc3RJbmRleDsKLSAgICAgICAgUG9seW1vcnBoaWNB
Y2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0ID0gZ2V0UG9seW1vcnBo
aWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U2xvdChzdHViSW5mbywgbGlzdEluZGV4KTsKKyAgICAgICAg
UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0ID0g
Z2V0UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U2xvdChjYWxsRnJhbWUtPmdsb2JhbERh
dGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3R1YkluZm8sIGxpc3RJbmRleCk7
CiAgICAgICAgIAogICAgICAgICBpZiAobGlzdEluZGV4IDwgUE9MWU1PUlBISUNfTElTVF9DQUNI
RV9TSVpFKSB7CiAgICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogcHJvdG9DaGFpbiA9IHN0cnVj
dHVyZS0+cHJvdG90eXBlQ2hhaW4oY2FsbEZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmgKaW5kZXggNjJjZWUzNzhkOTdlYzcxOGU1ZTZiOThkYTZhYTc0NzY5ZjlmNDEx
OC4uYWIwZTIzNzM1MThmZDhjNjhjMTg2MDBmZmZiNzk5MGNmNzY4NGJhNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTY4LDYgKzY4LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRTcGFjZTsKICAgICAgICAgZnJpZW5kIGNs
YXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBmcmllbmQgY2xhc3MgU2NvcGVDaGFpbk5vZGU7Cisg
ICAgICAgIGZyaWVuZCBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIGV4cGxpY2l0IEpTQ2VsbChTdHJ1Y3R1cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCmluZGV4IDFkNWZjZjNjYzQwNzBkNDJjNGI2ZTVi
ODNlMDNmNTRkNTU3NTE4MGMuLmVlMTgyOWIzMWFkYzM1ZDk1MGIyNTU4YWM0ZThlNmM0YzJjYmM0
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0
YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNw
cApAQCAtMTg0LDYgKzE4NCw3IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERh
dGFUeXBlIGdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUgdGhyZWFkCiAgICAgcHJvZ3Jh
bUV4ZWN1dGFibGVTdHJ1Y3R1cmUgPSBQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCBqc051bGwoKSk7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlID0gRnVu
Y3Rpb25FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgpKTsKICAgICBk
dW1teU1hcmthYmxlQ2VsbFN0cnVjdHVyZSA9IEpTQ2VsbDo6Y3JlYXRlRHVtbXlTdHJ1Y3R1cmUo
KnRoaXMpOworICAgIHN0cnVjdHVyZUNoYWluU3RydWN0dXJlID0gU3RydWN0dXJlQ2hhaW46OmNy
ZWF0ZVN0cnVjdHVyZSgqdGhpcywganNOdWxsKCkpOwogCiAgICAgaW50ZXJwcmV0ZXIgPSBuZXcg
SW50ZXJwcmV0ZXIoKnRoaXMpOwogICAgIGlmIChnbG9iYWxEYXRhVHlwZSA9PSBEZWZhdWx0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAppbmRleCAyOGJk
YWRlMTIxMWNiYWJmN2NmMTE4ODVhMWVkOGRjZTI2MDY3MzgwLi4zNGVhNzVkNjEyMWI2ZDM1MGM4
ZTMxYTA0ZmI4ZTMzNDgzYTkwMTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuaApAQCAtMTYxLDYgKzE2MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBSZWZQdHI8U3RydWN0dXJlPiBwcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZTsKICAgICAg
ICAgUmVmUHRyPFN0cnVjdHVyZT4gZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlOwogICAgICAg
ICBSZWZQdHI8U3RydWN0dXJlPiBkdW1teU1hcmthYmxlQ2VsbFN0cnVjdHVyZTsKKyAgICAgICAg
UmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmU7CiAKICAgICAgICAgc3Rh
dGljIHZvaWQgc3RvcmVWUHRycygpOwogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSB2b2lk
KiBqc0FycmF5VlB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAppbmRleCBjOWIwOTg1Mzk5YTNiNTA4OGYzNDJjNzQwOWM0NjgwM2YzZWQ0
MDFmLi40MTEwOGM0NmU5NjUxNjdiMDBiOGRhYTIwYWU3Y2YyNjEzZjFhMDE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC04Niw4
ICs4Niw4IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgaW5saW5lIHZvaWQgbWFya0lm
TmVlZGVkKE1hcmtTdGFjayYgbWFya1N0YWNrLCBXcml0CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBt
YXJrSWZOZWVkZWQoTWFya1N0YWNrJiBtYXJrU3RhY2ssIGNvbnN0IFJlZlB0cjxTdHJ1Y3R1cmU+
JiBzKQogewotICAgIGlmIChzICYmIHMtPnN0b3JlZFByb3RvdHlwZSgpKQotICAgICAgICBtYXJr
U3RhY2suYXBwZW5kKHMtPnN0b3JlZFByb3RvdHlwZVNsb3QoKSk7CisgICAgaWYgKHMpCisgICAg
ICAgIHMtPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKIH0KIAogSlNHbG9iYWxPYmplY3Q6On5K
U0dsb2JhbE9iamVjdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAppbmRleCA1ZTAxZWJiZjgwYjYzNzk2M2M5NTNjMWJlZGNkZmEyMDRjMzNmMTI5
Li4wMGVmNWNiOGJhODBkOWMzZDNlMGI4ZWFlYzkyM2ZjZDdjZDIwMDY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlICJKU1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oIgogI2luY2x1ZGUgIk51
bWJlclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlN0cmluZ1Byb3RvdHlwZS5oIgorI2luY2x1ZGUg
IlN0cnVjdHVyZUNoYWluLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgpAQCAtMzYyLDcgKzM2
Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBXZSBjYWNoZSBvdXIgcHJvdG90eXBl
IGNoYWluIHNvIG91ciBjbGllbnRzIGNhbiBzaGFyZSBpdC4KICAgICAgICAgaWYgKCFpc1ZhbGlk
KGV4ZWMsIG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uZ2V0KCkpKSB7CiAgICAgICAgICAgICBKU1Zh
bHVlIHByb3RvdHlwZSA9IHByb3RvdHlwZUZvckxvb2t1cChleGVjKTsKLSAgICAgICAgICAgIG1f
Y2FjaGVkUHJvdG90eXBlQ2hhaW4gPSBTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlKHByb3RvdHlwZS5p
c051bGwoKSA/IDAgOiBhc09iamVjdChwcm90b3R5cGUpLT5zdHJ1Y3R1cmUoKSk7CisgICAgICAg
ICAgICBtX2NhY2hlZFByb3RvdHlwZUNoYWluLnNldChleGVjLT5nbG9iYWxEYXRhKCksIFN0cnVj
dHVyZUNoYWluOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm90b3R5cGUuaXNOdWxsKCkg
PyAwIDogYXNPYmplY3QocHJvdG90eXBlKS0+c3RydWN0dXJlKCkpLCAwKTsKICAgICAgICAgfQog
ICAgICAgICByZXR1cm4gbV9jYWNoZWRQcm90b3R5cGVDaGFpbi5nZXQoKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCBmZTAxY2I5OTJkNjMwMmE0
ZTg2MzkyNjAwODE4MTE2ODkyNGUwZWZlLi5iYjgyNWFmZThkYjI0MTZjODRjMTZhNGVjZjc0NmU0
N2RlNzU5YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAg
LTY0NSw3ICs2NDUsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaQogICAgIGlmICghaXNFeHRl
bnNpYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+
IHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKG1fc3RydWN0dXJl
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCk7Cisg
ICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRy
YW5zaXRpb24oZ2xvYmFsRGF0YSwgbV9zdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRl
cywgc3BlY2lmaWNGdW5jdGlvbiwgb2Zmc2V0KTsKIAogICAgIGlmIChjdXJyZW50Q2FwYWNpdHkg
IT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQogICAgICAgICBhbGxvY2F0
ZVByb3BlcnR5U3RvcmFnZShjdXJyZW50Q2FwYWNpdHksIHN0cnVjdHVyZS0+cHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkoKSk7CkBAIC04MTUsNyArODE1LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpT
T2JqZWN0OjptYXJrQ2hpbGRyZW5EaXJlY3QoTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAg
SlNDZWxsOjptYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKIAotICAgIG1hcmtTdGFjay5hcHBlbmQo
bV9zdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZVNsb3QoKSk7CisgICAgbV9zdHJ1Y3R1cmUtPm1h
cmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKICAgICBQcm9wZXJ0eVN0b3JhZ2Ugc3RvcmFnZSA9IHBy
b3BlcnR5U3RvcmFnZSgpOwogICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IG1fc3RydWN0dXJlLT5w
cm9wZXJ0eVN0b3JhZ2VTaXplKCk7CiAgICAgbWFya1N0YWNrLmFwcGVuZFZhbHVlcyhzdG9yYWdl
LCBzdG9yYWdlU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCmluZGV4IDBkNzU5Y2ZjMTVjOWQyYmU5YjAw
Yzg1Y2FkNjRiMWUyOTY4MDVlMGEuLjZmMzFmOTk5ZDcwOTVkY2M1Y2Y2ZDNkMDZjYzMyZDI4Njhl
YjI4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IqIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0CiAgICAgICAgICAgICByZXR1cm4ganNQcm9wZXJ0eU5hbWVJdGVyYXRvcjsKICAg
ICB9CiAKLSAgICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5zZXRDYWNoZWRQcm90b3R5cGVDaGFp
bihzdHJ1Y3R1cmVDaGFpbik7CisgICAganNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+c2V0Q2FjaGVk
UHJvdG90eXBlQ2hhaW4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmVDaGFpbik7CiAgICAg
anNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+c2V0Q2FjaGVkU3RydWN0dXJlKG8tPnN0cnVjdHVyZSgp
KTsKICAgICBvLT5zdHJ1Y3R1cmUoKS0+c2V0RW51bWVyYXRpb25DYWNoZShleGVjLT5nbG9iYWxE
YXRhKCksIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IpOwogICAgIHJldHVybiBqc1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yOwpAQCAtODYsNyArODYsNyBAQCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdAogSlNW
YWx1ZSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpnZXQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogYmFzZSwgc2l6ZV90IGkpCiB7CiAgICAgSlNWYWx1ZSBpZGVudGlmaWVyID0gbV9qc1N0cmlu
Z3NbaV0uZ2V0KCk7Ci0gICAgaWYgKG1fY2FjaGVkU3RydWN0dXJlID09IGJhc2UtPnN0cnVjdHVy
ZSgpICYmIG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4gPT0gYmFzZS0+c3RydWN0dXJlKCktPnByb3Rv
dHlwZUNoYWluKGV4ZWMpKQorICAgIGlmIChtX2NhY2hlZFN0cnVjdHVyZSA9PSBiYXNlLT5zdHJ1
Y3R1cmUoKSAmJiBtX2NhY2hlZFByb3RvdHlwZUNoYWluLmdldCgpID09IGJhc2UtPnN0cnVjdHVy
ZSgpLT5wcm90b3R5cGVDaGFpbihleGVjKSkKICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiAK
ICAgICBpZiAoIWJhc2UtPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgYXNTdHJp
bmcoaWRlbnRpZmllciktPnZhbHVlKGV4ZWMpKSkpCkBAIC05Nyw2ICs5Nyw4IEBAIEpTVmFsdWUg
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJh
c2UsIHNpemVfdCBpKQogdm9pZCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptYXJrQ2hpbGRyZW4o
TWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAgbWFya1N0YWNrLmFwcGVuZFZhbHVlcyhtX2pz
U3RyaW5ncy5nZXQoKSwgbV9qc1N0cmluZ3NTaXplLCBNYXlDb250YWluTnVsbFZhbHVlcyk7Cisg
ICAgaWYgKG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4pCisgICAgICAgIG1hcmtTdGFjay5hcHBlbmQo
Jm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4pOwogfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oCmluZGV4IDhiMDA3ZGQ3NjdmNjQ2NGIxNDM4MTk5ZTRmYTYxODVlNGQzMmFkMDEuLjQ5
OTM5NmNjNTg3ODM4ODM3MDZiMzI0ZGI2MTQ0NmMxMjVlMTc2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKQEAg
LTczLDcgKzczLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAgICAgICAgU3RydWN0
dXJlKiBjYWNoZWRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2NhY2hlZFN0cnVjdHVyZS5nZXQoKTsg
fQogCi0gICAgICAgIHZvaWQgc2V0Q2FjaGVkUHJvdG90eXBlQ2hhaW4oTm9uTnVsbFBhc3NSZWZQ
dHI8U3RydWN0dXJlQ2hhaW4+IGNhY2hlZFByb3RvdHlwZUNoYWluKSB7IG1fY2FjaGVkUHJvdG90
eXBlQ2hhaW4gPSBjYWNoZWRQcm90b3R5cGVDaGFpbjsgfQorICAgICAgICB2b2lkIHNldENhY2hl
ZFByb3RvdHlwZUNoYWluKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlQ2hhaW4q
IGNhY2hlZFByb3RvdHlwZUNoYWluKSB7IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uc2V0KGdsb2Jh
bERhdGEsIHRoaXMsIGNhY2hlZFByb3RvdHlwZUNoYWluKTsgfQogICAgICAgICBTdHJ1Y3R1cmVD
aGFpbiogY2FjaGVkUHJvdG90eXBlQ2hhaW4oKSB7IHJldHVybiBtX2NhY2hlZFByb3RvdHlwZUNo
YWluLmdldCgpOyB9CiAKICAgICBwcml2YXRlOgpAQCAtODQsNyArODQsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICNlbmRpZgogCiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG1fY2FjaGVkU3RydWN0
dXJlOwotICAgICAgICBSZWZQdHI8U3RydWN0dXJlQ2hhaW4+IG1fY2FjaGVkUHJvdG90eXBlQ2hh
aW47CisgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmVDaGFpbj4gbV9jYWNoZWRQcm90b3R5
cGVDaGFpbjsKICAgICAgICAgdWludDMyX3QgbV9udW1DYWNoZWFibGVTbG90czsKICAgICAgICAg
dWludDMyX3QgbV9qc1N0cmluZ3NTaXplOwogICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJp
ZXI8VW5rbm93bj4gPiBtX2pzU3RyaW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTWm9tYmllLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTWm9tYmllLmNwcAppbmRleCAyM2NmMTM1ZjkwODM1YTM3YjY3MTBlNWZjMDM2YjFjYzljNGQ4
NGE0Li43M2JmMDA3MmI1YmE3MDgwYzk0M2QyMGNmZThkMzg1MmJmNmU4MDAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNab21iaWUuY3BwCkBAIC0zNSwxMSArMzUsMTEgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBKU1pvbWJpZTo6c19pbmZvID0geyAi
Wm9tYmllIiwgMCwgMCwgMCB9OwogCi1TdHJ1Y3R1cmUqIEpTWm9tYmllOjpsZWFrZWRab21iaWVT
dHJ1Y3R1cmUoKSB7CitTdHJ1Y3R1cmUqIEpTWm9tYmllOjpsZWFrZWRab21iaWVTdHJ1Y3R1cmUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKSB7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gMDsKICAgICBpZiAoIXN0cnVjdHVyZSkgewogICAgICAgICBTdHJ1Y3R1cmU6OnN0YXJ0
SWdub3JpbmdMZWFrcygpOwotICAgICAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmNyZWF0ZShq
c051bGwoKSwgVHlwZUluZm8oVW5zcGVjaWZpZWRUeXBlKSwgMCwgJnNfaW5mbykubGVha1JlZigp
OworICAgICAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBqc051
bGwoKSwgVHlwZUluZm8oVW5zcGVjaWZpZWRUeXBlKSwgMCwgJnNfaW5mbykubGVha1JlZigpOwog
ICAgICAgICBTdHJ1Y3R1cmU6OnN0b3BJZ25vcmluZ0xlYWtzKCk7CiAgICAgfQogICAgIHJldHVy
biBzdHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1pvbWJpZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNab21iaWUuaAppbmRl
eCAxNzlmZjUzMTAwZmQzZmQyMGFiM2MxNzQ3MzI1ZDlkZDE4MGNiNzI1Li5kZmZmMWE3YTY2Mzcz
MThkMDA5OTA0Nzc5MWJkOGQ3NDBjMjBiMjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1pvbWJpZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTWm9tYmllLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZp
cnR1YWwgYm9vbCBpc1pvbWJpZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICBzdGF0aWMg
U3RydWN0dXJlKiBsZWFrZWRab21iaWVTdHJ1Y3R1cmUoKTsKKyAgICBzdGF0aWMgU3RydWN0dXJl
KiBsZWFrZWRab21iaWVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJik7CiAKICAgICB2aXJ0dWFsIGJv
b2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNBUElWYWx1ZVdyYXBwZXIoKSBjb25zdCB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtTdGFjay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWFya1N0YWNrLmgKaW5kZXggZGVlNGYzNDIwY2U2MTU2MGQ4MTkwMGZiMDg0MjE0
YzY0YTZkNTdlYS4uNzEzMTkxN2Y2NWQ0YjQ2YjkwMzFhMDY4OGY0N2Y5OTZkZDIzN2ZiMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya1N0YWNrLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya1N0YWNrLmgKQEAgLTIxNSwxMiArMjE1
LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGlu
ZSB2b2lkIE1hcmtTdGFjazo6YXBwZW5kKERlcHJlY2F0ZWRQdHI8VD4qIHNsb3QpCiAgICAgewot
ICAgICAgICBpbnRlcm5hbEFwcGVuZChzbG90LT5nZXQoKSk7CisgICAgICAgIGludGVybmFsQXBw
ZW5kKCpzbG90LT5zbG90KCkpOwogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gaW5saW5lIHZvaWQgTWFya1N0YWNrOjphcHBlbmQoV3JpdGVCYXJyaWVyQmFzZTxUPiogc2xv
dCkKICAgICB7Ci0gICAgICAgIGludGVybmFsQXBwZW5kKHNsb3QtPmdldCgpKTsKKyAgICAgICAg
aW50ZXJuYWxBcHBlbmQoKnNsb3QtPnNsb3QoKSk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIE1hcmtTdGFjazo6ZGVwcmVjYXRlZEFwcGVuZChKU0NlbGwqKiB2YWx1ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZEJsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZEJsb2NrLmNwcAppbmRleCBjYWU3MDFm
YTJjYjFiY2ZlMDdmZmI0MDk1N2U0ODRmYzQxZTdjNmM3Li4zOThkNDMzMjVjNjRkMmNlMmRiNDRl
ZWI3NTJkMjNjZmZmOTNjZjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXJrZWRCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWFya2VkQmxvY2suY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgTWFya2VkQmxvY2s6OnN3ZWVw
KCkKICAgICAgICAgaWYgKCFjZWxsLT5pc1pvbWJpZSgpKSB7CiAgICAgICAgICAgICBjb25zdCBD
bGFzc0luZm8qIGluZm8gPSBjZWxsLT5jbGFzc0luZm8oKTsKICAgICAgICAgICAgIGNlbGwtPn5K
U0NlbGwoKTsKLSAgICAgICAgICAgIG5ldyAoY2VsbCkgSlNab21iaWUoaW5mbywgSlNab21iaWU6
OmxlYWtlZFpvbWJpZVN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIG5ldyAoY2VsbCkgSlNab21i
aWUoaW5mbywgSlNab21iaWU6OmxlYWtlZFpvbWJpZVN0cnVjdHVyZSgqbV9oZWFwLT5nbG9iYWxE
YXRhKCkpKTsKICAgICAgICAgICAgIG1fbWFya3Muc2V0KGkpOwogICAgICAgICB9CiAjZWxzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggODI5ZTNk
YmQ5ZGI3ZDMwMTI5NjFiNTlhMDgwMjAzYmFjOWNjYTY3NS4uMTMxZWE2YmRlMzBhNTYwOTc1MTk4
ZGUxMTdmZjQyZWM2N2I3OWI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCkBAIC0zNjcsNyArMzY3LDcgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0
cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3QK
ICAgICByZXR1cm4gMDsKIH0KIAotUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6YWRk
UHJvcGVydHlUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1
ZSwgc2l6ZV90JiBvZmZzZXQpCitQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjphZGRQ
cm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KQogewogICAgIC8vIElm
IHdlIGhhdmUgYSBzcGVjaWZpYyBmdW5jdGlvbiwgd2UgbWF5IGhhdmUgZ290IHRvIHRoaXMgcG9p
bnQgaWYgdGhlcmUgaXMKICAgICAvLyBhbHJlYWR5IGEgdHJhbnNpdGlvbiB3aXRoIHRoZSBjb3Jy
ZWN0IHByb3BlcnR5IG5hbWUgYW5kIGF0dHJpYnV0ZXMsIGJ1dApAQCAtMzk5LDcgKzM5OSw3IEBA
IFBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uCiAKICAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0
aW9uID0gY3JlYXRlKHN0cnVjdHVyZSk7CiAKLSAgICB0cmFuc2l0aW9uLT5tX2NhY2hlZFByb3Rv
dHlwZUNoYWluID0gc3RydWN0dXJlLT5tX2NhY2hlZFByb3RvdHlwZUNoYWluOworICAgIHRyYW5z
aXRpb24tPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uc2V0KGdsb2JhbERhdGEsIHN0cnVjdHVyZS0+
bV9jYWNoZWRQcm90b3R5cGVDaGFpbi5nZXQoKSwgMCk7CiAgICAgdHJhbnNpdGlvbi0+bV9wcmV2
aW91cyA9IHN0cnVjdHVyZTsKICAgICB0cmFuc2l0aW9uLT5tX25hbWVJblByZXZpb3VzID0gcHJv
cGVydHlOYW1lLmltcGwoKTsKICAgICB0cmFuc2l0aW9uLT5tX2F0dHJpYnV0ZXNJblByZXZpb3Vz
ID0gYXR0cmlidXRlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgK
aW5kZXggNmY3MDYwYmYxYWFkYzI0MDNmOTcwYzUxZGU4ZWIyNjg1MGE0NDUyZi4uZTY4NThiNTIw
OGQzNThhN2YyNzAzNDhiN2RlZjVhNTE4ZDYwMGZhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJQcm9wZXJ0
eU1hcEhhc2hUYWJsZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVk
ZSAiUHJvdGVjdC5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCiAjaW5jbHVkZSAiU3Ry
dWN0dXJlVHJhbnNpdGlvblRhYmxlLmgiCiAjaW5jbHVkZSAiSlNUeXBlSW5mby5oIgogI2luY2x1
ZGUgIlVTdHJpbmcuaCIKQEAgLTQ2LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xh
c3MgTWFya1N0YWNrOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwogICAgIGNsYXNzIFBy
b3BlcnR5TmFtZUFycmF5RGF0YTsKKyAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKIAogICAgIHN0
cnVjdCBDbGFzc0luZm87CiAKQEAgLTczLDcgKzczLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgc3RhdGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsKIAotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IGFkZFByb3BlcnR5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCog
c3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTdHJ1Y3R1cmU+IGFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1
cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMs
IEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwogICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1
Y3R1cmUoU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KTsKICAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRp
b24oU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBzaXplX3QmIG9m
ZnNldCk7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY2hhbmdlUHJvdG90
eXBlVHJhbnNpdGlvbihTdHJ1Y3R1cmUqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CkBAIC0xMDQsOSAr
MTA0LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBUeXBlSW5mbyYgdHlwZUlu
Zm8oKSBjb25zdCB7IHJldHVybiBtX3R5cGVJbmZvOyB9CiAKICAgICAgICAgSlNWYWx1ZSBzdG9y
ZWRQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3Byb3RvdHlwZS5nZXQoKTsgfQotICAgICAg
ICBEZXByZWNhdGVkUHRyPFVua25vd24+KiBzdG9yZWRQcm90b3R5cGVTbG90KCkgeyByZXR1cm4g
Jm1fcHJvdG90eXBlOyB9CiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlRm9yTG9va3VwKEV4ZWNT
dGF0ZSopIGNvbnN0OwogICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogcHJvdG90eXBlQ2hhaW4oRXhl
Y1N0YXRlKikgY29uc3Q7CisgICAgICAgIHZvaWQgbWFya0FnZ3JlZ2F0ZShNYXJrU3RhY2smIG1h
cmtTdGFjaykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fcHJvdG90eXBlKQorICAgICAg
ICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJm1fcHJvdG90eXBlKTsKKyAgICAgICAgfQogCiAg
ICAgICAgIFN0cnVjdHVyZSogcHJldmlvdXNJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJldmlvdXMu
Z2V0KCk7IH0KIApAQCAtMjEwLDcgKzIxNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBU
eXBlSW5mbyBtX3R5cGVJbmZvOwogCiAgICAgICAgIERlcHJlY2F0ZWRQdHI8VW5rbm93bj4gbV9w
cm90b3R5cGU7Ci0gICAgICAgIG11dGFibGUgUmVmUHRyPFN0cnVjdHVyZUNoYWluPiBtX2NhY2hl
ZFByb3RvdHlwZUNoYWluOworICAgICAgICBtdXRhYmxlIFdlYWtHQ1B0cjxTdHJ1Y3R1cmVDaGFp
bj4gbV9jYWNoZWRQcm90b3R5cGVDaGFpbjsKIAogICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBt
X3ByZXZpb3VzOwogICAgICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbV9uYW1lSW5QcmV2aW91czsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWlu
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcApp
bmRleCBlNDUyM2MzYTY4OTNkNWRkYjZkOWZlNTg1NzNlOTRhY2U5NThkOTViLi42YTVlMTc0YzYz
NTAzOGZlZWM3NDZmNDg2MjAzYzg2NTc3NDkzNDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCkBAIC0zMiw3ICszMiw4IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi1TdHJ1Y3R1cmVDaGFpbjo6U3RydWN0dXJlQ2hhaW4oU3RydWN0dXJl
KiBoZWFkKQorU3RydWN0dXJlQ2hhaW46OlN0cnVjdHVyZUNoYWluKE5vbk51bGxQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIGhlYWQpCisgICAgOiBKU0NlbGwoc3Ry
dWN0dXJlLnJlbGVhc2VSZWYoKSkKIHsKICAgICBzaXplX3Qgc2l6ZSA9IDA7CiAgICAgZm9yIChT
dHJ1Y3R1cmUqIGN1cnJlbnQgPSBoZWFkOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+c3Rv
cmVkUHJvdG90eXBlKCkuaXNOdWxsKCkgPyAwIDogYXNPYmplY3QoY3VycmVudC0+c3RvcmVkUHJv
dG90eXBlKCkpLT5zdHJ1Y3R1cmUoKSkKQEAgLTQ2LDQgKzQ3LDE1IEBAIFN0cnVjdHVyZUNoYWlu
OjpTdHJ1Y3R1cmVDaGFpbihTdHJ1Y3R1cmUqIGhlYWQpCiAgICAgbV92ZWN0b3JbaV0gPSAwOwog
fQogCitTdHJ1Y3R1cmVDaGFpbjo6flN0cnVjdHVyZUNoYWluKCkKK3sKK30KKwordm9pZCBTdHJ1
Y3R1cmVDaGFpbjo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQoreworICAgIHNp
emVfdCBpID0gMDsKKyAgICB3aGlsZSAobV92ZWN0b3JbaV0pCisgICAgICAgIG1fdmVjdG9yW2kr
K10tPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAppbmRleCA4
MTZiNjZkNTA1MTU1MGJjZWIyYjRlZmEyN2U1MTQxOWUyZDlhMzNmLi4zNDU2NGFiMWMwMWUxMzM0
NzhhMTU0MTIxZWQyNWM5MzIyMTY2NjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUNoYWluLmgKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5kZWYgU3RydWN0
dXJlQ2hhaW5faAogI2RlZmluZSBTdHJ1Y3R1cmVDaGFpbl9oCiAKKyNpbmNsdWRlICJKU0NlbGwu
aCIKKwogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTM1LDE2ICszNywxOSBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFN0cnVjdHVyZTsKIAotICAgIGNsYXNzIFN0cnVj
dHVyZUNoYWluIDogcHVibGljIFJlZkNvdW50ZWQ8U3RydWN0dXJlQ2hhaW4+IHsKKyAgICBjbGFz
cyBTdHJ1Y3R1cmVDaGFpbiA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3Mg
SklUOwogCiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmVD
aGFpbj4gY3JlYXRlKFN0cnVjdHVyZSogaGVhZCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFN0cnVj
dHVyZUNoYWluKGhlYWQpKTsgfQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlQ2hhaW4qIGNyZWF0
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogaGVhZCkgeyByZXR1cm4gbmV3
ICgmZ2xvYmFsRGF0YSkgU3RydWN0dXJlQ2hhaW4oZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVDaGFpblN0
cnVjdHVyZSwgaGVhZCk7IH0KICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4qIGhlYWQoKSB7IHJl
dHVybiBtX3ZlY3Rvci5nZXQoKTsgfQorICAgICAgICB2b2lkIG1hcmtDaGlsZHJlbihNYXJrU3Rh
Y2smKTsKIAotICAgIHByaXZhdGU6Ci0gICAgICAgIFN0cnVjdHVyZUNoYWluKFN0cnVjdHVyZSog
aGVhZCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0
dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpIHsgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91
bmRUeXBlLCBPdmVycmlkZXNNYXJrQ2hpbGRyZW4pLCAwLCAwKTsgfQogCisgICAgcHJpdmF0ZToK
KyAgICAgICAgU3RydWN0dXJlQ2hhaW4oTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgU3Ry
dWN0dXJlKiBoZWFkKTsKKyAgICAgICAgflN0cnVjdHVyZUNoYWluKCk7CiAgICAgICAgIE93bkFy
cmF5UHRyPFJlZlB0cjxTdHJ1Y3R1cmU+ID4gbV92ZWN0b3I7CiAgICAgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaAppbmRleCBhZjAxOGE4MWMyOTA3
YjNkYmMwYmIxNTk1NTIzOTQwNWM4MmVkYWRkLi4zNGRlYmEyYTYwNDg4MjUwYWIxZjViMGYyNTll
N2E5ZjQ5YWZjZDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
cml0ZUJhcnJpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJh
cnJpZXIuaApAQCAtOTQsOSArOTQsMjEgQEAgcHVibGljOgogICAgIENPTVBJTEVfQVNTRVJUKCFK
U1ZhbHVlQ2hlY2tlcjxUPjo6SXNKU1ZhbHVlLCBXcml0ZUJhcnJpZXJfSlNWYWx1ZV9pc19pbnZh
bGlkX191c2VfdW5rbm93bik7CiAgICAgdm9pZCBzZXQoSlNHbG9iYWxEYXRhJiwgY29uc3QgSlND
ZWxsKiwgVCogdmFsdWUpIHsgdGhpcy0+bV9jZWxsID0gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwq
Pih2YWx1ZSk7IH0KICAgICAKLSAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiByZWludGVycHJl
dF9jYXN0PFQqPihtX2NlbGwpOyB9Ci0gICAgVCogb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8VCo+KG1fY2VsbCk7IH0KLSAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KG1fY2VsbCk7IH0KKyAgICBUKiBnZXQoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KG1fY2VsbCk7CisgICAgfQor
CisgICAgVCogb3BlcmF0b3IqKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxUKj4obV9jZWxsKTsKKyAgICB9CisKKyAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9jZWxsKTsKKyAgICB9CisKICAg
ICB2b2lkIGNsZWFyKCkgeyBtX2NlbGwgPSAwOyB9CiAgICAgCiAgICAgSlNDZWxsKiogc2xvdCgp
IHsgcmV0dXJuICZtX2NlbGw7IH0KQEAgLTExNiw3ICsxMjgsMTMgQEAgdGVtcGxhdGUgPD4gY2xh
c3MgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiB7CiBwdWJsaWM6CiAgICAgdm9pZCBzZXQoSlNH
bG9iYWxEYXRhJiwgY29uc3QgSlNDZWxsKiwgSlNWYWx1ZSB2YWx1ZSkgeyBtX3ZhbHVlID0gSlNW
YWx1ZTo6ZW5jb2RlKHZhbHVlKTsgfQogICAgIHZvaWQgc2V0V2l0aG91dFdyaXRlQmFycmllcihK
U1ZhbHVlIHZhbHVlKSB7IG1fdmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOyB9Ci0gICAg
SlNWYWx1ZSBnZXQoKSBjb25zdCB7IHJldHVybiBKU1ZhbHVlOjpkZWNvZGUobV92YWx1ZSk7IH0K
KyAgICBKU1ZhbHVlIGdldCgpIGNvbnN0CisgICAgeworI2lmIEVOQUJMRShKU0NfWk9NQklFUykK
KyAgICAgICAgQVNTRVJUKCFKU1ZhbHVlOjpkZWNvZGUobV92YWx1ZSkgfHwgIUpTVmFsdWU6OmRl
Y29kZShtX3ZhbHVlKS5pc1pvbWJpZSgpKTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZGVjb2RlKG1fdmFsdWUpOworICAgIH0KICAgICB2b2lkIGNsZWFyKCkgeyBtX3ZhbHVlID0g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7IH0KICAgICB2b2lkIHNldFVuZGVmaW5lZCgpIHsg
bV92YWx1ZSA9IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsgfQogICAgIGJvb2wgaXNO
dW1iZXIoKSBjb25zdCB7IHJldHVybiBnZXQoKS5pc051bWJlcigpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YjE1ZjcxZTg3ZDYxMDc5ZDBlZWQ5MTNmN2ZmYzQxZWZhNDIwNTNkZi4uZjAzMDRiYzEyZTE4ZDMy
MGVlYjY2NjAyNjEwOGNlOWM4ZWYyM2EwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDExLTA0LTAxICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBTdHJ1Y3R1cmVDaGFpbiBH
QyBhbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU2Njk1CisKKyAgICAgICAgVXBkYXRlIGZvciBuZXcgU3RydWN0dXJlIG1hcmtpbmcgZnVu
Y3Rpb24KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0OjptYXJrQ2hpbGRyZW4pOgorCiAyMDEx
LTA0LTAxICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByODI3MTIsIHI4MjcyOSwgYW5kIHI4Mjc0Ni4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApp
bmRleCA4MTgzYjZlMmM0MGQ1NGMzOGQ3MTM1MGIzODM1MTMwZGYyMjBiNmI4Li4yY2VmOTkwNmU5
MDc0YTljOTFhOTFmMTMwYTNkNmRjMGJlMjUzYWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQg
SlNET01HbG9iYWxPYmplY3Q6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKIAog
ICAgIEpTRE9NU3RydWN0dXJlTWFwOjppdGVyYXRvciBlbmQgPSBzdHJ1Y3R1cmVzKCkuZW5kKCk7
CiAgICAgZm9yIChKU0RPTVN0cnVjdHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBzdHJ1Y3R1cmVzKCku
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBtYXJrU3RhY2suYXBwZW5kKGl0LT5z
ZWNvbmQtPnN0b3JlZFByb3RvdHlwZVNsb3QoKSk7CisgICAgICAgIGl0LT5zZWNvbmQtPm1hcmtB
Z2dyZWdhdGUobWFya1N0YWNrKTsKIAogICAgIEpTRE9NQ29uc3RydWN0b3JNYXA6Oml0ZXJhdG9y
IGVuZDIgPSBjb25zdHJ1Y3RvcnMoKS5lbmQoKTsKICAgICBmb3IgKEpTRE9NQ29uc3RydWN0b3JN
YXA6Oml0ZXJhdG9yIGl0MiA9IGNvbnN0cnVjdG9ycygpLmJlZ2luKCk7IGl0MiAhPSBlbmQyOyAr
K2l0MikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88073</attachid>
            <date>2011-04-04 10:09:22 -0700</date>
            <delta_ts>2011-04-04 10:41:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56695-20110404100921.patch</filename>
            <type>text/plain</type>
            <size>53306</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI4NDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDRl
YWM0NDYxMDk5NWEyZGY1NzAzMGM3YmI5NjYwYTg0Y2JiMDhkNzQuLjk4ZjRjNGQzZDY1OGZkN2Jl
NmE0ZjQ4YzdkYmFkMjU4OWJlZDg2N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDkyIEBACisyMDExLTA0LTAxICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBTdHJ1
Y3R1cmVDaGFpbiBHQyBhbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU2Njk1CisKKyAgICAgICAgTWFrZSBTdHJ1Y3R1cmVDaGFpbiBHQyBh
bGxvY2F0ZWQsIGFuZCBtYWtlIHRoZSB2YXJpb3VzIG93bmVycworICAgICAgICBtYXJrIGl0IGNv
cnJlY3RseS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmRlcmVmU3RydWN0dXJlcyk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6cmVmU3RydWN0dXJlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bWFya0Fn
Z3JlZ2F0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEpT
Qzo6UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0OjpQb2x5bW9ycGhpY1N0dWJJbmZvOjpz
ZXQpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3Q6OlBvbHlt
b3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCk6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNj
ZXNzU3RydWN0dXJlTGlzdDo6ZGVyZWZTdHJ1Y3R1cmVzKToKKyAgICAgICAgKEpTQzo6UG9seW1v
cnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0OjptYXJrQWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6
SW5zdHJ1Y3Rpb246Okluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpkZXJlZik6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjptYXJrQWdncmVnYXRlKToKKyAgICAgICAg
KiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVT
dHViSW5mbzo6aW5pdEdldEJ5SWRDaGFpbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJ
bmZvOjppbml0UHV0QnlJZFRyYW5zaXRpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
SnVtcElmTm90RnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KToKKyAgICAgICAgKiBjb2xsZWN0b3IvaGFuZGxl
cy9IYW5kbGUuaDoKKyAgICAgICAgKEpTQzo6SGFuZGxlQ29udmVydGVyOjpvcGVyYXRvci0+KToK
KyAgICAgICAgKEpTQzo6SGFuZGxlQ29udmVydGVyOjpvcGVyYXRvciopOgorICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnBy
aXZhdGVFeGVjdXRlKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9qbmVxX3B0cik6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82
NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX3B0cik6CisgICAgICAgICog
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxp
c3QpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkpJVFRodW5r
czo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0cnlDYWNoZUdl
dEJ5SUQpOgorICAgICAgICAoSlNDOjpnZXRQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RT
bG90KToKKyAgICAgICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuY3BwOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6bWFya0lmTmVlZGVkKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0Lmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHJvdG90eXBlQ2hhaW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERp
cmVjdEludGVybmFsKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om1hcmtDaGlsZHJlbkRpcmVj
dCk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Z2V0KToKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcjo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlO
YW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6c2V0
Q2FjaGVkUHJvdG90eXBlQ2hhaW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNab21iaWUuY3BwOgor
ICAgICAgICAoSlNDOjpKU1pvbWJpZTo6bGVha2VkWm9tYmllU3RydWN0dXJlKToKKyAgICAgICAg
KiBydW50aW1lL0pTWm9tYmllLmg6CisgICAgICAgICogcnVudGltZS9NYXJrU3RhY2suaDoKKyAg
ICAgICAgKEpTQzo6TWFya1N0YWNrOjphcHBlbmQpOgorICAgICAgICAqIHJ1bnRpbWUvTWFya2Vk
QmxvY2suY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c3dlZXApOgorICAgICAgICAq
IHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9w
ZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6bWFya0FnZ3JlZ2F0ZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmVDaGFpbi5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNoYWluOjpTdHJ1Y3R1cmVD
aGFpbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNoYWluOjp+U3RydWN0dXJlQ2hhaW4pOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVDaGFpbjo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBy
dW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNoYWluOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKiBydW50aW1lL1dyaXRlQmFycmllci5oOgorICAgICAgICAoSlNDOjpXcml0ZUJh
cnJpZXJCYXNlOjpnZXQpOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJCYXNlOjpvcGVyYXRv
ciopOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXJCYXNlOjpvcGVyYXRvci0+KToKKwogMjAx
MS0wNC0wMSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE9saXZlciBIdW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5leHAKaW5kZXggZTI2NDdkMWEzMWViZDc4MGE0NGM3MWM2NmZlMDQ0ZGI0YmE3OTE4NC4uYjll
NTM1NDljZGY4OTRjMjAxYWI2YWVlZWZjOTkxYTdkOWRlODY3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0zMTQsNyArMzE0LDcgQEAgX19aTjNKU0M5TWFy
a1N0YWNrMTBzX3BhZ2VTaXplRQogX19aTjNKU0M5TWFya1N0YWNrMThpbml0aWFsaXplUGFnZXNp
emVFdgogX19aTjNKU0M5U3RydWN0dXJlMTdzdG9wSWdub3JpbmdMZWFrc0V2CiBfX1pOM0pTQzlT
dHJ1Y3R1cmUxOHN0YXJ0SWdub3JpbmdMZWFrc0V2Ci1fX1pOM0pTQzlTdHJ1Y3R1cmUyMWFkZFBy
b3BlcnR5VHJhbnNpdGlvbkVQUzBfUktOU18xMElkZW50aWZpZXJFalBOU182SlNDZWxsRVJtCitf
X1pOM0pTQzlTdHJ1Y3R1cmUyMWFkZFByb3BlcnR5VHJhbnNpdGlvbkVSTlNfMTJKU0dsb2JhbERh
dGFFUFMwX1JLTlNfMTBJZGVudGlmaWVyRWpQTlNfNkpTQ2VsbEVSbQogX19aTjNKU0M5U3RydWN0
dXJlMjJtYXRlcmlhbGl6ZVByb3BlcnR5TWFwRXYKIF9fWk4zSlNDOVN0cnVjdHVyZTI1Y2hhbmdl
UHJvdG90eXBlVHJhbnNpdGlvbkVQUzBfTlNfN0pTVmFsdWVFCiBfX1pOM0pTQzlTdHJ1Y3R1cmUy
N2Rlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbkVSS05TXzEwSWRlbnRpZmllckUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZGVmIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKaW5kZXggZDdj
ZGRmNGY1OGI4OGMzZTUyMmY3YzUxMWI5NzYwMTM4M2FlMzI0NC4uNWM0YzM3NGFkNGMwZDQ4ZGNk
YjQ1MzE2ZWRhZmNhYWI2YWI2ODIxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKQEAgLTUxLDcgKzUxLDcgQEAgRVhQT1JUUwogICAg
ID9hZGRCeXRlc0BNRDVAV1RGQEBRQUVYUEJFSUBaCiAgICAgP2FkZEJ5dGVzQFNIQTFAV1RGQEBR
QUVYUEJFSUBaCiAgICAgP2FkZEN1cnJlbnRUaHJlYWRATWFjaGluZVRocmVhZHNASlNDQEBRQUVY
WFoKLSAgICA/YWRkUHJvcGVydHlUcmFuc2l0aW9uQFN0cnVjdHVyZUBKU0NAQFNBP0FWPyRQYXNz
UmVmUHRyQFZTdHJ1Y3R1cmVASlNDQEBAV1RGQEBQQVYxMkBBQlZJZGVudGlmaWVyQDJASVBBVkpT
Q2VsbEAyQEFBSUBaCisgICAgP2FkZFByb3BlcnR5VHJhbnNpdGlvbkBTdHJ1Y3R1cmVASlNDQEBT
QT9BVj8kUGFzc1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BAQFdURkBAQUFWSlNHbG9iYWxEYXRhQDJA
UEFWMTJAQUJWSWRlbnRpZmllckAyQElQQVZKU0NlbGxAMkBBQUlAWgogICAgID9hZGRQcm9wZXJ0
eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlQFN0cnVjdHVyZUBKU0NAQFNBP0FWPyRQYXNz
UmVmUHRyQFZTdHJ1Y3R1cmVASlNDQEBAV1RGQEBQQVYxMkBBQlZJZGVudGlmaWVyQDJASVBBVkpT
Q2VsbEAyQEFBSUBaCiAgICAgP2FkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb25AU3RydWN0dXJl
QEpTQ0BAUUFFSUFCVklkZW50aWZpZXJAMkBJUEFWSlNDZWxsQDJAQFoKICAgICA/YWRkU2xvd0Nh
c2VASWRlbnRpZmllckBKU0NAQENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQFdU
RkBAUEFWRXhlY1N0YXRlQDJAUEFWU3RyaW5nSW1wbEA0QEBaCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDBhMGNmODQ0ZGQ0Mjg5NjE4ZWE4Y2Ez
YjE0NWQ5NDYyZDRkODc3NGEuLmIyMGNhNDRkNTkwMDBlOWE1NTgzNmQ1YjRkMGFhYjBhNWIzZWEw
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBA
IC03MzEsNyArNzMxLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYKICAgICAgICAgY2FzZSBv
cF9yZXNvbHZlX2dsb2JhbF9keW5hbWljOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCkt
PnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIEpTVmFsdWUgc2NvcGUgPSBKU1ZhbHVlKCgrK2l0KS0+dS5qc0NlbGwpOworICAg
ICAgICAgICAgSlNWYWx1ZSBzY29wZSA9IEpTVmFsdWUoKCsraXQpLT51LmpzQ2VsbC5nZXQoKSk7
CiAgICAgICAgICAgICArK2l0OwogICAgICAgICAgICAgaW50IGRlcHRoID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBwcmludGYoIlslNGRdIHJlc29sdmVfZ2xvYmFsX2R5bmFtaWNc
dCAlcywgJXMsICVzLCAlZFxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpLCB2YWx1ZVRvU291cmNlU3RyaW5nKGV4ZWMsIHNjb3BlKS51dGY4KCkuZGF0YSgpLCBpZE5h
bWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0pLmRhdGEoKSwgZGVwdGgpOwpAQCAtMTQzNywxMyAr
MTQzNywxMSBAQCB2b2lkIENvZGVCbG9jazo6ZGVyZWZTdHJ1Y3R1cmVzKEluc3RydWN0aW9uKiB2
UEMpIGNvbnN0CiAgICAgfQogICAgIGlmICh2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXIt
PmdldE9wY29kZShvcF9nZXRfYnlfaWRfY2hhaW4pIHx8IHZQQ1swXS51Lm9wY29kZSA9PSBpbnRl
cnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9nZXR0ZXJfY2hhaW4pIHx8IHZQQ1swXS51
Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9ieV9pZF9jdXN0b21fY2hh
aW4pKSB7CiAgICAgICAgIHZQQ1s0XS51LnN0cnVjdHVyZS0+ZGVyZWYoKTsKLSAgICAgICAgdlBD
WzVdLnUuc3RydWN0dXJlQ2hhaW4tPmRlcmVmKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9i
eV9pZF90cmFuc2l0aW9uKSkgewogICAgICAgICB2UENbNF0udS5zdHJ1Y3R1cmUtPmRlcmVmKCk7
CiAgICAgICAgIHZQQ1s1XS51LnN0cnVjdHVyZS0+ZGVyZWYoKTsKLSAgICAgICAgdlBDWzZdLnUu
c3RydWN0dXJlQ2hhaW4tPmRlcmVmKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYg
KHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF9y
ZXBsYWNlKSkgewpAQCAtMTQ4NiwxMyArMTQ4NCwxMSBAQCB2b2lkIENvZGVCbG9jazo6cmVmU3Ry
dWN0dXJlcyhJbnN0cnVjdGlvbiogdlBDKSBjb25zdAogICAgIH0KICAgICBpZiAodlBDWzBdLnUu
b3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2NoYWluKSB8fCB2
UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9nZXRfYnlfaWRfZ2V0
dGVyX2NoYWluKSB8fCB2UENbMF0udS5vcGNvZGUgPT0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShv
cF9nZXRfYnlfaWRfY3VzdG9tX2NoYWluKSkgewogICAgICAgICB2UENbNF0udS5zdHJ1Y3R1cmUt
PnJlZigpOwotICAgICAgICB2UENbNV0udS5zdHJ1Y3R1cmVDaGFpbi0+cmVmKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+
Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uKSkgewogICAgICAgICB2UENbNF0udS5z
dHJ1Y3R1cmUtPnJlZigpOwogICAgICAgICB2UENbNV0udS5zdHJ1Y3R1cmUtPnJlZigpOwotICAg
ICAgICB2UENbNl0udS5zdHJ1Y3R1cmVDaGFpbi0+cmVmKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9w
X3B1dF9ieV9pZF9yZXBsYWNlKSkgewpAQCAtMTUyNyw2ICsxNTIzLDM0IEBAIHZvaWQgQ29kZUJs
b2NrOjptYXJrQWdncmVnYXRlKE1hcmtTdGFjayYgbWFya1N0YWNrKQogICAgICAgICBpZiAoY2Fs
bExpbmtJbmZvKGkpLmlzTGlua2VkKCkpCiAgICAgICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZj
YWxsTGlua0luZm8oaSkuY2FsbGVlKTsKICNlbmRpZgorI2lmIEVOQUJMRShJTlRFUlBSRVRFUikK
KyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBtX2dsb2JhbERhdGEtPmludGVycHJldGVy
OworICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNp
emUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIHZQQyA9
ICZtX2luc3RydWN0aW9uc1ttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXTsKKyAgICAg
ICAgaWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX2dldF9i
eV9pZF9jaGFpbikgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJldGVyLT5nZXRPcGNvZGUo
b3BfZ2V0X2J5X2lkX2dldHRlcl9jaGFpbikgfHwgdlBDWzBdLnUub3Bjb2RlID09IGludGVycHJl
dGVyLT5nZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2N1c3RvbV9jaGFpbikpCisgICAgICAgICAgICBt
YXJrU3RhY2suYXBwZW5kKCZ2UENbNV0udS5zdHJ1Y3R1cmVDaGFpbik7CisgICAgICAgIGVsc2Ug
aWYgKHZQQ1swXS51Lm9wY29kZSA9PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uKSkKKyAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoJnZQQ1s2XS51LnN0
cnVjdHVyZUNoYWluKTsKKyAgICB9CisjZW5kaWYKKyNpZiBFTkFCTEUoSklUKQorICAgIGZvciAo
c2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbmZvcy5zaXplKCksIGkgPSAwOyBpIDwgc2l6
ZTsgKytpKSB7CisgICAgICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG1fZ2xvYmFsUmVz
b2x2ZUluZm9zW2ldLnN0cnVjdHVyZSkKKyAgICAgICAgICAgIHN0cnVjdHVyZS0+bWFya0FnZ3Jl
Z2F0ZShtYXJrU3RhY2spOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3N0cnVj
dHVyZVN0dWJJbmZvcy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBtX3N0
cnVjdHVyZVN0dWJJbmZvc1tpXS5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7CisKKyAgICBmb3Ig
KHNpemVfdCBzaXplID0gbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSwgaSA9IDA7IGkgPCBz
aXplOyArK2kpIHsKKyAgICAgICAgaWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0gbV9tZXRob2RD
YWxsTGlua0luZm9zW2ldLmNhY2hlZFN0cnVjdHVyZSkgeworICAgICAgICAgICAgLy8gQm90aCBt
ZW1iZXJzIG11c3QgYmUgZmlsbGVkIGF0IHRoZSBzYW1lIHRpbWUKKyAgICAgICAgICAgIHN0cnVj
dHVyZS0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOworICAgICAgICAgICAgQVNTRVJUKCEhbV9t
ZXRob2RDYWxsTGlua0luZm9zW2ldLmNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZSk7CisgICAgICAg
ICAgICBtX21ldGhvZENhbGxMaW5rSW5mb3NbaV0uY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlLT5t
YXJrQWdncmVnYXRlKG1hcmtTdGFjayk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKIH0KIAog
SGFuZGxlckluZm8qIENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0luc3RydWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1
Y3Rpb24uaAppbmRleCBmMDc3Y2JmZjU4M2M2M2Y1YWI4YzFmNTAzNTU5Y2IxMzlmZjQwZTQ4Li5h
YThmNmMwNmUzY2M3YzRiYjlkNzRhNzU1ZTA0ZjdjNTcwMDFmODJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIlN0
cnVjdHVyZS5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCiAjaW5jbHVkZSA8d3RmL1Zl
Y3RvclRyYWl0cy5oPgogCiAjZGVmaW5lIFBPTFlNT1JQSElDX0xJU1RfQ0FDSEVfU0laRSA4CkBA
IC02Myw3ICs2NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgU3RydWN0dXJlKiBi
YXNlOwogICAgICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogcHJv
dG87Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluOworICAgICAgICAgICAg
ICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlQ2hhaW4+IGNoYWluOwogICAgICAgICAgICAg
fSB1OwogCiAgICAgICAgICAgICB2b2lkIHNldChQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxp
c3RTdHViUm91dGluZVR5cGUgX3N0dWJSb3V0aW5lLCBTdHJ1Y3R1cmUqIF9iYXNlKQpAQCAtODIs
MTEgKzgzLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGlzQ2hhaW4gPSBm
YWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgdm9pZCBzZXQo
UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U3R1YlJvdXRpbmVUeXBlIF9zdHViUm91dGlu
ZSwgU3RydWN0dXJlKiBfYmFzZSwgU3RydWN0dXJlQ2hhaW4qIF9jaGFpbikKKyAgICAgICAgICAg
IHZvaWQgc2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgUG9seW1v
cnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U3R1YlJvdXRpbmVUeXBlIF9zdHViUm91dGluZSwgU3Ry
dWN0dXJlKiBfYmFzZSwgU3RydWN0dXJlQ2hhaW4qIF9jaGFpbikKICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICBzdHViUm91dGluZSA9IF9zdHViUm91dGluZTsKICAgICAgICAgICAgICAg
ICBiYXNlID0gX2Jhc2U7Ci0gICAgICAgICAgICAgICAgdS5jaGFpbiA9IF9jaGFpbjsKKyAgICAg
ICAgICAgICAgICB1LmNoYWluLnNldChnbG9iYWxEYXRhLCBvd25lciwgX2NoYWluKTsKICAgICAg
ICAgICAgICAgICBpc0NoYWluID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBsaXN0
W1BPTFlNT1JQSElDX0xJU1RfQ0FDSEVfU0laRV07CkBAIC0xMDEsOSArMTAyLDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICBsaXN0WzBdLnNldChzdHViUm91dGluZSwgZmlyc3RCYXNl
LCBmaXJzdFByb3RvKTsKICAgICAgICAgfQogCi0gICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3Ry
dWN0dXJlTGlzdChQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTdHViUm91dGluZVR5cGUg
c3R1YlJvdXRpbmUsIFN0cnVjdHVyZSogZmlyc3RCYXNlLCBTdHJ1Y3R1cmVDaGFpbiogZmlyc3RD
aGFpbikKKyAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVM
aXN0U3R1YlJvdXRpbmVUeXBlIHN0dWJSb3V0aW5lLCBTdHJ1Y3R1cmUqIGZpcnN0QmFzZSwgU3Ry
dWN0dXJlQ2hhaW4qIGZpcnN0Q2hhaW4pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGxpc3RbMF0u
c2V0KHN0dWJSb3V0aW5lLCBmaXJzdEJhc2UsIGZpcnN0Q2hhaW4pOworICAgICAgICAgICAgbGlz
dFswXS5zZXQoZ2xvYmFsRGF0YSwgb3duZXIsIHN0dWJSb3V0aW5lLCBmaXJzdEJhc2UsIGZpcnN0
Q2hhaW4pOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBkZXJlZlN0cnVjdHVyZXMoaW50IGNv
dW50KQpAQCAtMTE1LDEzICsxMTYsMjIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAg
ICAgaW5mby5iYXNlLT5kZXJlZigpOwogCiAgICAgICAgICAgICAgICAgaWYgKGluZm8udS5wcm90
bykgewotICAgICAgICAgICAgICAgICAgICBpZiAoaW5mby5pc0NoYWluKQotICAgICAgICAgICAg
ICAgICAgICAgICAgaW5mby51LmNoYWluLT5kZXJlZigpOwotICAgICAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgIGlmICghaW5mby5pc0NoYWluKQogICAgICAgICAgICAg
ICAgICAgICAgICAgaW5mby51LnByb3RvLT5kZXJlZigpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KICAgICAgICAgfQorCisgICAgICAgIHZvaWQgbWFya0FnZ3JlZ2F0ZShNYXJr
U3RhY2smIG1hcmtTdGFjaywgaW50IGNvdW50KQorICAgICAgICB7CisgICAgICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgICAgICAgICBQb2x5bW9ycGhp
Y1N0dWJJbmZvJiBpbmZvID0gbGlzdFtpXTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoaW5mby5i
YXNlKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoaW5mby51LmNoYWlu
ICYmIGluZm8uaXNDaGFpbikKKyAgICAgICAgICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgm
aW5mby51LmNoYWluKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH07CiAKICAgICBz
dHJ1Y3QgSW5zdHJ1Y3Rpb24gewpAQCAtMTMwLDcgKzE0MCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
I2lmICFFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKICAgICAgICAgICAgIC8vIFdl
IGhhdmUgdG8gaW5pdGlhbGl6ZSBvbmUgb2YgdGhlIHBvaW50ZXIgbWVtYmVycyB0byBlbnN1cmUg
dGhhdAogICAgICAgICAgICAgLy8gdGhlIGVudGlyZSBzdHJ1Y3QgaXMgaW5pdGlhbGl6ZWQsIHdo
ZW4gb3Bjb2RlIGlzIG5vdCBhIHBvaW50ZXIuCi0gICAgICAgICAgICB1LmpzQ2VsbCA9IDA7Cisg
ICAgICAgICAgICB1LmpzQ2VsbC5jbGVhcigpOwogI2VuZGlmCiAgICAgICAgICAgICB1Lm9wY29k
ZSA9IG9wY29kZTsKICAgICAgICAgfQpAQCAtMTM5LDEzICsxNDksMjEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gaW5pdGlhbGl6ZSBvbmUg
b2YgdGhlIHBvaW50ZXIgbWVtYmVycyB0byBlbnN1cmUgdGhhdAogICAgICAgICAgICAgLy8gdGhl
IGVudGlyZSBzdHJ1Y3QgaXMgaW5pdGlhbGl6ZWQgaW4gNjQtYml0LgotICAgICAgICAgICAgdS5q
c0NlbGwgPSAwOworICAgICAgICAgICAgdS5qc0NlbGwuY2xlYXIoKTsKICAgICAgICAgICAgIHUu
b3BlcmFuZCA9IG9wZXJhbmQ7CiAgICAgICAgIH0KIAogICAgICAgICBJbnN0cnVjdGlvbihTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkgeyB1LnN0cnVjdHVyZSA9IHN0cnVjdHVyZTsgfQotICAgICAgICBJ
bnN0cnVjdGlvbihTdHJ1Y3R1cmVDaGFpbiogc3RydWN0dXJlQ2hhaW4pIHsgdS5zdHJ1Y3R1cmVD
aGFpbiA9IHN0cnVjdHVyZUNoYWluOyB9Ci0gICAgICAgIEluc3RydWN0aW9uKEpTQ2VsbCoganND
ZWxsKSB7IHUuanNDZWxsID0ganNDZWxsOyB9CisgICAgICAgIEluc3RydWN0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgU3RydWN0dXJlQ2hhaW4qIHN0cnVjdHVy
ZUNoYWluKQorICAgICAgICB7CisgICAgICAgICAgICB1LnN0cnVjdHVyZUNoYWluLmNsZWFyKCk7
CisgICAgICAgICAgICB1LnN0cnVjdHVyZUNoYWluLnNldChnbG9iYWxEYXRhLCBvd25lciwgc3Ry
dWN0dXJlQ2hhaW4pOworICAgICAgICB9CisgICAgICAgIEluc3RydWN0aW9uKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgSlNDZWxsKiBqc0NlbGwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHUuanNDZWxsLmNsZWFyKCk7CisgICAgICAgICAgICB1LmpzQ2VsbC5zZXQo
Z2xvYmFsRGF0YSwgb3duZXIsIGpzQ2VsbCk7CisgICAgICAgIH0KICAgICAgICAgSW5zdHJ1Y3Rp
b24oUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwb2x5bW9ycGhpY1N0cnVjdHVyZXMp
IHsgdS5wb2x5bW9ycGhpY1N0cnVjdHVyZXMgPSBwb2x5bW9ycGhpY1N0cnVjdHVyZXM7IH0KICAg
ICAgICAgSW5zdHJ1Y3Rpb24oUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYykg
eyB1LmdldHRlckZ1bmMgPSBnZXR0ZXJGdW5jOyB9CiAKQEAgLTE1Myw4ICsxNzEsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIE9wY29kZSBvcGNvZGU7CiAgICAgICAgICAgICBpbnQg
b3BlcmFuZDsKICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOwotICAgICAgICAgICAg
U3RydWN0dXJlQ2hhaW4qIHN0cnVjdHVyZUNoYWluOwotICAgICAgICAgICAgSlNDZWxsKiBqc0Nl
bGw7CisgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZUNoYWluPiBzdHJ1Y3R1
cmVDaGFpbjsKKyAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8SlNDZWxsPiBqc0NlbGw7CiAg
ICAgICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3Ry
dWN0dXJlczsKICAgICAgICAgICAgIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIGdldHRlckZ1
bmM7CiAgICAgICAgIH0gdTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IDVkZjQ4NDE0YWFjN2I4NmQxZDc4ZTM5MTJk
NzJmNzk2MjI3NzlmNzUuLmM2ZTUyZDI0MDYyNjllNGE1ZjA5MDg5OTUyNmJlMzE2OGNkMmRlNGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
SW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmNwcApAQCAtNDQsNyArNDQsNiBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpkZXJl
ZigpCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfY2hhaW46CiAg
ICAgICAgIHUuZ2V0QnlJZENoYWluLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPmRlcmVmKCk7Ci0gICAg
ICAgIHUuZ2V0QnlJZENoYWluLmNoYWluLT5kZXJlZigpOwogICAgICAgICByZXR1cm47CiAgICAg
Y2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGZfbGlzdDogewogICAgICAgICBQb2x5bW9ycGhpY0Fj
Y2Vzc1N0cnVjdHVyZUxpc3QqIHBvbHltb3JwaGljU3RydWN0dXJlcyA9IHUuZ2V0QnlJZFNlbGZM
aXN0LnN0cnVjdHVyZUxpc3Q7CkBAIC02MCw4ICs1OSw2IEBAIHZvaWQgU3RydWN0dXJlU3R1Yklu
Zm86OmRlcmVmKCkKICAgICB9CiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3RyYW5zaXRpb246
CiAgICAgICAgIHUucHV0QnlJZFRyYW5zaXRpb24ucHJldmlvdXNTdHJ1Y3R1cmUtPmRlcmVmKCk7
Ci0gICAgICAgIHUucHV0QnlJZFRyYW5zaXRpb24uc3RydWN0dXJlLT5kZXJlZigpOwotICAgICAg
ICB1LnB1dEJ5SWRUcmFuc2l0aW9uLmNoYWluLT5kZXJlZigpOwogICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3JlcGxhY2U6CiAgICAgICAgIHUucHV0QnlJZFJlcGxh
Y2UuYmFzZU9iamVjdFN0cnVjdHVyZS0+ZGVyZWYoKTsKQEAgLTc4LDYgKzc1LDUxIEBAIHZvaWQg
U3RydWN0dXJlU3R1YkluZm86OmRlcmVmKCkKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgfQogfQorCit2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjptYXJrQWdncmVnYXRlKE1hcmtT
dGFjayYgbWFya1N0YWNrKQoreworICAgIHN3aXRjaCAoYWNjZXNzVHlwZSkgeworICAgIGNhc2Ug
YWNjZXNzX2dldF9ieV9pZF9zZWxmOgorICAgICAgICB1LmdldEJ5SWRTZWxmLmJhc2VPYmplY3RT
dHJ1Y3R1cmUtPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKKyAgICAgICAgcmV0dXJuOworICAg
IGNhc2UgYWNjZXNzX2dldF9ieV9pZF9wcm90bzoKKyAgICAgICAgdS5nZXRCeUlkUHJvdG8uYmFz
ZU9iamVjdFN0cnVjdHVyZS0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOworICAgICAgICB1Lmdl
dEJ5SWRQcm90by5wcm90b3R5cGVTdHJ1Y3R1cmUtPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsK
KyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9jaGFpbjoKKyAgICAg
ICAgdS5nZXRCeUlkQ2hhaW4uYmFzZU9iamVjdFN0cnVjdHVyZS0+bWFya0FnZ3JlZ2F0ZShtYXJr
U3RhY2spOworICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZ1LmdldEJ5SWRDaGFpbi5jaGFpbik7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfc2VsZl9saXN0OiB7
CisgICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcG9seW1vcnBoaWNTdHJ1
Y3R1cmVzID0gdS5nZXRCeUlkU2VsZkxpc3Quc3RydWN0dXJlTGlzdDsKKyAgICAgICAgcG9seW1v
cnBoaWNTdHJ1Y3R1cmVzLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjaywgdS5nZXRCeUlkU2VsZkxp
c3QubGlzdFNpemUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2UgYWNjZXNzX2dl
dF9ieV9pZF9wcm90b19saXN0OiB7CisgICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJl
TGlzdCogcG9seW1vcnBoaWNTdHJ1Y3R1cmVzID0gdS5nZXRCeUlkUHJvdG9MaXN0LnN0cnVjdHVy
ZUxpc3Q7CisgICAgICAgIHBvbHltb3JwaGljU3RydWN0dXJlcy0+bWFya0FnZ3JlZ2F0ZShtYXJr
U3RhY2ssIHUuZ2V0QnlJZFByb3RvTGlzdC5saXN0U2l6ZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3RyYW5zaXRpb246CisgICAgICAgIHUucHV0
QnlJZFRyYW5zaXRpb24ucHJldmlvdXNTdHJ1Y3R1cmUtPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNr
KTsKKyAgICAgICAgdS5wdXRCeUlkVHJhbnNpdGlvbi5zdHJ1Y3R1cmUtPm1hcmtBZ2dyZWdhdGUo
bWFya1N0YWNrKTsKKyAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmdS5wdXRCeUlkVHJhbnNpdGlv
bi5jaGFpbik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVw
bGFjZToKKyAgICAgICAgdS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5tYXJr
QWdncmVnYXRlKG1hcmtTdGFjayk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIGFjY2Vzc19n
ZXRfYnlfaWQ6CisgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkOgorICAgIGNhc2UgYWNjZXNzX2dl
dF9ieV9pZF9nZW5lcmljOgorICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF9nZW5lcmljOgorICAg
IGNhc2UgYWNjZXNzX2dldF9hcnJheV9sZW5ndGg6CisgICAgY2FzZSBhY2Nlc3NfZ2V0X3N0cmlu
Z19sZW5ndGg6CisgICAgICAgIC8vIFRoZXNlIGluc3RydWN0aW9ucyBkb24ndCByZWYgdGhlaXIg
U3RydWN0dXJlcy4KKyAgICAgICAgcmV0dXJuOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
SW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
LmgKaW5kZXggOGUyYzQ4OWFhOTMwMjMxMzliOWFmOTZkYWU4ZTU2NWRlY2YyMjRmZS4uNjcwMmRj
ZWNkNDk3OWUzNTY1MjZkODU5OGM4NDM3Y2FlNDQ4MDY1YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKQEAgLTc3LDE1ICs3Nywx
NCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHByb3RvdHlwZVN0cnVjdHVyZS0+cmVm
KCk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGluaXRHZXRCeUlkQ2hhaW4oU3RydWN0dXJl
KiBiYXNlT2JqZWN0U3RydWN0dXJlLCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4pCisgICAgICAgIHZv
aWQgaW5pdEdldEJ5SWRDaGFpbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3du
ZXIsIFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWlu
KQogICAgICAgICB7CiAgICAgICAgICAgICBhY2Nlc3NUeXBlID0gYWNjZXNzX2dldF9ieV9pZF9j
aGFpbjsKIAogICAgICAgICAgICAgdS5nZXRCeUlkQ2hhaW4uYmFzZU9iamVjdFN0cnVjdHVyZSA9
IGJhc2VPYmplY3RTdHJ1Y3R1cmU7CiAgICAgICAgICAgICBiYXNlT2JqZWN0U3RydWN0dXJlLT5y
ZWYoKTsKIAotICAgICAgICAgICAgdS5nZXRCeUlkQ2hhaW4uY2hhaW4gPSBjaGFpbjsKLSAgICAg
ICAgICAgIGNoYWluLT5yZWYoKTsKKyAgICAgICAgICAgIHUuZ2V0QnlJZENoYWluLmNoYWluLnNl
dChnbG9iYWxEYXRhLCBvd25lciwgY2hhaW4pOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBp
bml0R2V0QnlJZFNlbGZMaXN0KFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogc3RydWN0
dXJlTGlzdCwgaW50IGxpc3RTaXplKQpAQCAtMTA2LDcgKzEwNSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIC8vIFB1dEJ5SWQqCiAKLSAgICAgICAgdm9pZCBpbml0UHV0QnlJZFRyYW5z
aXRpb24oU3RydWN0dXJlKiBwcmV2aW91c1N0cnVjdHVyZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFN0cnVjdHVyZUNoYWluKiBjaGFpbikKKyAgICAgICAgdm9pZCBpbml0UHV0QnlJZFRyYW5zaXRp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBTdHJ1Y3R1cmUqIHBy
ZXZpb3VzU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNo
YWluKQogICAgICAgICB7CiAgICAgICAgICAgICBhY2Nlc3NUeXBlID0gYWNjZXNzX3B1dF9ieV9p
ZF90cmFuc2l0aW9uOwogCkBAIC0xMTYsOCArMTE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICB1LnB1dEJ5SWRUcmFuc2l0aW9uLnN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKICAgICAg
ICAgICAgIHN0cnVjdHVyZS0+cmVmKCk7CiAKLSAgICAgICAgICAgIHUucHV0QnlJZFRyYW5zaXRp
b24uY2hhaW4gPSBjaGFpbjsKLSAgICAgICAgICAgIGNoYWluLT5yZWYoKTsKKyAgICAgICAgICAg
IHUucHV0QnlJZFRyYW5zaXRpb24uY2hhaW4uc2V0KGdsb2JhbERhdGEsIG93bmVyLCBjaGFpbik7
CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGluaXRQdXRCeUlkUmVwbGFjZShTdHJ1Y3R1cmUq
IGJhc2VPYmplY3RTdHJ1Y3R1cmUpCkBAIC0xMjksNiArMTI3LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGRlcmVmKCk7CisgICAgICAgIHZvaWQgbWFya0Fn
Z3JlZ2F0ZShNYXJrU3RhY2smKTsKIAogICAgICAgICBib29sIHNlZW5PbmNlKCkKICAgICAgICAg
ewpAQCAtMTUzLDcgKzE1Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgfSBnZXRC
eUlkUHJvdG87CiAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgIFN0cnVjdHVy
ZSogYmFzZU9iamVjdFN0cnVjdHVyZTsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiog
Y2hhaW47CisgICAgICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmVDaGFpbj4g
Y2hhaW47CiAgICAgICAgICAgICB9IGdldEJ5SWRDaGFpbjsKICAgICAgICAgICAgIHN0cnVjdCB7
CiAgICAgICAgICAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBzdHJ1Y3R1
cmVMaXN0OwpAQCAtMTY2LDcgKzE2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
c3RydWN0IHsKICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzU3RydWN0dXJlOwog
ICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOwotICAgICAgICAgICAgICAgIFN0
cnVjdHVyZUNoYWluKiBjaGFpbjsKKyAgICAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0
cnVjdHVyZUNoYWluPiBjaGFpbjsKICAgICAgICAgICAgIH0gcHV0QnlJZFRyYW5zaXRpb247CiAg
ICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYmFzZU9iamVj
dFN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggYjVkZjUzZjJhYTE4Y2I3MjFjNTc3NzQ1
YTgyNmE5MzE5NGEwNzE4ZS4uNWFmMzQyMDczN2FjNTY2ODdkNWI0ZTBhY2IyMzIwYmUyZTBlNjMx
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTkyNSw3ICs5MjUsNyBAQCBQYXNzUmVmUHRyPExhYmVs
PiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQ2FsbChSZWdpc3RlcklE
KiBjb25kLAogCiAgICAgZW1pdE9wY29kZShvcF9qbmVxX3B0cik7CiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGNvbmQtPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX3Nj
b3BlQ2hhaW4tPmdsb2JhbE9iamVjdC0+Y2FsbEZ1bmN0aW9uKCkpOworICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChJbnN0cnVjdGlvbigqbV9nbG9iYWxEYXRhLCBtX2NvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCksIG1fc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LT5jYWxsRnVuY3Rpb24oKSkp
OwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0YXJnZXQtPmJpbmQoYmVnaW4sIGluc3RydWN0
aW9ucygpLnNpemUoKSkpOwogICAgIHJldHVybiB0YXJnZXQ7CiB9CkBAIC05MzYsNyArOTM2LDcg
QEAgUGFzc1JlZlB0cjxMYWJlbD4gQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZOb3RGdW5j
dGlvbkFwcGx5KFJlZ2lzdGVySUQqIGNvbmQKIAogICAgIGVtaXRPcGNvZGUob3Bfam5lcV9wdHIp
OwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjb25kLT5pbmRleCgpKTsKLSAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQobV9zY29wZUNoYWluLT5nbG9iYWxPYmplY3QtPmFwcGx5RnVuY3Rpb24o
KSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKEluc3RydWN0aW9uKCptX2dsb2JhbERhdGEs
IG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgbV9zY29wZUNoYWluLT5nbG9iYWxPYmpl
Y3QtPmFwcGx5RnVuY3Rpb24oKSkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0YXJnZXQt
PmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygpLnNpemUoKSkpOwogICAgIHJldHVybiB0YXJnZXQ7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMv
SGFuZGxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxl
LmgKaW5kZXggZDRlMzhjMGNmZThiM2EzNjZhODkxY2RjMGQyZjBmZWFhMjg1YWYzOC4uYzFkOGEz
NWUzMDNlOGQ4MTUwNDgwNzZlYjU4ODc4YjdjZjEyYzVlZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGUuaApAQCAtMTA0LDEwICsxMDQsMzUg
QEAgdGVtcGxhdGUgPD4gc3RydWN0IEhhbmRsZVR5cGVzPFVua25vd24+IHsKIH07CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBCYXNlLCB0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFuZGxlQ29udmVydGVyIHsK
LSAgICBUKiBvcGVyYXRvci0+KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QmFzZSo+KHRoaXMpLT5n
ZXQoKTsgfQotICAgIGNvbnN0IFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCBCYXNlKj4odGhpcyktPmdldCgpOyB9Ci0gICAgVCogb3BlcmF0b3IqKCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8QmFzZSo+KHRoaXMpLT5nZXQoKTsgfQotICAgIGNvbnN0IFQqIG9w
ZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+
Z2V0KCk7IH0KKyAgICBUKiBvcGVyYXRvci0+KCkKKyAgICB7CisjaWYgRU5BQkxFKEpTQ19aT01C
SUVTKQorICAgICAgICBBU1NFUlQoIXN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+Z2V0
KCkgfHwgIXN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+Z2V0KCktPmlzWm9tYmllKCkp
OworI2VuZGlmCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxCYXNlKj4odGhpcyktPmdldCgp
OworICAgIH0KKyAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QKKyAgICB7CisjaWYgRU5B
QkxFKEpTQ19aT01CSUVTKQorICAgICAgICBBU1NFUlQoIXN0YXRpY19jYXN0PGNvbnN0IEJhc2Uq
Pih0aGlzKS0+Z2V0KCkgfHwgIXN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+Z2V0KCkt
PmlzWm9tYmllKCkpOworI2VuZGlmCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBC
YXNlKj4odGhpcyktPmdldCgpOworICAgIH0KKworICAgIFQqIG9wZXJhdG9yKigpCisgICAgewor
I2lmIEVOQUJMRShKU0NfWk9NQklFUykKKyAgICAgICAgQVNTRVJUKCFzdGF0aWNfY2FzdDxjb25z
dCBCYXNlKj4odGhpcyktPmdldCgpIHx8ICFzdGF0aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcykt
PmdldCgpLT5pc1pvbWJpZSgpKTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
QmFzZSo+KHRoaXMpLT5nZXQoKTsKKyAgICB9CisgICAgY29uc3QgVCogb3BlcmF0b3IqKCkgY29u
c3QKKyAgICB7CisjaWYgRU5BQkxFKEpTQ19aT01CSUVTKQorICAgICAgICBBU1NFUlQoIXN0YXRp
Y19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+Z2V0KCkgfHwgIXN0YXRpY19jYXN0PGNvbnN0IEJh
c2UqPih0aGlzKS0+Z2V0KCktPmlzWm9tYmllKCkpOworI2VuZGlmCisgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcyktPmdldCgpOworICAgIH0KIH07CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBCYXNlPiBzdHJ1Y3QgSGFuZGxlQ29udmVydGVyPEJhc2UsIFVua25vd24+
IHsKQEAgLTExOCw3ICsxNDMsMTMgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEJhc2U+IHN0cnVjdCBI
YW5kbGVDb252ZXJ0ZXI8QmFzZSwgVW5rbm93bj4gewogICAgIGJvb2wgaXNVbmRlZmluZWRPck51
bGwoKSBjb25zdCB7IHJldHVybiBqc1ZhbHVlKCkuaXNVbmRlZmluZWRPck51bGwoKTsgfQogCiBw
cml2YXRlOgotICAgIEpTVmFsdWUganNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IEJhc2UqPih0aGlzKS0+Z2V0KCk7IH0KKyAgICBKU1ZhbHVlIGpzVmFsdWUoKSBjb25z
dAorICAgIHsKKyNpZiBFTkFCTEUoSlNDX1pPTUJJRVMpCisgICAgICAgIEFTU0VSVCghc3RhdGlj
X2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5nZXQoKSB8fCAhc3RhdGljX2Nhc3Q8Y29uc3QgQmFz
ZSo+KHRoaXMpLT5nZXQoKS5pc1pvbWJpZSgpKTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5nZXQoKTsKKyAgICB9CiB9OwogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gY2xhc3MgSGFuZGxlIDogcHVibGljIEhhbmRsZUJhc2UsIHB1YmxpYyBI
YW5kbGVDb252ZXJ0ZXI8SGFuZGxlPFQ+LCBUPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCAwODI2ZjVkYmZjNTljY2FjNGFh
ZmEzYjFkZDQ4NWQ2ZDUxZTg5ZTJhLi42MDIxMjc5NmFiMjM4YjhiOGFjYjk0YTYzNGZkNzA1ZGRh
OGM2OGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAKQEAgLTM1MzcsMTAgKzM1MzcsOSBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgog
ICAgICAgICAgICB0byBwdHIsIHVzaW5nIHBvaW50ZXIgZXF1YWxpdHkuCiAgICAgICAgICAqLwog
ICAgICAgICBpbnQgc3JjID0gdlBDWzFdLnUub3BlcmFuZDsKLSAgICAgICAgSlNWYWx1ZSBwdHIg
PSBKU1ZhbHVlKHZQQ1syXS51LmpzQ2VsbCk7CiAgICAgICAgIGludCB0YXJnZXQgPSB2UENbM10u
dS5vcGVyYW5kOwogICAgICAgICBKU1ZhbHVlIHNyY1ZhbHVlID0gY2FsbEZyYW1lLT5yKHNyYyku
anNWYWx1ZSgpOwotICAgICAgICBpZiAoc3JjVmFsdWUgIT0gcHRyKSB7CisgICAgICAgIGlmIChz
cmNWYWx1ZSAhPSB2UENbMl0udS5qc0NlbGwuZ2V0KCkpIHsKICAgICAgICAgICAgIHZQQyArPSB0
YXJnZXQ7CiAgICAgICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDk2NWQ2ZDkyYmNhZjI5ZTU3
YzE4OThhM2FkZjAzM2U2OTAyMTUyMmIuLmRhY2VlYTZjYTY4ZTc1N2UxZjY3ZDQxNTkxMmZjNzEy
NDIyNzRmYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAt
NzYyLDcgKzc2Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX2puZXFfbnVsbChJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9wdHIoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICB1bnNpZ25lZCBzcmMgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIEpTQ2VsbCogcHRyID0gY3VycmVudEluc3RydWN0
aW9uWzJdLnUuanNDZWxsOworICAgIEpTQ2VsbCogcHRyID0gY3VycmVudEluc3RydWN0aW9uWzJd
LnUuanNDZWxsLmdldCgpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9wZXJhbmQ7CiAgICAgCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmMsIHJl
Z1QwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApp
bmRleCA5YzNhOTIzMjZmNWQxMTEwYjcxZmFmYjNjOGU2NDMzY2E5MTRiZTgzLi5iYzBiMmNiOTRk
NTE1ZjI2M2Q0MGViYTdlNDM4ZTJhNzFkMjU2Y2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC05NzksNyArOTc5LDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3Bfam5lcV9udWxsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB2b2lk
IEpJVDo6ZW1pdF9vcF9qbmVxX3B0cihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIHVuc2lnbmVkIHNyYyA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0g
ICAgSlNDZWxsKiBwdHIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5qc0NlbGw7CisgICAgSlND
ZWxsKiBwdHIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5qc0NlbGwuZ2V0KCk7CiAgICAgdW5z
aWduZWQgdGFyZ2V0ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAogICAgIGVt
aXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggMGY0ZTE3ODdhYmJlMWJiZmQ0MTdkMjYzNmFl
M2YxYTdjOGIyYjM2Zi4uNjhmOGRkYTFhNTdkNWZlZWIxMmE3MzhkZTYyZDdlZDBkY2NiNjlmNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAK
QEAgLTk3OSw4ICs5NzksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW5M
aXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaQogCiAgICAgLy8gVHJh
Y2sgdGhlIHN0dWIgd2UgaGF2ZSBjcmVhdGVkIHNvIHRoYXQgaXQgd2lsbCBiZSBkZWxldGVkIGxh
dGVyLgogICAgIHN0cnVjdHVyZS0+cmVmKCk7Ci0gICAgY2hhaW4tPnJlZigpOwotICAgIHByb3Rv
dHlwZVN0cnVjdHVyZXMtPmxpc3RbY3VycmVudEluZGV4XS5zZXQoZW50cnlMYWJlbCwgc3RydWN0
dXJlLCBjaGFpbik7CisgICAgcHJvdG90eXBlU3RydWN0dXJlcy0+bGlzdFtjdXJyZW50SW5kZXhd
LnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLCBlbnRyeUxhYmVsLCBzdHJ1Y3R1cmUsIGNoYWluKTsKIAogICAgIC8vIEZpbmFsbHkgcGF0
Y2ggdGhlIGp1bXAgdG8gc2xvdyBjYXNlIGJhY2sgaW4gdGhlIGhvdCBwYXRoIHRvIGp1bXAgaGVy
ZSBpbnN0ZWFkLgogICAgIENvZGVMb2NhdGlvbkp1bXAganVtcExvY2F0aW9uID0gc3R1YkluZm8t
PmhvdFBhdGhCZWdpbi5qdW1wQXRPZmZzZXQocGF0Y2hPZmZzZXRHZXRCeUlkQnJhbmNoVG9TbG93
Q2FzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2VzczMyXzY0LmNwcAppbmRleCAxZWVmZTNkN2FhOWNlM2VhZDRkODY0M2JlZDkxMjNmY2ZmMTNh
MDI1Li4yYTQ3ZTVjYWZhNTkwMTZhZDc4ZGU2ZjE3NDgzOGU0NjZhY2Q0OGMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAK
QEAgLTEwMDcsOCArMTAwNyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFp
bkxpc3QoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpCiAgICAgCiAgICAg
Ly8gVHJhY2sgdGhlIHN0dWIgd2UgaGF2ZSBjcmVhdGVkIHNvIHRoYXQgaXQgd2lsbCBiZSBkZWxl
dGVkIGxhdGVyLgogICAgIHN0cnVjdHVyZS0+cmVmKCk7Ci0gICAgY2hhaW4tPnJlZigpOwotICAg
IHByb3RvdHlwZVN0cnVjdHVyZXMtPmxpc3RbY3VycmVudEluZGV4XS5zZXQoZW50cnlMYWJlbCwg
c3RydWN0dXJlLCBjaGFpbik7CisgICAgcHJvdG90eXBlU3RydWN0dXJlcy0+bGlzdFtjdXJyZW50
SW5kZXhdLnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLCBlbnRyeUxhYmVsLCBzdHJ1Y3R1cmUsIGNoYWluKTsKICAgICAKICAgICAvLyBG
aW5hbGx5IHBhdGNoIHRoZSBqdW1wIHRvIHNsb3cgY2FzZSBiYWNrIGluIHRoZSBob3QgcGF0aCB0
byBqdW1wIGhlcmUgaW5zdGVhZC4KICAgICBDb2RlTG9jYXRpb25KdW1wIGp1bXBMb2NhdGlvbiA9
IHN0dWJJbmZvLT5ob3RQYXRoQmVnaW4uanVtcEF0T2Zmc2V0KHBhdGNoT2Zmc2V0R2V0QnlJZEJy
YW5jaFRvU2xvd0Nhc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHVicy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAppbmRl
eCBhMzhmMDFlMjIzMTVkNzVmN2EwYjU4ZmM1MGUzNTFhNzEwZjk2MmViLi5jYWM5ZjAyNTE5NDc2
NDQzNjA1ODMwMjQ1ODI3ODkyMWZkNWQ3MGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN0dWJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmNwcApAQCAtNzcxLDcgKzc3MSw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEpJVFRodW5r
czo6dHJ5Q2FjaGVQdXRCeUlEKENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvCiAg
ICAgICAgIG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGNhbGxGcmFtZSwgYmFzZUNlbGwpOwogCiAg
ICAgICAgIFN0cnVjdHVyZUNoYWluKiBwcm90b3R5cGVDaGFpbiA9IHN0cnVjdHVyZS0+cHJvdG90
eXBlQ2hhaW4oY2FsbEZyYW1lKTsKLSAgICAgICAgc3R1YkluZm8tPmluaXRQdXRCeUlkVHJhbnNp
dGlvbihzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSwgc3RydWN0dXJlLCBwcm90b3R5cGVDaGFpbik7
CisgICAgICAgIHN0dWJJbmZvLT5pbml0UHV0QnlJZFRyYW5zaXRpb24oY2FsbEZyYW1lLT5nbG9i
YWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZS0+cHJldmlv
dXNJRCgpLCBzdHJ1Y3R1cmUsIHByb3RvdHlwZUNoYWluKTsKICAgICAgICAgSklUOjpjb21waWxl
UHV0QnlJZFRyYW5zaXRpb24oY2FsbEZyYW1lLT5zY29wZUNoYWluKCktPmdsb2JhbERhdGEsIGNv
ZGVCbG9jaywgc3R1YkluZm8sIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLCBzdHJ1Y3R1cmUsIHNs
b3QuY2FjaGVkT2Zmc2V0KCksIHByb3RvdHlwZUNoYWluLCByZXR1cm5BZGRyZXNzLCBkaXJlY3Qp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtODY2LDcgKzg2Niw3IEBAIE5FVkVSX0lOTElO
RSB2b2lkIEpJVFRodW5rczo6dHJ5Q2FjaGVHZXRCeUlEKENhbGxGcmFtZSogY2FsbEZyYW1lLCBD
b2RlQmxvY2sqIGNvCiAgICAgfQogCiAgICAgU3RydWN0dXJlQ2hhaW4qIHByb3RvdHlwZUNoYWlu
ID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihjYWxsRnJhbWUpOwotICAgIHN0dWJJbmZvLT5p
bml0R2V0QnlJZENoYWluKHN0cnVjdHVyZSwgcHJvdG90eXBlQ2hhaW4pOworICAgIHN0dWJJbmZv
LT5pbml0R2V0QnlJZENoYWluKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93
bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUsIHByb3RvdHlwZUNoYWluKTsKICAgICBKSVQ6OmNv
bXBpbGVHZXRCeUlkQ2hhaW4oY2FsbEZyYW1lLT5zY29wZUNoYWluKCktPmdsb2JhbERhdGEsIGNh
bGxGcmFtZSwgY29kZUJsb2NrLCBzdHViSW5mbywgc3RydWN0dXJlLCBwcm90b3R5cGVDaGFpbiwg
Y291bnQsIHByb3BlcnR5TmFtZSwgc2xvdCwgb2Zmc2V0LCByZXR1cm5BZGRyZXNzKTsKIH0KIApA
QCAtMTU1Myw3ICsxNTUzLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUs
IG9wX2dldF9ieV9pZF9zZWxmX2ZhaWwpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogfQogCi1zdGF0aWMgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBnZXRQb2x5
bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTbG90KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgaW50JiBsaXN0SW5kZXgpCitzdGF0aWMgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0
KiBnZXRQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTbG90KEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXIsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgaW50JiBsaXN0SW5kZXgpCiB7CiAgICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVM
aXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0ID0gMDsKICAgICBsaXN0SW5kZXggPSAxOwpAQCAt
MTU2NSw3ICsxNTY1LDcgQEAgc3RhdGljIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCog
Z2V0UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U2xvdChTdHIKICAgICAgICAgc3R1Yklu
Zm8tPmluaXRHZXRCeUlkUHJvdG9MaXN0KHByb3RvdHlwZVN0cnVjdHVyZUxpc3QsIDIpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfY2hhaW46Ci0gICAgICAgIHBy
b3RvdHlwZVN0cnVjdHVyZUxpc3QgPSBuZXcgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0
KHN0dWJJbmZvLT5zdHViUm91dGluZSwgc3R1YkluZm8tPnUuZ2V0QnlJZENoYWluLmJhc2VPYmpl
Y3RTdHJ1Y3R1cmUsIHN0dWJJbmZvLT51LmdldEJ5SWRDaGFpbi5jaGFpbik7CisgICAgICAgIHBy
b3RvdHlwZVN0cnVjdHVyZUxpc3QgPSBuZXcgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0
KGdsb2JhbERhdGEsIG93bmVyLCBzdHViSW5mby0+c3R1YlJvdXRpbmUsIHN0dWJJbmZvLT51Lmdl
dEJ5SWRDaGFpbi5iYXNlT2JqZWN0U3RydWN0dXJlLCBzdHViSW5mby0+dS5nZXRCeUlkQ2hhaW4u
Y2hhaW4uZ2V0KCkpOwogICAgICAgICBzdHViSW5mby0+c3R1YlJvdXRpbmUgPSBDb2RlTG9jYXRp
b25MYWJlbCgpOwogICAgICAgICBzdHViSW5mby0+aW5pdEdldEJ5SWRQcm90b0xpc3QocHJvdG90
eXBlU3RydWN0dXJlTGlzdCwgMik7CiAgICAgICAgIGJyZWFrOwpAQCAtMTY1Myw3ICsxNjUzLDcg
QEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2dldF9ieV9pZF9wcm90
b19saXN0KQogICAgICAgICB9CiAKICAgICAgICAgaW50IGxpc3RJbmRleDsKLSAgICAgICAgUG9s
eW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1cmVMaXN0ID0gZ2V0
UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U2xvdChzdHViSW5mbywgbGlzdEluZGV4KTsK
KyAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBwcm90b3R5cGVTdHJ1Y3R1
cmVMaXN0ID0gZ2V0UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U2xvdChjYWxsRnJhbWUt
Pmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3R1YkluZm8sIGxp
c3RJbmRleCk7CiAgICAgICAgIGlmIChsaXN0SW5kZXggPCBQT0xZTU9SUEhJQ19MSVNUX0NBQ0hF
X1NJWkUpIHsKICAgICAgICAgICAgIEpJVDo6Y29tcGlsZUdldEJ5SWRQcm90b0xpc3QoY2FsbEZy
YW1lLT5zY29wZUNoYWluKCktPmdsb2JhbERhdGEsIGNhbGxGcmFtZSwgY29kZUJsb2NrLCBzdHVi
SW5mbywgcHJvdG90eXBlU3RydWN0dXJlTGlzdCwgbGlzdEluZGV4LCBzdHJ1Y3R1cmUsIHNsb3RC
YXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBzbG90LCBvZmZzZXQpOwogCkBA
IC0xNjYzLDcgKzE2NjMsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwg
b3BfZ2V0X2J5X2lkX3Byb3RvX2xpc3QpCiAgICAgfSBlbHNlIGlmIChzaXplX3QgY291bnQgPSBu
b3JtYWxpemVQcm90b3R5cGVDaGFpbihjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgc2xvdC5zbG90QmFz
ZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCkpIHsKICAgICAgICAgQVNTRVJUKCFiYXNlVmFsdWUu
YXNDZWxsKCktPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSk7CiAgICAgICAgIGludCBsaXN0
SW5kZXg7Ci0gICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogcHJvdG90eXBl
U3RydWN0dXJlTGlzdCA9IGdldFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdFNsb3Qoc3R1
YkluZm8sIGxpc3RJbmRleCk7CisgICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlz
dCogcHJvdG90eXBlU3RydWN0dXJlTGlzdCA9IGdldFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJl
TGlzdFNsb3QoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRh
YmxlKCksIHN0dWJJbmZvLCBsaXN0SW5kZXgpOwogICAgICAgICAKICAgICAgICAgaWYgKGxpc3RJ
bmRleCA8IFBPTFlNT1JQSElDX0xJU1RfQ0FDSEVfU0laRSkgewogICAgICAgICAgICAgU3RydWN0
dXJlQ2hhaW4qIHByb3RvQ2hhaW4gPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGNhbGxGcmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDYyY2VlMzc4ZDk3
ZWM3MThlNWU2Yjk4ZGE2YWE3NDc2OWY5ZjQxMTguLmFiMGUyMzczNTE4ZmQ4YzY4YzE4NjAwZmZm
Yjc5OTBjZjc2ODRiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCkBA
IC02OCw2ICs2OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgTWFy
a2VkU3BhY2U7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlOworICAgICAgICBmcmllbmQgY2xhc3MgU3RydWN0dXJl
Q2hhaW47CiAKICAgICBwcml2YXRlOgogICAgICAgICBleHBsaWNpdCBKU0NlbGwoU3RydWN0dXJl
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcApp
bmRleCAxZDVmY2YzY2M0MDcwZDQyYzRiNmU1YjgzZTAzZjU0ZDU1NzUxODBjLi5lZTE4MjliMzFh
ZGMzNWQ5NTBiMjU1OGFjNGU4ZTZjNGMyY2JjNDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKQEAgLTE4NCw2ICsxODQsNyBAQCBKU0dsb2Jh
bERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSBnbG9iYWxEYXRhVHlwZSwgVGhyZWFk
U3RhY2tUeXBlIHRocmVhZAogICAgIHByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlID0gUHJvZ3Jh
bUV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywganNOdWxsKCkpOwogICAgIGZ1bmN0
aW9uRXhlY3V0YWJsZVN0cnVjdHVyZSA9IEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCBqc051bGwoKSk7CiAgICAgZHVtbXlNYXJrYWJsZUNlbGxTdHJ1Y3R1cmUgPSBK
U0NlbGw6OmNyZWF0ZUR1bW15U3RydWN0dXJlKCp0aGlzKTsKKyAgICBzdHJ1Y3R1cmVDaGFpblN0
cnVjdHVyZSA9IFN0cnVjdHVyZUNoYWluOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIGpzTnVsbCgp
KTsKIAogICAgIGludGVycHJldGVyID0gbmV3IEludGVycHJldGVyKCp0aGlzKTsKICAgICBpZiAo
Z2xvYmFsRGF0YVR5cGUgPT0gRGVmYXVsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxEYXRhLmgKaW5kZXggMjhiZGFkZTEyMTFjYmFiZjdjZjExODg1YTFlZDhkY2Uy
NjA2NzM4MC4uMzRlYTc1ZDYxMjFiNmQzNTBjOGUzMWEwNGZiOGUzMzQ4M2E5MDEyYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKQEAgLTE2MSw2ICsx
NjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gcHJvZ3Jh
bUV4ZWN1dGFibGVTdHJ1Y3R1cmU7CiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGZ1bmN0aW9u
RXhlY3V0YWJsZVN0cnVjdHVyZTsKICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gZHVtbXlNYXJr
YWJsZUNlbGxTdHJ1Y3R1cmU7CisgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZUNo
YWluU3RydWN0dXJlOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIHN0b3JlVlB0cnMoKTsKICAgICAg
ICAgc3RhdGljIEpTX0VYUE9SVERBVEEgdm9pZCoganNBcnJheVZQdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYzliMDk4NTM5
OWEzYjUwODhmMzQyYzc0MDljNDY4MDNmM2VkNDAxZi4uNDExMDhjNDZlOTY1MTY3YjAwYjhkYWEy
MGFlN2NmMjYxM2YxYTAxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODYsOCArODYsOCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gc3RhdGljIGlubGluZSB2b2lkIG1hcmtJZk5lZWRlZChNYXJrU3RhY2smIG1hcmtTdGFjaywg
V3JpdAogCiBzdGF0aWMgaW5saW5lIHZvaWQgbWFya0lmTmVlZGVkKE1hcmtTdGFjayYgbWFya1N0
YWNrLCBjb25zdCBSZWZQdHI8U3RydWN0dXJlPiYgcykKIHsKLSAgICBpZiAocyAmJiBzLT5zdG9y
ZWRQcm90b3R5cGUoKSkKLSAgICAgICAgbWFya1N0YWNrLmFwcGVuZChzLT5zdG9yZWRQcm90b3R5
cGVTbG90KCkpOworICAgIGlmIChzKQorICAgICAgICBzLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFj
ayk7CiB9CiAKIEpTR2xvYmFsT2JqZWN0Ojp+SlNHbG9iYWxPYmplY3QoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggNWUwMWViYmY4MGI2
Mzc5NjNjOTUzYzFiZWRjZGZhMjA0YzMzZjEyOS4uMDBlZjVjYjhiYTgwZDljM2QzZTBiOGVhZWM5
MjNmY2Q3Y2QyMDA2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiSlNXZWFrT2JqZWN0TWFw
UmVmSW50ZXJuYWwuaCIKICNpbmNsdWRlICJOdW1iZXJQcm90b3R5cGUuaCIKICNpbmNsdWRlICJT
dHJpbmdQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
YW5kb21OdW1iZXIuaD4KQEAgLTM2Miw3ICszNjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgLy8gV2UgY2FjaGUgb3VyIHByb3RvdHlwZSBjaGFpbiBzbyBvdXIgY2xpZW50cyBjYW4gc2hh
cmUgaXQuCiAgICAgICAgIGlmICghaXNWYWxpZChleGVjLCBtX2NhY2hlZFByb3RvdHlwZUNoYWlu
LmdldCgpKSkgewogICAgICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBwcm90b3R5cGVGb3JM
b29rdXAoZXhlYyk7Ci0gICAgICAgICAgICBtX2NhY2hlZFByb3RvdHlwZUNoYWluID0gU3RydWN0
dXJlQ2hhaW46OmNyZWF0ZShwcm90b3R5cGUuaXNOdWxsKCkgPyAwIDogYXNPYmplY3QocHJvdG90
eXBlKS0+c3RydWN0dXJlKCkpOworICAgICAgICAgICAgbV9jYWNoZWRQcm90b3R5cGVDaGFpbi5z
ZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgcHJvdG90eXBlLmlzTnVsbCgpID8gMCA6IGFzT2JqZWN0KHByb3RvdHlwZSktPnN0
cnVjdHVyZSgpKSwgMCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fY2FjaGVkUHJvdG90
eXBlQ2hhaW4uZ2V0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmgKaW5kZXggZmUwMWNiOTkyZDYzMDJhNGU4NjM5MjYwMDgxODExNjg5MjRlMGVmZS4uYmI4
MjVhZmU4ZGIyNDE2Yzg0YzE2YTRlY2Y3NDZlNDdkZTc1OWI0NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC02NDUsNyArNjQ1LDcgQEAgaW5saW5lIGJvb2wg
SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29u
c3QgSWRlbnRpZmkKICAgICBpZiAoIWlzRXh0ZW5zaWJsZSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFBy
b3BlcnR5VHJhbnNpdGlvbihtX3N0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBz
cGVjaWZpY0Z1bmN0aW9uLCBvZmZzZXQpOworICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVy
ZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fc3RydWN0
dXJlLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCk7
CiAKICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdl
Q2FwYWNpdHkoKSkKICAgICAgICAgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoY3VycmVudENhcGFj
aXR5LCBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwpAQCAtODE1LDcgKzgx
NSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU09iamVjdDo6bWFya0NoaWxkcmVuRGlyZWN0KE1h
cmtTdGFjayYgbWFya1N0YWNrKQogewogICAgIEpTQ2VsbDo6bWFya0NoaWxkcmVuKG1hcmtTdGFj
ayk7CiAKLSAgICBtYXJrU3RhY2suYXBwZW5kKG1fc3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGVT
bG90KCkpOworICAgIG1fc3RydWN0dXJlLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7CiAgICAg
UHJvcGVydHlTdG9yYWdlIHN0b3JhZ2UgPSBwcm9wZXJ0eVN0b3JhZ2UoKTsKICAgICBzaXplX3Qg
c3RvcmFnZVNpemUgPSBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpOwogICAgIG1h
cmtTdGFjay5hcHBlbmRWYWx1ZXMoc3RvcmFnZSwgc3RvcmFnZVNpemUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNw
cAppbmRleCAwZDc1OWNmYzE1YzlkMmJlOWIwMGM4NWNhZDY0YjFlMjk2ODA1ZTBhLi42ZjMxZjk5
OWQ3MDk1ZGNjNWNmNmQzZDA2Y2MzMmQyODY4ZWIyOGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcApAQCAt
NzcsNyArNzcsNyBAQCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdAogICAgICAgICAgICAgcmV0dXJu
IGpzUHJvcGVydHlOYW1lSXRlcmF0b3I7CiAgICAgfQogCi0gICAganNQcm9wZXJ0eU5hbWVJdGVy
YXRvci0+c2V0Q2FjaGVkUHJvdG90eXBlQ2hhaW4oc3RydWN0dXJlQ2hhaW4pOworICAgIGpzUHJv
cGVydHlOYW1lSXRlcmF0b3ItPnNldENhY2hlZFByb3RvdHlwZUNoYWluKGV4ZWMtPmdsb2JhbERh
dGEoKSwgc3RydWN0dXJlQ2hhaW4pOwogICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPnNldENh
Y2hlZFN0cnVjdHVyZShvLT5zdHJ1Y3R1cmUoKSk7CiAgICAgby0+c3RydWN0dXJlKCktPnNldEVu
dW1lcmF0aW9uQ2FjaGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9y
KTsKICAgICByZXR1cm4ganNQcm9wZXJ0eU5hbWVJdGVyYXRvcjsKQEAgLTg2LDcgKzg2LDcgQEAg
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QKIEpTVmFsdWUgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6
Z2V0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIHNpemVfdCBpKQogewogICAgIEpT
VmFsdWUgaWRlbnRpZmllciA9IG1fanNTdHJpbmdzW2ldLmdldCgpOwotICAgIGlmIChtX2NhY2hl
ZFN0cnVjdHVyZSA9PSBiYXNlLT5zdHJ1Y3R1cmUoKSAmJiBtX2NhY2hlZFByb3RvdHlwZUNoYWlu
ID09IGJhc2UtPnN0cnVjdHVyZSgpLT5wcm90b3R5cGVDaGFpbihleGVjKSkKKyAgICBpZiAobV9j
YWNoZWRTdHJ1Y3R1cmUgPT0gYmFzZS0+c3RydWN0dXJlKCkgJiYgbV9jYWNoZWRQcm90b3R5cGVD
aGFpbi5nZXQoKSA9PSBiYXNlLT5zdHJ1Y3R1cmUoKS0+cHJvdG90eXBlQ2hhaW4oZXhlYykpCiAg
ICAgICAgIHJldHVybiBpZGVudGlmaWVyOwogCiAgICAgaWYgKCFiYXNlLT5oYXNQcm9wZXJ0eShl
eGVjLCBJZGVudGlmaWVyKGV4ZWMsIGFzU3RyaW5nKGlkZW50aWZpZXIpLT52YWx1ZShleGVjKSkp
KQpAQCAtOTcsNiArOTcsOCBAQCBKU1ZhbHVlIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmdldChF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBzaXplX3QgaSkKIHZvaWQgSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcjo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQogewogICAg
IG1hcmtTdGFjay5hcHBlbmRWYWx1ZXMobV9qc1N0cmluZ3MuZ2V0KCksIG1fanNTdHJpbmdzU2l6
ZSwgTWF5Q29udGFpbk51bGxWYWx1ZXMpOworICAgIGlmIChtX2NhY2hlZFByb3RvdHlwZUNoYWlu
KQorICAgICAgICBtYXJrU3RhY2suYXBwZW5kKCZtX2NhY2hlZFByb3RvdHlwZUNoYWluKTsKIH0K
IAogI2lmICFBU1NFUlRfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAppbmRleCA4YjAwN2RkNzY3ZjY0NjRi
MTQzODE5OWU0ZmE2MTg1ZTRkMzJhZDAxLi40OTkzOTZjYzU4NzgzODgzNzA2YjMyNGRiNjE0NDZj
MTI1ZTE3NjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCkBAIC03Myw3ICs3Myw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB9CiAgICAgICAgIFN0cnVjdHVyZSogY2FjaGVkU3RydWN0dXJlKCkgeyByZXR1
cm4gbV9jYWNoZWRTdHJ1Y3R1cmUuZ2V0KCk7IH0KIAotICAgICAgICB2b2lkIHNldENhY2hlZFBy
b3RvdHlwZUNoYWluKE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZUNoYWluPiBjYWNoZWRQcm90
b3R5cGVDaGFpbikgeyBtX2NhY2hlZFByb3RvdHlwZUNoYWluID0gY2FjaGVkUHJvdG90eXBlQ2hh
aW47IH0KKyAgICAgICAgdm9pZCBzZXRDYWNoZWRQcm90b3R5cGVDaGFpbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFN0cnVjdHVyZUNoYWluKiBjYWNoZWRQcm90b3R5cGVDaGFpbikgeyBtX2Nh
Y2hlZFByb3RvdHlwZUNoYWluLnNldChnbG9iYWxEYXRhLCB0aGlzLCBjYWNoZWRQcm90b3R5cGVD
aGFpbik7IH0KICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNhY2hlZFByb3RvdHlwZUNoYWluKCkg
eyByZXR1cm4gbV9jYWNoZWRQcm90b3R5cGVDaGFpbi5nZXQoKTsgfQogCiAgICAgcHJpdmF0ZToK
QEAgLTg0LDcgKzg0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAogICAgICAgICBSZWZQ
dHI8U3RydWN0dXJlPiBtX2NhY2hlZFN0cnVjdHVyZTsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVy
ZUNoYWluPiBtX2NhY2hlZFByb3RvdHlwZUNoYWluOworICAgICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlQ2hhaW4+IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW47CiAgICAgICAgIHVpbnQzMl90IG1f
bnVtQ2FjaGVhYmxlU2xvdHM7CiAgICAgICAgIHVpbnQzMl90IG1fanNTdHJpbmdzU2l6ZTsKICAg
ICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gbV9qc1N0cmluZ3M7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1pvbWJpZS5jcHAKaW5kZXggMjNjZjEzNWY5
MDgzNWEzN2I2NzEwZTVmYzAzNmIxY2M5YzRkODRhNC4uMzVlMTMxNTVhNzY5NzYzZGY0ZDhjYWFi
MzQ3NzUyY2Y5MzdkY2RhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNab21iaWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTWm9t
YmllLmNwcApAQCAtMzUsMTEgKzM1LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFz
c0luZm8gSlNab21iaWU6OnNfaW5mbyA9IHsgIlpvbWJpZSIsIDAsIDAsIDAgfTsKIAotU3RydWN0
dXJlKiBKU1pvbWJpZTo6bGVha2VkWm9tYmllU3RydWN0dXJlKCkgeworU3RydWN0dXJlKiBKU1pv
bWJpZTo6bGVha2VkWm9tYmllU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSAwOwogICAgIGlmICghc3RydWN0dXJl
KSB7CiAgICAgICAgIFN0cnVjdHVyZTo6c3RhcnRJZ25vcmluZ0xlYWtzKCk7Ci0gICAgICAgIHN0
cnVjdHVyZSA9IFN0cnVjdHVyZTo6Y3JlYXRlKGpzTnVsbCgpLCBUeXBlSW5mbyhVbnNwZWNpZmll
ZFR5cGUpLCAwLCAmc19pbmZvKS5sZWFrUmVmKCk7CisgICAgICAgIHN0cnVjdHVyZSA9IFN0cnVj
dHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGpzTnVsbCgpLCBUeXBlSW5mbyhVbnNwZWNpZmllZFR5
cGUpLCAwLCAmc19pbmZvKS5sZWFrUmVmKCk7CiAgICAgICAgIFN0cnVjdHVyZTo6c3RvcElnbm9y
aW5nTGVha3MoKTsKICAgICB9CiAgICAgcmV0dXJuIHN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTWm9tYmllLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1pvbWJpZS5oCmluZGV4IDE3OWZmNTMxMDBmZDNmZDIwYWIzYzE3NDcz
MjVkOWRkMTgwY2I3MjUuLmRmZmYxYTdhNjYzNzMxOGQwMDk5MDQ3NzkxYmQ4ZDc0MGMyMGIyMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTWm9tYmllLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNab21iaWUuaApAQCAtNDEsNyArNDEs
NyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIGlzWm9tYmllKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGxlYWtlZFpvbWJpZVN0cnVj
dHVyZSgpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGxlYWtlZFpvbWJpZVN0cnVjdHVyZShKU0ds
b2JhbERhdGEmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0IHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBp
c0FQSVZhbHVlV3JhcHBlcigpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBm
YWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya1N0
YWNrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrU3RhY2suaAppbmRleCBk
ZWU0ZjM0MjBjZTYxNTYwZDgxOTAwZmIwODQyMTRjNjRhNmQ1N2VhLi43MTMxOTE3ZjY1ZDRiNDZi
OTAzMWEwNjg4ZjQ3Zjk5NmRkMjM3ZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXJrU3RhY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXJrU3RhY2suaApAQCAtMjE1LDEyICsyMTUsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgTWFya1N0YWNrOjphcHBlbmQoRGVw
cmVjYXRlZFB0cjxUPiogc2xvdCkKICAgICB7Ci0gICAgICAgIGludGVybmFsQXBwZW5kKHNsb3Qt
PmdldCgpKTsKKyAgICAgICAgaW50ZXJuYWxBcHBlbmQoKnNsb3QtPnNsb3QoKSk7CiAgICAgfQog
ICAgIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBNYXJrU3RhY2s6OmFw
cGVuZChXcml0ZUJhcnJpZXJCYXNlPFQ+KiBzbG90KQogICAgIHsKLSAgICAgICAgaW50ZXJuYWxB
cHBlbmQoc2xvdC0+Z2V0KCkpOworICAgICAgICBpbnRlcm5hbEFwcGVuZCgqc2xvdC0+c2xvdCgp
KTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgTWFya1N0YWNrOjpkZXByZWNhdGVk
QXBwZW5kKEpTQ2VsbCoqIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWFya2VkQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWFya2VkQmxvY2suY3BwCmluZGV4IGNhZTcwMWZhMmNiMWJjZmUwN2ZmYjQwOTU3ZTQ4NGZjNDFl
N2M2YzcuLjM5OGQ0MzMyNWM2NGQyY2UyZGI0NGVlYjc1MmQyM2NmZmY5M2NmNzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZEJsb2NrLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrZWRCbG9jay5jcHAKQEAgLTc4LDcgKzc4
LDcgQEAgdm9pZCBNYXJrZWRCbG9jazo6c3dlZXAoKQogICAgICAgICBpZiAoIWNlbGwtPmlzWm9t
YmllKCkpIHsKICAgICAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogaW5mbyA9IGNlbGwtPmNsYXNz
SW5mbygpOwogICAgICAgICAgICAgY2VsbC0+fkpTQ2VsbCgpOwotICAgICAgICAgICAgbmV3IChj
ZWxsKSBKU1pvbWJpZShpbmZvLCBKU1pvbWJpZTo6bGVha2VkWm9tYmllU3RydWN0dXJlKCkpOwor
ICAgICAgICAgICAgbmV3IChjZWxsKSBKU1pvbWJpZShpbmZvLCBKU1pvbWJpZTo6bGVha2VkWm9t
YmllU3RydWN0dXJlKCptX2hlYXAtPmdsb2JhbERhdGEoKSkpOwogICAgICAgICAgICAgbV9tYXJr
cy5zZXQoaSk7CiAgICAgICAgIH0KICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcAppbmRleCA4MjllM2RiZDlkYjdkMzAxMjk2MWI1OWEwODAyMDNiYWM5
Y2NhNjc1Li4xMzFlYTZiZGUzMGE1NjA5NzUxOThkZTExN2ZmNDJlYzY3Yjc5YjdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTM2Nyw3ICszNjcs
NyBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRp
b25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdAogICAgIHJldHVybiAwOwogfQogCi1QYXNzUmVm
UHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0
cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCkKK1Bhc3NSZWZQ
dHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwg
c2l6ZV90JiBvZmZzZXQpCiB7CiAgICAgLy8gSWYgd2UgaGF2ZSBhIHNwZWNpZmljIGZ1bmN0aW9u
LCB3ZSBtYXkgaGF2ZSBnb3QgdG8gdGhpcyBwb2ludCBpZiB0aGVyZSBpcwogICAgIC8vIGFscmVh
ZHkgYSB0cmFuc2l0aW9uIHdpdGggdGhlIGNvcnJlY3QgcHJvcGVydHkgbmFtZSBhbmQgYXR0cmli
dXRlcywgYnV0CkBAIC0zOTksNyArMzk5LDcgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVj
dHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb24KIAog
ICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSBjcmVhdGUoc3RydWN0dXJlKTsKIAot
ICAgIHRyYW5zaXRpb24tPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4gPSBzdHJ1Y3R1cmUtPm1fY2Fj
aGVkUHJvdG90eXBlQ2hhaW47CisgICAgdHJhbnNpdGlvbi0+bV9jYWNoZWRQcm90b3R5cGVDaGFp
bi5zZXQoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLT5tX2NhY2hlZFByb3RvdHlwZUNoYWluLmdldCgp
LCAwKTsKICAgICB0cmFuc2l0aW9uLT5tX3ByZXZpb3VzID0gc3RydWN0dXJlOwogICAgIHRyYW5z
aXRpb24tPm1fbmFtZUluUHJldmlvdXMgPSBwcm9wZXJ0eU5hbWUuaW1wbCgpOwogICAgIHRyYW5z
aXRpb24tPm1fYXR0cmlidXRlc0luUHJldmlvdXMgPSBhdHRyaWJ1dGVzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCA2ZjcwNjBiZjFhYWRjMjQwM2Y5NzBj
NTFkZThlYjI2ODUwYTQ0NTJmLi5lNjg1OGI1MjA4ZDM1OGE3ZjI3MDM0OGI3ZGVmNWE1MThkNjAw
ZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtMzIs
NyArMzIsNiBAQAogI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxlLmgiCiAjaW5jbHVkZSAi
UHJvcGVydHlOYW1lQXJyYXkuaCIKICNpbmNsdWRlICJQcm90ZWN0LmgiCi0jaW5jbHVkZSAiU3Ry
dWN0dXJlQ2hhaW4uaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCIKICNp
bmNsdWRlICJKU1R5cGVJbmZvLmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgpAQCAtNDYsNiArNDUs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBNYXJrU3RhY2s7CiAgICAgY2xhc3MgUHJv
cGVydHlOYW1lQXJyYXk7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXlEYXRhOworICAgIGNs
YXNzIFN0cnVjdHVyZUNoYWluOwogCiAgICAgc3RydWN0IENsYXNzSW5mbzsKIApAQCAtNzMsNyAr
NzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlz
dGljcygpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVy
dHlUcmFuc2l0aW9uKFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNl
dCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXpl
X3QmIG9mZnNldCk7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJv
cGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lm
aWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KTsKICAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKFN0cnVjdHVyZSosIEpT
VmFsdWUgcHJvdG90eXBlKTsKQEAgLTEwNCw5ICsxMDQsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZUlu
Zm87IH0KIAogICAgICAgICBKU1ZhbHVlIHN0b3JlZFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvdG90eXBlLmdldCgpOyB9Ci0gICAgICAgIERlcHJlY2F0ZWRQdHI8VW5rbm93bj4qIHN0
b3JlZFByb3RvdHlwZVNsb3QoKSB7IHJldHVybiAmbV9wcm90b3R5cGU7IH0KICAgICAgICAgSlNW
YWx1ZSBwcm90b3R5cGVGb3JMb29rdXAoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIFN0cnVj
dHVyZUNoYWluKiBwcm90b3R5cGVDaGFpbihFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgdm9p
ZCBtYXJrQWdncmVnYXRlKE1hcmtTdGFjayYgbWFya1N0YWNrKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAobV9wcm90b3R5cGUpCisgICAgICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgm
bV9wcm90b3R5cGUpOworICAgICAgICB9CiAKICAgICAgICAgU3RydWN0dXJlKiBwcmV2aW91c0lE
KCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91cy5nZXQoKTsgfQogCkBAIC0yMTAsNyArMjE0LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFR5cGVJbmZvIG1fdHlwZUluZm87CiAKICAgICAg
ICAgRGVwcmVjYXRlZFB0cjxVbmtub3duPiBtX3Byb3RvdHlwZTsKLSAgICAgICAgbXV0YWJsZSBS
ZWZQdHI8U3RydWN0dXJlQ2hhaW4+IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW47CisgICAgICAgIG11
dGFibGUgV2Vha0dDUHRyPFN0cnVjdHVyZUNoYWluPiBtX2NhY2hlZFByb3RvdHlwZUNoYWluOwog
CiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG1fcHJldmlvdXM7CiAgICAgICAgIFJlZlB0cjxT
dHJpbmdJbXBsPiBtX25hbWVJblByZXZpb3VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCmluZGV4IGU0NTIzYzNhNjg5M2Q1ZGRiNmQ5ZmU1
ODU3M2U5NGFjZTk1OGQ5NWIuLjZhNWUxNzRjNjM1MDM4ZmVlYzc0NmY0ODYyMDNjODY1Nzc0OTM0
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNo
YWluLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFp
bi5jcHAKQEAgLTMyLDcgKzMyLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLVN0cnVjdHVyZUNo
YWluOjpTdHJ1Y3R1cmVDaGFpbihTdHJ1Y3R1cmUqIGhlYWQpCitTdHJ1Y3R1cmVDaGFpbjo6U3Ry
dWN0dXJlQ2hhaW4oTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFN0cnVj
dHVyZSogaGVhZCkKKyAgICA6IEpTQ2VsbChzdHJ1Y3R1cmUucmVsZWFzZVJlZigpKQogewogICAg
IHNpemVfdCBzaXplID0gMDsKICAgICBmb3IgKFN0cnVjdHVyZSogY3VycmVudCA9IGhlYWQ7IGN1
cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5zdG9yZWRQcm90b3R5cGUoKS5pc051bGwoKSA/IDAg
OiBhc09iamVjdChjdXJyZW50LT5zdG9yZWRQcm90b3R5cGUoKSktPnN0cnVjdHVyZSgpKQpAQCAt
NDYsNCArNDcsMTUgQEAgU3RydWN0dXJlQ2hhaW46OlN0cnVjdHVyZUNoYWluKFN0cnVjdHVyZSog
aGVhZCkKICAgICBtX3ZlY3RvcltpXSA9IDA7CiB9CiAKK1N0cnVjdHVyZUNoYWluOjp+U3RydWN0
dXJlQ2hhaW4oKQoreworfQorCit2b2lkIFN0cnVjdHVyZUNoYWluOjptYXJrQ2hpbGRyZW4oTWFy
a1N0YWNrJiBtYXJrU3RhY2spCit7CisgICAgc2l6ZV90IGkgPSAwOworICAgIHdoaWxlIChtX3Zl
Y3RvcltpXSkKKyAgICAgICAgbV92ZWN0b3JbaSsrXS0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2sp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVDaGFpbi5oCmluZGV4IDgxNmI2NmQ1MDUxNTUwYmNlYjJiNGVmYTI3ZTUx
NDE5ZTJkOWEzM2YuLjM0NTY0YWIxYzAxZTEzMzQ3OGExNTQxMjFlZDI1YzkzMjIxNjY2NDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaApAQCAt
MjYsNiArMjYsOCBAQAogI2lmbmRlZiBTdHJ1Y3R1cmVDaGFpbl9oCiAjZGVmaW5lIFN0cnVjdHVy
ZUNoYWluX2gKIAorI2luY2x1ZGUgIkpTQ2VsbC5oIgorCiAjaW5jbHVkZSA8d3RmL093bkFycmF5
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgpAQCAtMzUsMTYgKzM3LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
U3RydWN0dXJlOwogCi0gICAgY2xhc3MgU3RydWN0dXJlQ2hhaW4gOiBwdWJsaWMgUmVmQ291bnRl
ZDxTdHJ1Y3R1cmVDaGFpbj4geworICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAKICAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZUNoYWluPiBjcmVhdGUoU3RydWN0dXJlKiBoZWFk
KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU3RydWN0dXJlQ2hhaW4oaGVhZCkpOyB9CisgICAgICAg
IHN0YXRpYyBTdHJ1Y3R1cmVDaGFpbiogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
U3RydWN0dXJlKiBoZWFkKSB7IHJldHVybiBuZXcgKCZnbG9iYWxEYXRhKSBTdHJ1Y3R1cmVDaGFp
bihnbG9iYWxEYXRhLnN0cnVjdHVyZUNoYWluU3RydWN0dXJlLCBoZWFkKTsgfQogICAgICAgICBS
ZWZQdHI8U3RydWN0dXJlPiogaGVhZCgpIHsgcmV0dXJuIG1fdmVjdG9yLmdldCgpOyB9CisgICAg
ICAgIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOwogCi0gICAgcHJpdmF0ZToKLSAgICAg
ICAgU3RydWN0dXJlQ2hhaW4oU3RydWN0dXJlKiBoZWFkKTsKKyAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU1ZhbHVlIHByb3RvdHlwZSkgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0
YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc01hcmtDaGlsZHJl
biksIDAsIDApOyB9CiAKKyAgICBwcml2YXRlOgorICAgICAgICBTdHJ1Y3R1cmVDaGFpbihOb25O
dWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBTdHJ1Y3R1cmUqIGhlYWQpOworICAgICAgICB+U3Ry
dWN0dXJlQ2hhaW4oKTsKICAgICAgICAgT3duQXJyYXlQdHI8UmVmUHRyPFN0cnVjdHVyZT4gPiBt
X3ZlY3RvcjsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Xcml0ZUJhcnJpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRl
QmFycmllci5oCmluZGV4IGFmMDE4YTgxYzI5MDdiM2RiYzBiYjE1OTU1MjM5NDA1YzgyZWRhZGQu
LjM0ZGViYTJhNjA0ODgyNTBhYjFmNWIwZjI1OWU3YTlmNDlhZmNkOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllci5oCkBAIC05NCw5ICs5NCwyMSBAQCBw
dWJsaWM6CiAgICAgQ09NUElMRV9BU1NFUlQoIUpTVmFsdWVDaGVja2VyPFQ+OjpJc0pTVmFsdWUs
IFdyaXRlQmFycmllcl9KU1ZhbHVlX2lzX2ludmFsaWRfX3VzZV91bmtub3duKTsKICAgICB2b2lk
IHNldChKU0dsb2JhbERhdGEmLCBjb25zdCBKU0NlbGwqLCBUKiB2YWx1ZSkgeyB0aGlzLT5tX2Nl
bGwgPSByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KHZhbHVlKTsgfQogICAgIAotICAgIFQqIGdl
dCgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KG1fY2VsbCk7IH0KLSAgICBU
KiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9jZWxsKTsgfQot
ICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9jZWxs
KTsgfQorICAgIFQqIGdldCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxUKj4obV9jZWxsKTsKKyAgICB9CisKKyAgICBUKiBvcGVyYXRvciooKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihtX2NlbGwpOworICAgIH0KKwor
ICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFQqPihtX2NlbGwpOworICAgIH0KKwogICAgIHZvaWQgY2xlYXIoKSB7IG1fY2VsbCA9IDA7
IH0KICAgICAKICAgICBKU0NlbGwqKiBzbG90KCkgeyByZXR1cm4gJm1fY2VsbDsgfQpAQCAtMTE2
LDcgKzEyOCwxMyBAQCB0ZW1wbGF0ZSA8PiBjbGFzcyBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+
IHsKIHB1YmxpYzoKICAgICB2b2lkIHNldChKU0dsb2JhbERhdGEmLCBjb25zdCBKU0NlbGwqLCBK
U1ZhbHVlIHZhbHVlKSB7IG1fdmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOyB9CiAgICAg
dm9pZCBzZXRXaXRob3V0V3JpdGVCYXJyaWVyKEpTVmFsdWUgdmFsdWUpIHsgbV92YWx1ZSA9IEpT
VmFsdWU6OmVuY29kZSh2YWx1ZSk7IH0KLSAgICBKU1ZhbHVlIGdldCgpIGNvbnN0IHsgcmV0dXJu
IEpTVmFsdWU6OmRlY29kZShtX3ZhbHVlKTsgfQorICAgIEpTVmFsdWUgZ2V0KCkgY29uc3QKKyAg
ICB7CisjaWYgRU5BQkxFKEpTQ19aT01CSUVTKQorICAgICAgICBBU1NFUlQoIUpTVmFsdWU6OmRl
Y29kZShtX3ZhbHVlKSB8fCAhSlNWYWx1ZTo6ZGVjb2RlKG1fdmFsdWUpLmlzWm9tYmllKCkpOwor
I2VuZGlmCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUobV92YWx1ZSk7CisgICAgfQog
ICAgIHZvaWQgY2xlYXIoKSB7IG1fdmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsg
fQogICAgIHZvaWQgc2V0VW5kZWZpbmVkKCkgeyBtX3ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOyB9CiAgICAgYm9vbCBpc051bWJlcigpIGNvbnN0IHsgcmV0dXJuIGdldCgp
LmlzTnVtYmVyKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxNzk1ZTZjOGIzMWM4NDg5NjRiYzAwYTYyYmJi
NjU5MDllNzI3Y2NlLi4xZGU4NTgzOTU1Yzg0NTEwYTQ5MDM5MGZiZDk5MWQwNTA1NjAyZTI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDQtMDEgIE9saXZlciBIdW50ICA8b2xp
dmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBNYWtlIFN0cnVjdHVyZUNoYWluIEdDIGFsbG9jYXRlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY2OTUKKworICAgICAgICBVcGRhdGUg
Zm9yIG5ldyBTdHJ1Y3R1cmUgbWFya2luZyBmdW5jdGlvbgorCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxP
YmplY3Q6Om1hcmtDaGlsZHJlbik6CisKIDIwMTEtMDQtMDQgIFNlcmdpbyBWaWxsYXIgU2VuaW4g
IDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmlu
c29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IDgxODNiNmUyYzQwZDU0YzM4ZDcxMzUwYjM4MzUxMzBkZjIyMGI2YjguLjJjZWY5
OTA2ZTkwNzRhOWM5MWE5MWYxMzBhM2Q2ZGMwYmUyNTNhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAg
dm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNr
KQogCiAgICAgSlNET01TdHJ1Y3R1cmVNYXA6Oml0ZXJhdG9yIGVuZCA9IHN0cnVjdHVyZXMoKS5l
bmQoKTsKICAgICBmb3IgKEpTRE9NU3RydWN0dXJlTWFwOjppdGVyYXRvciBpdCA9IHN0cnVjdHVy
ZXMoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIG1hcmtTdGFjay5hcHBlbmQo
aXQtPnNlY29uZC0+c3RvcmVkUHJvdG90eXBlU2xvdCgpKTsKKyAgICAgICAgaXQtPnNlY29uZC0+
bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOwogCiAgICAgSlNET01Db25zdHJ1Y3Rvck1hcDo6aXRl
cmF0b3IgZW5kMiA9IGNvbnN0cnVjdG9ycygpLmVuZCgpOwogICAgIGZvciAoSlNET01Db25zdHJ1
Y3Rvck1hcDo6aXRlcmF0b3IgaXQyID0gY29uc3RydWN0b3JzKCkuYmVnaW4oKTsgaXQyICE9IGVu
ZDI7ICsraXQyKQo=
</data>
<flag name="review"
          id="80534"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>