<?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>92160</bug_id>
          
          <creation_ts>2012-07-24 14:02:00 -0700</creation_ts>
          <short_desc>[BlackBerry] Support async spellcheck for the blackberry port</short_desc>
          <delta_ts>2012-07-26 16:05:27 -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>WebKit BlackBerry</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nima Ghanavatian">nima.ghanavatian</reporter>
          <assigned_to name="Nima Ghanavatian">nima.ghanavatian</assigned_to>
          <cc>mifenton</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>677191</commentid>
    <comment_count>0</comment_count>
    <who name="Nima Ghanavatian">nima.ghanavatian</who>
    <bug_when>2012-07-24 14:02:00 -0700</bug_when>
    <thetext>Setting up support to tie in to the async spellcheck code.  This will call out to the input service and process the results in the callback methods spellCheckingRequestProcessed and spellCheckingRequestCancelled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677206</commentid>
    <comment_count>1</comment_count>
      <attachid>154142</attachid>
    <who name="Nima Ghanavatian">nima.ghanavatian</who>
    <bug_when>2012-07-24 14:29:08 -0700</bug_when>
    <thetext>Created attachment 154142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677225</commentid>
    <comment_count>2</comment_count>
      <attachid>154142</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-07-24 14:51:19 -0700</bug_when>
    <thetext>Comment on attachment 154142
Patch

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

Looks good, still some stuff to fix.

&gt; Source/WebKit/blackberry/ChangeLog:54
&gt; +        (WebCore):

I think something went wrong with the ChangeLogs, one should detail the WebCore/ChangeLog changes, the other the changes in WebKit/blackberry/ChangeLog. The git commit message should do the combination of the two like above.

&gt; Source/WebKit/blackberry/WebCoreSupport/EditorClientBlackBerry.cpp:43
&gt; +class SpellChecker;

You don&apos;t need this.

&gt; Source/WebKit/blackberry/WebCoreSupport/EditorClientBlackBerry.cpp:575
&gt; +void EditorClientBlackBerry::checkTextOfParagraph(const UChar*, int, WebCore::TextCheckingTypeMask, WTF::Vector&lt;WebCore::TextCheckingResult&gt;&amp;)

You don&apos;t need some of the prefixes here, like WTF:: for Vector.

&gt; Source/WebKit/blackberry/WebCoreSupport/EditorClientBlackBerry.h:88
&gt; +    virtual void checkTextOfParagraph(const UChar*, int, WebCore::TextCheckingTypeMask, WTF::Vector&lt;WebCore::TextCheckingResult&gt;&amp;);

You don&apos;t need some of the prefixes here, like WTF:: for Vector.

&gt; Source/WebKit/blackberry/WebKitSupport/InputHandler.cpp:630
&gt; +    if (frame) {

You can combine above two lines.

&gt; Source/WebKit/blackberry/WebKitSupport/InputHandler.cpp:632
&gt; +        if (editor)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678050</commentid>
    <comment_count>3</comment_count>
      <attachid>154355</attachid>
    <who name="Nima Ghanavatian">nima.ghanavatian</who>
    <bug_when>2012-07-25 08:00:50 -0700</bug_when>
    <thetext>Created attachment 154355
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678070</commentid>
    <comment_count>4</comment_count>
      <attachid>154355</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-07-25 08:21:43 -0700</bug_when>
    <thetext>Comment on attachment 154355
Patch

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

ChangeLogs are fine now. Please have a look at my comments and also the patch needs to be reapplied against trunk so the style checker can run.

&gt; Source/WebCore/ChangeLog:6
&gt; +        2012-07-24  Nima Ghanavatian  &lt;nghanavatian@rim.com&gt;

You do not need this line.

&gt; Source/WebKit/blackberry/ChangeLog:6
&gt; +        2012-07-24  Nima Ghanavatian  &lt;nghanavatian@rim.com&gt;

Ditto.

&gt; Source/WebCore/platform/text/TextChecking.h:40
&gt; +#if PLATFORM(MAC) &amp;&amp; !defined(BUILDING_ON_LEOPARD) || PLATFORM(BLACKBERRY)

Better add some braces to make more clear how this should be evaluated.

&gt; Source/WebKit/blackberry/WebKitSupport/InputHandler.cpp:533
&gt; +        free(checkingString);

I am not sure if it needs to be freed since malloc failed. But what about when it succeeded, does it need to be freed in that case? Are we leaking checkingString?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679602</commentid>
    <comment_count>5</comment_count>
      <attachid>154708</attachid>
    <who name="Nima Ghanavatian">nima.ghanavatian</who>
    <bug_when>2012-07-26 11:50:39 -0700</bug_when>
    <thetext>Created attachment 154708
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679610</commentid>
    <comment_count>6</comment_count>
    <who name="Nima Ghanavatian">nima.ghanavatian</who>
    <bug_when>2012-07-26 11:53:23 -0700</bug_when>
    <thetext>In addition to the changes you pointed out I also reworked InputHandler::requestCheckingOfString quite a bit to call spellCheckingRequestCancelled on all early returns, and to only append the map on successful calls to checkSpellingOfStringAsync.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679632</commentid>
    <comment_count>7</comment_count>
      <attachid>154708</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-07-26 12:14:29 -0700</bug_when>
    <thetext>Comment on attachment 154708
Patch

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

Looks good, please fix the minor issues.

&gt; Source/WebKit/blackberry/WebKitSupport/InputHandler.cpp:523
&gt; +void InputHandler::requestCheckingOfString(WTF::PassRefPtr&lt;WebCore::TextCheckingRequest&gt; textCheckingRequest)

You can remove the WTF:: prefixes here.

&gt; Source/WebKit/blackberry/WebKitSupport/InputHandler.cpp:560
&gt; +    // map sequenceId to transactionId

Add a period.

&gt; Source/WebKit/blackberry/WebKitSupport/InputHandler.cpp:619
&gt; +        InputLog(LogLevelWarn, &quot;InputHandler::spellCheckingRequestProcessed failed to processed request with sequenceId %d&quot;, sequenceId);

Typo process</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679635</commentid>
    <comment_count>8</comment_count>
      <attachid>154715</attachid>
    <who name="Nima Ghanavatian">nima.ghanavatian</who>
    <bug_when>2012-07-26 12:18:50 -0700</bug_when>
    <thetext>Created attachment 154715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679680</commentid>
    <comment_count>9</comment_count>
      <attachid>154715</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-26 13:03:37 -0700</bug_when>
    <thetext>Comment on attachment 154715
Patch

Rejecting attachment 154715 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/13342974</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679683</commentid>
    <comment_count>10</comment_count>
    <who name="Mike Fenton">mifenton</who>
    <bug_when>2012-07-26 13:06:42 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 154715 [details])
&gt; Rejecting attachment 154715 [details] from commit-queue.
&gt; 
&gt; Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1
&gt; 
&gt; ERROR: /mnt/git/webkit-commit-queue/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).
&gt; 
&gt; Full output: http://queues.webkit.org/results/13342974

Rob needs to r+, or you need to add Rob to the log yourself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679697</commentid>
    <comment_count>11</comment_count>
      <attachid>154732</attachid>
    <who name="Nima Ghanavatian">nima.ghanavatian</who>
    <bug_when>2012-07-26 13:26:45 -0700</bug_when>
    <thetext>Created attachment 154732
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679700</commentid>
    <comment_count>12</comment_count>
      <attachid>154732</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-07-26 13:31:44 -0700</bug_when>
    <thetext>Comment on attachment 154732
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679883</commentid>
    <comment_count>13</comment_count>
      <attachid>154732</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-26 16:05:24 -0700</bug_when>
    <thetext>Comment on attachment 154732
Patch

Clearing flags on attachment: 154732

Committed r123809: &lt;http://trac.webkit.org/changeset/123809&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679884</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-26 16:05:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154142</attachid>
            <date>2012-07-24 14:29:08 -0700</date>
            <delta_ts>2012-07-25 08:00:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92160-20120724172430.patch</filename>
            <type>text/plain</type>
            <size>20579</size>
            <attacher name="Nima Ghanavatian">nima.ghanavatian</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzAzOTkwYzU3ZDY1MzZj
NTU1ZjY2ZmJjYjNmNTAwYmNjNjYwZDQ4MC4uNzc3ZTAyZGFkNTM5MWRjZTAxZmQxN2M1MDg1Mjhi
ZjdiNzE0OWE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTA3LTI0ICBOaW1h
IEdoYW5hdmF0aWFuICA8bmdoYW5hdmF0aWFuQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVy
cnldIFN1cHBvcnQgYXN5bmMgc3BlbGxjaGVjayBmb3IgdGhlIGJsYWNrYmVycnkgcG9ydAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIxNjAKKworICAg
ICAgICBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnk6CisKKyAgICAgICAgMjAxMi0wNy0yNCAgTmlt
YSBHaGFuYXZhdGlhbiAgPG5naGFuYXZhdGlhbkByaW0uY29tPgorCisgICAgICAgIFBSMTI0NTE3
CisgICAgICAgIEltcGxlbWVudGluZyBzdXBwb3J0IGZvciBhc3luYyBzcGVsbGNoZWNrLgorCisg
ICAgICAgIEludGVybmFsbHkgcmV2aWV3ZWQgYnkgTWlrZSBGZW50b24uCisKKyAgICAgICAgKiBB
cGkvV2ViUGFnZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2U6OnNw
ZWxsQ2hlY2tpbmdSZXF1ZXN0Q2FuY2VsbGVkKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2U6OnNwZWxsQ2hlY2tpbmdSZXF1ZXN0UHJvY2Vz
c2VkKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OmRpZENo
YW5nZVNldHRpbmdzKToKKyAgICAgICAgKiBBcGkvV2ViUGFnZS5oOgorICAgICAgICAqIEFwaS9X
ZWJTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6
V2ViS2l0OjpXZWJTZXR0aW5nczo6c3RhbmRhcmRTZXR0aW5ncyk6CisgICAgICAgIChCbGFja0Jl
cnJ5OjpXZWJLaXQ6OldlYlNldHRpbmdzOjppc0FzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViU2V0dGluZ3M6OnNldEFzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKToKKyAgICAgICAgKiBBcGkvV2ViU2V0dGluZ3Mu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tC
ZXJyeTo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Q2xpZW50QmxhY2tCZXJyeTo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuaDoKKyAgICAgICAgKEVkaXRvckNsaWVu
dEJsYWNrQmVycnkpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNwcDoK
KyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpyZXF1ZXN0Q2hlY2tp
bmdPZlN0cmluZyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6
Y29udmVydFRyYW5zYWN0aW9uSWRUb1NlcXVlbmNlSWQpOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpzcGVsbENoZWNraW5nUmVx
dWVzdFByb2Nlc3NlZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxl
cjo6c3BlbGxDaGVja2luZ1JlcXVlc3RDYW5jZWxsZWQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6
V2ViS2l0OjpJbnB1dEhhbmRsZXI6OmdldFNwZWxsQ2hlY2tlcik6CisgICAgICAgICogV2ViS2l0
U3VwcG9ydC9JbnB1dEhhbmRsZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5w
dXRIYW5kbGVyKToKKworICAgICAgICBTb3VyY2UvV2ViQ29yZToKKworICAgICAgICAyMDEyLTA3
LTI0ICBOaW1hIEdoYW5hdmF0aWFuICA8bmdoYW5hdmF0aWFuQHJpbS5jb20+CisKKyAgICAgICAg
U2V0IFVTRV9VTklGSUVEX1RFWFRfQ0hFQ0tJTkcgZm9yIFBMQVRGT1JNKEJMQUNLQkVSUlkpIHRv
IHVzZSB0aGUKKyAgICAgICAgYXN5bmNocm9ub3VzIHNwZWxsY2hlY2tpbmcgY29kZSBwYXRoLgor
CisgICAgICAgIEludGVybmFsbHkgcmV2aWV3ZWQgYnkgTWlrZSBGZW50b24uCisKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIw
MTItMDctMTAgIEpvc2h1YSBOZXR0ZXJmaWVsZCAgPGpuZXR0ZXJmaWVsZEByaW0uY29tPgogICAg
ICAgICBNYWtlIEdDM0QgYW5kIEUzRCBtb3JlIG1haW50YWluYWJsZSBmb3IgR0xFUyBwbGF0Zm9y
bXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNTY3
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCA4Y2E5ZjYwNmQ2ZWY2MjY0MDI0Yzg4
NDZkNTRkNDkyZjM4NTk4ZmI0Li4wOTc0YzhiMzViMjYxNTE1ZTZlYjU2N2Y3NzY5ZGY0MzNlYjg1
MGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OCBAQAorMjAx
Mi0wNy0yNCAgTmltYSBHaGFuYXZhdGlhbiAgPG5naGFuYXZhdGlhbkByaW0uY29tPgorCisgICAg
ICAgIFtCbGFja0JlcnJ5XSBTdXBwb3J0IGFzeW5jIHNwZWxsY2hlY2sgZm9yIHRoZSBibGFja2Jl
cnJ5IHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkyMTYwCisKKyAgICAgICAgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5OgorCisgICAgICAgIDIw
MTItMDctMjQgIE5pbWEgR2hhbmF2YXRpYW4gIDxuZ2hhbmF2YXRpYW5AcmltLmNvbT4KKworICAg
ICAgICBQUjEyNDUxNworICAgICAgICBJbXBsZW1lbnRpbmcgc3VwcG9ydCBmb3IgYXN5bmMgc3Bl
bGxjaGVjay4KKworICAgICAgICBJbnRlcm5hbGx5IHJldmlld2VkIGJ5IE1pa2UgRmVudG9uLgor
CisgICAgICAgICogQXBpL1dlYlBhZ2UuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpXZWJQYWdlOjpzcGVsbENoZWNraW5nUmVxdWVzdENhbmNlbGxlZCk6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlOjpzcGVsbENoZWNraW5n
UmVxdWVzdFByb2Nlc3NlZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQ
cml2YXRlOjpkaWRDaGFuZ2VTZXR0aW5ncyk6CisgICAgICAgICogQXBpL1dlYlBhZ2UuaDoKKyAg
ICAgICAgKiBBcGkvV2ViU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6V2ViU2V0dGluZ3M6OnN0YW5kYXJkU2V0dGluZ3MpOgorICAg
ICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJTZXR0aW5nczo6aXNBc3luY2hyb25vdXNTcGVs
bENoZWNraW5nRW5hYmxlZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlNldHRp
bmdzOjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCk6CisgICAgICAgICogQXBp
L1dlYlNldHRpbmdzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50Qmxh
Y2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
ckNsaWVudEJsYWNrQmVycnk6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5Lmg6CisgICAgICAg
IChFZGl0b3JDbGllbnRCbGFja0JlcnJ5KToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0lucHV0
SGFuZGxlci5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6
cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJ
bnB1dEhhbmRsZXI6OmNvbnZlcnRUcmFuc2FjdGlvbklkVG9TZXF1ZW5jZUlkKToKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c3Bl
bGxDaGVja2luZ1JlcXVlc3RQcm9jZXNzZWQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tpbmdSZXF1ZXN0Q2FuY2VsbGVkKToKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpnZXRTcGVsbENoZWNrZXIpOgorICAg
ICAgICAqIFdlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKElucHV0SGFuZGxlcik6CisKKyAgICAgICAgU291cmNlL1dlYkNvcmU6CisKKyAg
ICAgICAgMjAxMi0wNy0yNCAgTmltYSBHaGFuYXZhdGlhbiAgPG5naGFuYXZhdGlhbkByaW0uY29t
PgorCisgICAgICAgIFNldCBVU0VfVU5JRklFRF9URVhUX0NIRUNLSU5HIGZvciBQTEFURk9STShC
TEFDS0JFUlJZKSB0byB1c2UgdGhlCisgICAgICAgIGFzeW5jaHJvbm91cyBzcGVsbGNoZWNraW5n
IGNvZGUgcGF0aC4KKworICAgICAgICBJbnRlcm5hbGx5IHJldmlld2VkIGJ5IE1pa2UgRmVudG9u
LgorCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorCiAyMDEyLTA3LTIwICBKYWNreSBKaWFuZyAgPHpoYWppYW5nQHJpbS5jb20+CiAK
ICAgICAgICAgW0JsYWNrQmVycnldIGNsb2NrX2dldHRpbWUoKSBpbiBCYWNraW5nU3RvcmUuY3Bw
IHNob3VsZCB1c2UgQ0xPQ0tfTU9OT1RPTklDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0Q2hlY2tpbmcuaAppbmRleCBiZTllZDVmOWU4NWZjZGU4MDExNjhjMzM5M2VmZDQ5NTE4
NzZkYzEzLi40YmRlNDBlMjZhM2E1OTA2YTRiMTY3ZmU2Y2RlNWQxOTYzZmY0ZDY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmgKQEAgLTM3LDggKzM3LDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjZGVmaW5lIFdURl9VU0VfR1JBTU1BUl9DSEVDS0lO
RyAxCiAKLSNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQp
CisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSB8fCBQ
TEFURk9STShCTEFDS0JFUlJZKQogI2RlZmluZSBXVEZfVVNFX1VOSUZJRURfVEVYVF9DSEVDS0lO
RyAxCisjZWxpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQp
CiAjZGVmaW5lIFdURl9VU0VfQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQgMQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCmluZGV4IDQ3ODBmNmJmOWNk
NzlkZDFjMTliMzcwNDNiZDNhNTJkOWY4YWJmMDYuLjFkOGEwMzc3NWFhNTMxMDIwYjQwNmQyYTBl
ZTIxMTRkOTA4NzBlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkv
V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNw
cApAQCAtNDcxOSw5ICs0NzE5LDE0IEBAIHZvaWQgV2ViUGFnZTo6c2V0U3BlbGxDaGVja2luZ0Vu
YWJsZWQoYm9vbCBlbmFibGVkKQogICAgIHN0YXRpY19jYXN0PEVkaXRvckNsaWVudEJsYWNrQmVy
cnkqPihkLT5tX3BhZ2UtPmVkaXRvckNsaWVudCgpKS0+ZW5hYmxlU3BlbGxDaGVja2luZyhlbmFi
bGVkKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzcGVsbENoZWNraW5nUmVxdWVzdFByb2Nlc3NlZChp
bnQzMl90IGlkLCBzcGFubmFibGVfc3RyaW5nX3QqIHNwYW5uYWJsZVN0cmluZykKK3ZvaWQgV2Vi
UGFnZTo6c3BlbGxDaGVja2luZ1JlcXVlc3RDYW5jZWxsZWQoaW50MzJfdCB0cmFuc2FjdGlvbklk
KQogewotICAgIGQtPm1faW5wdXRIYW5kbGVyLT5zcGVsbENoZWNraW5nUmVxdWVzdFByb2Nlc3Nl
ZChpZCwgc3Bhbm5hYmxlU3RyaW5nKTsKKyAgICBkLT5tX2lucHV0SGFuZGxlci0+c3BlbGxDaGVj
a2luZ1JlcXVlc3RDYW5jZWxsZWQodHJhbnNhY3Rpb25JZCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6
c3BlbGxDaGVja2luZ1JlcXVlc3RQcm9jZXNzZWQoaW50MzJfdCB0cmFuc2FjdGlvbklkLCBzcGFu
bmFibGVfc3RyaW5nX3QqIHNwYW5uYWJsZVN0cmluZykKK3sKKyAgICBkLT5tX2lucHV0SGFuZGxl
ci0+c3BlbGxDaGVja2luZ1JlcXVlc3RQcm9jZXNzZWQodHJhbnNhY3Rpb25JZCwgc3Bhbm5hYmxl
U3RyaW5nKTsKIH0KIAogY2xhc3MgRGVmZXJyZWRUYXNrU2VsZWN0aW9uQ2FuY2VsbGVkOiBwdWJs
aWMgRGVmZXJyZWRUYXNrPCZXZWJQYWdlUHJpdmF0ZTo6bV93b3VsZENhbmNlbFNlbGVjdGlvbj4g
ewpAQCAtNjU2Miw2ICs2NTY3LDcgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6ZGlkQ2hhbmdlU2V0
dGluZ3MoV2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzKQogICAgIGNvcmVTZXR0aW5ncy0+c2V0RGVm
YXVsdFRleHRFbmNvZGluZ05hbWUod2ViU2V0dGluZ3MtPmRlZmF1bHRUZXh0RW5jb2RpbmdOYW1l
KCkuaW1wbCgpKTsKICAgICBjb3JlU2V0dGluZ3MtPnNldERvd25sb2FkYWJsZUJpbmFyeUZvbnRz
RW5hYmxlZCh3ZWJTZXR0aW5ncy0+ZG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkKCkpOwog
ICAgIGNvcmVTZXR0aW5ncy0+c2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKG1fd2ViU2V0dGlu
Z3MtPmlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKCkpOworICAgIGNvcmVTZXR0aW5ncy0+c2V0
QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQobV93ZWJTZXR0aW5ncy0+aXNBc3luY2hy
b25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKTsKIAogICAgIFdlYlN0cmluZyBzdHlsZXNoZWV0
VVJMID0gd2ViU2V0dGluZ3MtPnVzZXJTdHlsZVNoZWV0U3RyaW5nKCk7CiAgICAgaWYgKHN0eWxl
c2hlZXRVUkwuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0FwaS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuaApp
bmRleCAyODVmOWM0ZDI1YjY3MzhmMTg2YjFmNzRmMDM1NGJlZTllYjAyZjA2Li40OWMwZmQ4OWEz
M2UxOTU3YTQyN2I3MmVmZmU5ZjA4ZGIxOGNkNzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYlBhZ2UuaApAQCAtMjU1LDcgKzI1NSw4IEBAIHB1YmxpYzoKICAgICBpbnQzMl90IGNv
bW1pdFRleHQoc3Bhbm5hYmxlX3N0cmluZ190KiwgaW50MzJfdCByZWxhdGl2ZUN1cnNvclBvc2l0
aW9uKTsKIAogICAgIHZvaWQgc2V0U3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCk7Ci0gICAgdm9p
ZCBzcGVsbENoZWNraW5nUmVxdWVzdFByb2Nlc3NlZChpbnQzMl90IGlkLCBzcGFubmFibGVfc3Ry
aW5nX3QqKTsKKyAgICB2b2lkIHNwZWxsQ2hlY2tpbmdSZXF1ZXN0UHJvY2Vzc2VkKGludDMyX3Qg
dHJhbnNhY3Rpb25JZCwgc3Bhbm5hYmxlX3N0cmluZ190Kik7CisgICAgdm9pZCBzcGVsbENoZWNr
aW5nUmVxdWVzdENhbmNlbGxlZChpbnQzMl90IHRyYW5zYWN0aW9uSWQpOwogCiAgICAgdm9pZCBz
ZXRTZWxlY3Rpb24oY29uc3QgUGxhdGZvcm06OkludFBvaW50JiBzdGFydFBvaW50LCBjb25zdCBQ
bGF0Zm9ybTo6SW50UG9pbnQmIGVuZFBvaW50KTsKICAgICB2b2lkIHNldENhcmV0UG9zaXRpb24o
Y29uc3QgUGxhdGZvcm06OkludFBvaW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQXBpL1dlYlNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9B
cGkvV2ViU2V0dGluZ3MuY3BwCmluZGV4IDIzYjIzOWNkM2U5MTE1OGM3NWIxZDVjMzA3ZTkwOWZl
NTIzM2EwMjYuLjc4ODFjNDY3NDcyMTYyY2JhNTBhZmY2MjJkZDg4ZmYwOTY1ZDRhZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViU2V0dGluZ3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViU2V0dGluZ3MuY3BwCkBAIC0zOCw2ICsz
OCw3IEBAIG5hbWVzcGFjZSBCbGFja0JlcnJ5IHsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBERUZJ
TkVfU1RBVElDX0xPQ0FMKFN0cmluZywgQmxhY2tCZXJyeUFsbG93Q3Jvc3NTaXRlUmVxdWVzdHMs
ICgiQmxhY2tCZXJyeUFsbG93Q3Jvc3NTaXRlUmVxdWVzdHMiKSk7CitERUZJTkVfU1RBVElDX0xP
Q0FMKFN0cmluZywgQmxhY2tCZXJyeUFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmcsICgiQmxhY2tC
ZXJyeUFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmciKSk7CiBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgQmxhY2tCZXJyeUJhY2tncm91bmRDb2xvciwgKCJCbGFja0JlcnJ5QmFja2dyb3VuZENv
bG9yIikpOwogREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIEJsYWNrQmVycnlDb29raWVzRW5h
YmxlZCwgKCJCbGFja0JlcnJ5Q29va2llc0VuYWJsZWQiKSk7CiBERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgQmxhY2tCZXJyeURpcmVjdFJlbmRlcmluZ1RvV2luZG93RW5hYmxlZCwgKCJCbGFj
a0JlcnJ5RGlyZWN0UmVuZGVyaW5nVG9XaW5kb3dFbmFibGVkIikpOwpAQCAtMTc5LDYgKzE4MCw3
IEBAIFdlYlNldHRpbmdzKiBXZWJTZXR0aW5nczo6c3RhbmRhcmRTZXR0aW5ncygpCiAgICAgc2V0
dGluZ3MtPm1fcHJpdmF0ZS0+c2V0Qm9vbGVhbihCbGFja0JlcnJ5RmlsZVN5c3RlbUFQSVNhbmRi
b3hlZCwgdHJ1ZSk7CiAgICAgc2V0dGluZ3MtPm1fcHJpdmF0ZS0+c2V0Qm9vbGVhbihCbGFja0Jl
cnJ5Q3JlZGVudGlhbEF1dG9maWxsRW5hYmxlZCwgZmFsc2UpOwogICAgIHNldHRpbmdzLT5tX3By
aXZhdGUtPnNldEJvb2xlYW4oQmxhY2tCZXJyeUZvcm1BdXRvZmlsbEVuYWJsZWQsIGZhbHNlKTsK
KyAgICBzZXR0aW5ncy0+bV9wcml2YXRlLT5zZXRCb29sZWFuKEJsYWNrQmVycnlBc3luY2hyb25v
dXNTcGVsbENoZWNraW5nLCB0cnVlKTsKIAogICAgIGlmIChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
RGV2aWNlSW5mbzo6aW5zdGFuY2UoKS0+aXNNb2JpbGUoKSkgewogICAgICAgICBXZWJDb3JlOjpG
bG9hdFNpemUgY3VycmVudFBQSSA9IFBsYXRmb3JtOjpHcmFwaGljczo6U2NyZWVuOjpwcmltYXJ5
U2NyZWVuKCktPnBpeGVsc1BlckluY2goLTEpOwpAQCAtODA5LDYgKzgxMSwxNiBAQCB2b2lkIFdl
YlNldHRpbmdzOjpzZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoYm9vbCBlbmFibGUpCiAgICAg
bV9wcml2YXRlLT5zZXRCb29sZWFuKFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCwgZW5hYmxlKTsK
IH0KIAorYm9vbCBXZWJTZXR0aW5nczo6aXNBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxl
ZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Z2V0Qm9vbGVhbihCbGFja0JlcnJ5
QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZyk7Cit9CisKK3ZvaWQgV2ViU2V0dGluZ3M6OnNldEFz
eW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wgZW5hYmxlKSBjb25zdAoreworICAg
IHJldHVybiBtX3ByaXZhdGUtPnNldEJvb2xlYW4oQmxhY2tCZXJyeUFzeW5jaHJvbm91c1NwZWxs
Q2hlY2tpbmcsIGVuYWJsZSk7Cit9CisKIGJvb2wgV2ViU2V0dGluZ3M6OmZ1bGxTY3JlZW5WaWRl
b0NhcGFibGUoKSBjb25zdAogewogICAgIHJldHVybiBtX3ByaXZhdGUtPmdldEJvb2xlYW4oQmxh
Y2tCZXJyeUZ1bGxTY3JlZW5WaWRlb0NhcGFibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0FwaS9XZWJTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0FwaS9XZWJTZXR0aW5ncy5oCmluZGV4IDc3NTVmODMzNjQwNmNhNWQ4MzhmY2ZmYmMzNjhjNjYy
YjM0NDlhYzEuLmE0YTA1ZWIzMWRlZDMyZmNmMjA1MDQ2NTE0MDU0MzJiZjk3ZDk1OGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViU2V0dGluZ3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlNldHRpbmdzLmgKQEAgLTIyOCw2ICsyMjgs
OSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCgpIGNvbnN0
OwogICAgIHZvaWQgc2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGJvb2wpOwogCisgICAgYm9v
bCBpc0FzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKSBjb25zdDsKKwogICAgIGJv
b2wgZnVsbFNjcmVlblZpZGVvQ2FwYWJsZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0RnVsbFNjcmVl
blZpZGVvQ2FwYWJsZShib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3Bw
CmluZGV4IDc4ZjA0NWE4NjYxYjI1ZjIyNDFmZWYyYTcyZGI5MWQ5OTM4MDJjYzguLjgzYjNiMGQ0
ZGY3MDNmODM2ZDIzMGU0NGRiZGY3ZTA3NjQ4ODNlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
QmxhY2tCZXJyeS5jcHAKQEAgLTQwLDYgKzQwLDggQEAgdXNpbmcgbmFtZXNwYWNlIEJsYWNrQmVy
cnk6OldlYktpdDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTcGVsbENoZWNrZXI7
CisKIC8vIEFyYml0cmFyeSBkZXB0aCBsaW1pdCBmb3IgdGhlIHVuZG8gc3RhY2ssIHRvIGtlZXAg
aXQgZnJvbSB1c2luZwogLy8gdW5ib3VuZGVkIG1lbW9yeS4gVGhpcyBpcyB0aGUgbWF4aW11bSBu
dW1iZXIgb2YgZGlzdGluY3QgdW5kb2FibGUKIC8vIGFjdGlvbnMgLS0gdW5icm9rZW4gc3RyZXRj
aGVzIG9mIHR5cGVkIGNoYXJhY3RlcnMgYXJlIGNvYWxlc2NlZApAQCAtNTY1LDcgKzU2NywxMiBA
QCB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0
IFVDaGFyKiwgaW50LCBXVEY6OlZlY3RvcgogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZv
aWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxD
aGVja2VyKiwgY29uc3QgVGV4dENoZWNraW5nUmVxdWVzdCYpCit2b2lkIEVkaXRvckNsaWVudEJs
YWNrQmVycnk6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciogc3BlbGxDaGVj
a2VyLCBjb25zdCBUZXh0Q2hlY2tpbmdSZXF1ZXN0JiB0ZXh0Q2hlY2tpbmdSZXF1ZXN0KQorewor
ICAgIG1fd2ViUGFnZVByaXZhdGUtPm1faW5wdXRIYW5kbGVyLT5yZXF1ZXN0Q2hlY2tpbmdPZlN0
cmluZyhzcGVsbENoZWNrZXIsIHRleHRDaGVja2luZ1JlcXVlc3QpOworfQorCit2b2lkIEVkaXRv
ckNsaWVudEJsYWNrQmVycnk6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiwgaW50
LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgV1RGOjpWZWN0b3I8V2ViQ29yZTo6VGV4
dENoZWNraW5nUmVzdWx0PiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRC
bGFja0JlcnJ5LmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50QmxhY2tCZXJyeS5oCmluZGV4IDQ4NjE3NmIwZDE4NTgzNTliYzVhZTE0MjM0NDE2
YTQzMzEzYjIwZTguLjJhYmFkNzgyNjZhNjJlMDJmNTkyMjc4MmU0NDhhYzBiMTVmNjljZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRCbGFja0JlcnJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuaApAQCAtODUsNiArODUsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50
LCBWZWN0b3I8R3JhbW1hckRldGFpbCwgMHU+JiwgaW50KiwgaW50Kik7CiAgICAgdmlydHVhbCB2
b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFZlY3Rv
cjxTdHJpbmc+Jik7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNw
ZWxsQ2hlY2tlciosIGNvbnN0IFRleHRDaGVja2luZ1JlcXVlc3QmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqLCBpbnQsIFdlYkNvcmU6OlRleHRD
aGVja2luZ1R5cGVNYXNrLCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+
Jik7CiAKICAgICB2aXJ0dWFsIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpOwogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgU3Ry
aW5nJiwgY29uc3QgR3JhbW1hckRldGFpbCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5jcHAKaW5kZXggZWViZjc4MmYz
YzdlYzMyNzgwYTZjNzZhZjQwNTZlNzZiN2M4YzBkNC4uZmVkN2FiOTFhNTRjZDEyNDg4ZjQyNWJm
YTNiYTFjMWE4NzA5NTlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhhbmRsZXIuY3BwCkBAIC01Myw2ICs1Myw4IEBACiAjaW5j
bHVkZSAiU2NvcGVQb2ludGVyLmgiCiAjaW5jbHVkZSAiU2VsZWN0UG9wdXBDbGllbnQuaCIKICNp
bmNsdWRlICJTZWxlY3Rpb25IYW5kbGVyLmgiCisjaW5jbHVkZSAiU3BlbGxDaGVja2VyLmgiCisj
aW5jbHVkZSAiVGV4dENoZWNrZXJDbGllbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJXZWJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFnZV9wLmgiCkBAIC01
MTcsMTIgKzUxOSwxMjAgQEAgdm9pZCBJbnB1dEhhbmRsZXI6OmxlYXJuVGV4dCgpCiAgICAgc2Vu
ZExlYXJuVGV4dERldGFpbHModGV4dEluRmllbGQpOwogfQogCit2b2lkIElucHV0SGFuZGxlcjo6
cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiBzcGVsbENoZWNrZXIsIGNvbnN0
IFRleHRDaGVja2luZ1JlcXVlc3QmIHRleHRDaGVja2luZ1JlcXVlc3QpCit7CisgICAgVU5VU0VE
X1BBUkFNKHNwZWxsQ2hlY2tlcik7CisKKyAgICBpbnQgcmVxdWVzdExlbmd0aCA9IHRleHRDaGVj
a2luZ1JlcXVlc3QudGV4dCgpLmxlbmd0aCgpOworICAgIGlmICghcmVxdWVzdExlbmd0aCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgd2NoYXJfdCogY2hlY2tpbmdTdHJpbmcgPSAod2NoYXJfdCop
bWFsbG9jKHNpemVvZih3Y2hhcl90KSAqIChyZXF1ZXN0TGVuZ3RoICsgMSkpOworICAgIGlmICgh
Y2hlY2tpbmdTdHJpbmcpIHsKKyAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OmxvZ0Fsd2F5
cyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIklucHV0SGFuZGxlcjo6
cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcgQ2Fubm90IGFsbG9jYXRlIG1lbW9yeSBmb3Igc3RyaW5n
LiIpOworICAgICAgICBmcmVlKGNoZWNraW5nU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGludCBzdHJpbmdMZW5ndGggPSAwOworICAgIGlmICghY29udmVydFN0cmluZ1Rv
V2NoYXIodGV4dENoZWNraW5nUmVxdWVzdC50ZXh0KCksIGNoZWNraW5nU3RyaW5nLCByZXF1ZXN0
TGVuZ3RoICsgMSwgJnN0cmluZ0xlbmd0aCkpIHsKKyAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OmxvZ0Fsd2F5cyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIklu
cHV0SGFuZGxlcjo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcgRmFpbGVkIHRvIGNvbnZlcnQgU3Ry
aW5nIHRvIHdjaGFyIHR5cGUuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaW50MzJf
dCBzZXF1ZW5jZUlkID0gdGV4dENoZWNraW5nUmVxdWVzdC5zZXF1ZW5jZSgpOworICAgIGludDMy
X3QgdHJhbnNhY3Rpb25JZCA9IG1fd2ViUGFnZS0+bV9jbGllbnQtPmNoZWNrU3BlbGxpbmdPZlN0
cmluZ0FzeW5jKGNoZWNraW5nU3RyaW5nLCBzdHJpbmdMZW5ndGgpOworICAgIC8vIG1hcCB0cmFu
c2FjdGlvbklkIHRvIHNlcXVlbmNlSWQKKyAgICBtX3NlcXVlbmNlTWFwW3RyYW5zYWN0aW9uSWRd
ID0gc2VxdWVuY2VJZDsKKworICAgIC8vIElmIHRoZSBjYWxsIHRvIHRoZSBpbnB1dCBzZXJ2aWNl
IGRpZCBub3QgZ28gdGhyb3VnaCwgdGhlbiBjYW5jZWwgdGhlIHJlcXVlc3Qgc28gd2UgZG9uJ3Qg
YmxvY2sgZW5kbGVzc2x5LgorICAgIC8vIFRoaXMgc2hvdWxkIHN0aWxsIHRha2UgdHJhbnNhY3Rp
b25JZCBhcyBhIHBhcmFtZXRlciB0byBtYWludGFpbiB0aGUgc2FtZSBiZWhhdmlvciBhcyBpZiBJ
bnB1dE1ldGhvZFN1cHBvcnQKKyAgICAvLyB3ZXJlIHRvIGNhbmNlbCBhIHJlcXVlc3QgZHVyaW5n
IHByb2Nlc3NpbmcuCisgICAgaWYgKHRyYW5zYWN0aW9uSWQgPT0gLTEpIC8vIEVycm9yIGJlZm9y
ZSBzZW5kaW5nIHJlcXVlc3QgdG8gaW5wdXQgc2VydmljZS4KKyAgICAgICAgc3BlbGxDaGVja2lu
Z1JlcXVlc3RDYW5jZWxsZWQodHJhbnNhY3Rpb25JZCk7Cit9CiAKLXZvaWQgSW5wdXRIYW5kbGVy
OjpzcGVsbENoZWNraW5nUmVxdWVzdFByb2Nlc3NlZChpbnQzMl90IGlkLCBzcGFubmFibGVfc3Ry
aW5nX3QqIHNwYW5uYWJsZVN0cmluZykKK2ludDMyX3QgSW5wdXRIYW5kbGVyOjpjb252ZXJ0VHJh
bnNhY3Rpb25JZFRvU2VxdWVuY2VJZChpbnQzMl90IHRyYW5zYWN0aW9uSWQpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKGlkKTsKLSAgICBVTlVTRURfUEFSQU0oc3Bhbm5hYmxlU3RyaW5nKTsKLSAgICAv
LyBUT0RPIGltcGxlbWVudC4KKyAgICBzdGQ6Om1hcDxpbnQzMl90LCBpbnQzMl90Pjo6aXRlcmF0
b3IgaXQgPSBtX3NlcXVlbmNlTWFwLmZpbmQodHJhbnNhY3Rpb25JZCk7CisKKyAgICBpZiAoaXQg
PT0gbV9zZXF1ZW5jZU1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpbnQzMl90
IHNlcXVlbmNlSWQgPSBpdC0+c2Vjb25kOworICAgIC8vIFdlIG9ubHkgY29udmVydCB0aGlzIHZh
bHVlIHdoZW4gd2UgaGF2ZSByZWNlaXZlZCBpdHMgcmVzcG9uc2UsIHNvIGl0cyBzYWZlIHRvIHJl
bW92ZSBpdCBmcm9tIHRoZSBtYXAuCisgICAgbV9zZXF1ZW5jZU1hcC5lcmFzZShpdCk7CisKKyAg
ICByZXR1cm4gc2VxdWVuY2VJZDsKK30KKwordm9pZCBJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tp
bmdSZXF1ZXN0UHJvY2Vzc2VkKGludDMyX3QgdHJhbnNhY3Rpb25JZCwgc3Bhbm5hYmxlX3N0cmlu
Z190KiBzcGFubmFibGVTdHJpbmcpCit7CisgICAgaWYgKCFzcGFubmFibGVTdHJpbmcpIHsKKyAg
ICAgICAgc3BlbGxDaGVja2luZ1JlcXVlc3RDYW5jZWxsZWQodHJhbnNhY3Rpb25JZCwgZmFsc2Ug
LyogaXNTZXF1ZW5jZUlkICovKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFZlY3Rv
cjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CisKKyAgICAvLyBDb252ZXJ0IHRoZSBzcGFu
bmFibGVTdHJpbmcgdG8gVGV4dENoZWNraW5nUmVzdWx0IHRoZW4gYXBwZW5kIHRvIHJlc3VsdHMg
dmVjdG9yLgorICAgIFN0cmluZyByZXBsYWNlbWVudDsKKyAgICBUZXh0Q2hlY2tpbmdSZXN1bHQg
dGV4dENoZWNraW5nUmVzdWx0OworICAgIHRleHRDaGVja2luZ1Jlc3VsdC50eXBlID0gVGV4dENo
ZWNraW5nVHlwZVNwZWxsaW5nOworICAgIHRleHRDaGVja2luZ1Jlc3VsdC5yZXBsYWNlbWVudCA9
IHJlcGxhY2VtZW50OworICAgIHRleHRDaGVja2luZ1Jlc3VsdC5sb2NhdGlvbiA9IDA7CisgICAg
dGV4dENoZWNraW5nUmVzdWx0Lmxlbmd0aCA9IDA7CisKKyAgICBzcGFuX3QqIHNwYW4gPSBzcGFu
bmFibGVTdHJpbmctPnNwYW5zOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc3Bh
bm5hYmxlU3RyaW5nLT5zcGFuc19jb3VudDsgaSsrKSB7CisgICAgICAgIGlmICghc3BhbikKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoc3Bhbi0+ZW5kIDwgc3Bhbi0+c3RhcnQpIHsK
KyAgICAgICAgICAgIHNwZWxsQ2hlY2tpbmdSZXF1ZXN0Q2FuY2VsbGVkKHRyYW5zYWN0aW9uSWQs
IGZhbHNlIC8qIGlzU2VxdWVuY2VJZCAqLyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgaWYgKHNwYW4tPmF0dHJpYnV0ZXNfbWFzayAmIE1JU1NQRUxMRURfV09SRF9B
VFRSSUIpIHsKKyAgICAgICAgICAgIHRleHRDaGVja2luZ1Jlc3VsdC5sb2NhdGlvbiA9IHNwYW4t
PnN0YXJ0OworICAgICAgICAgICAgLy8gVGhlIGVuZCBwb2ludCBpbmNsdWRlcyB0aGUgY2hhcmFj
dGVyIHRoYXQgaXQgaXMgYmVmb3JlLiBJZSwgMCwgMAorICAgICAgICAgICAgLy8gYXBwbGllcyB0
byB0aGUgZmlyc3QgY2hhcmFjdGVyIGFzIHRoZSBlbmQgcG9pbnQgaW5jbHVkZXMgdGhlIGNoYXJh
Y3RlcgorICAgICAgICAgICAgLy8gYXQgdGhlIHBvc2l0aW9uLiBUaGlzIG1lYW5zIHRoZSBlbmRQ
b3NpdGlvbiBpcyBhbHdheXMgKzEuCisgICAgICAgICAgICB0ZXh0Q2hlY2tpbmdSZXN1bHQubGVu
Z3RoID0gc3Bhbi0+ZW5kIC0gc3Bhbi0+c3RhcnQgKyAxOworICAgICAgICAgICAgcmVzdWx0cy5h
cHBlbmQodGV4dENoZWNraW5nUmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICBzcGFuKys7Cisg
ICAgfQorCisgICAgLy8gdHJhbnNhY3Rpb25JZCBoZXJlIGlzIGZvciB1c2Ugd2l0aCB0aGUgaW5w
dXQgc2VydmljZS4gV2UgbmVlZCB0byB0cmFuc2xhdGUgdGhpcyB0byBzZXF1ZW5jZUlkIHVzZWQg
d2l0aCBTcGVsbENoZWNrZXIuCisgICAgaW50MzJfdCBzZXF1ZW5jZUlkID0gY29udmVydFRyYW5z
YWN0aW9uSWRUb1NlcXVlbmNlSWQodHJhbnNhY3Rpb25JZCk7CisKKyAgICBTcGVsbENoZWNrZXIq
IHNwID0gZ2V0U3BlbGxDaGVja2VyKCk7CisgICAgaWYgKCFzcCB8fCAhc2VxdWVuY2VJZCkgewor
ICAgICAgICBJbnB1dExvZyhMb2dMZXZlbFdhcm4sICJJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tp
bmdSZXF1ZXN0UHJvY2Vzc2VkIGZhaWxlZCB0byBwcm9jZXNzZWQgcmVxdWVzdCB3aXRoIHNlcXVl
bmNlSWQgJWQiLCBzZXF1ZW5jZUlkKTsKKyAgICAgICAgc3BlbGxDaGVja2luZ1JlcXVlc3RDYW5j
ZWxsZWQoc2VxdWVuY2VJZCwgdHJ1ZSAvKiBpc1NlcXVlbmNlSWQgKi8pOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIHNwLT5kaWRDaGVja1N1Y2NlZWRlZChzZXF1ZW5jZUlkLCByZXN1bHRz
KTsKK30KKwordm9pZCBJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tpbmdSZXF1ZXN0Q2FuY2VsbGVk
KGludDMyX3QgaWQsIGJvb2wgaXNTZXF1ZW5jZUlkKQoreworICAgIGludDMyX3Qgc2VxdWVuY2VJ
ZCA9IGlzU2VxdWVuY2VJZCA/IGlkIDogY29udmVydFRyYW5zYWN0aW9uSWRUb1NlcXVlbmNlSWQo
aWQpOworICAgIFNwZWxsQ2hlY2tlciogc3AgPSBnZXRTcGVsbENoZWNrZXIoKTsKKyAgICBpZiAo
IXNwKSB7CisgICAgICAgIElucHV0TG9nKExvZ0xldmVsV2FybiwgIklucHV0SGFuZGxlcjo6c3Bl
bGxDaGVja2luZ1JlcXVlc3RDYW5jZWxsZWQgZmFpbGVkIHRvIGNhbmNlbCB0aGUgcmVxdWVzdCB3
aXRoIHNlcXVlbmNlSWQgJWQiLCBzZXF1ZW5jZUlkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBzcC0+ZGlkQ2hlY2tDYW5jZWxlZChzZXF1ZW5jZUlkKTsKK30KKworU3BlbGxDaGVja2Vy
KiBJbnB1dEhhbmRsZXI6OmdldFNwZWxsQ2hlY2tlcigpCit7CisgICAgRnJhbWUqIGZyYW1lID0g
bV9jdXJyZW50Rm9jdXNFbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgIGlmIChmcmFt
ZSkgeworICAgICAgICBFZGl0b3IqIGVkaXRvciA9IGZyYW1lLT5lZGl0b3IoKTsKKyAgICAgICAg
aWYgKGVkaXRvcikKKyAgICAgICAgICAgIHJldHVybiBlZGl0b3ItPnNwZWxsQ2hlY2tlcigpOwor
ICAgIH0KKyAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBJbnB1dEhhbmRsZXI6OnNldEVsZW1lbnRV
bmZvY3VzZWQoYm9vbCByZWZvY3VzT2NjdXJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5oCmluZGV4IGVjOTE2ZjgyNDZi
NjQzZDEwNzFiZjkzZTMyNDU5NWI0MTEwZWM2NGIuLjIzMzQzY2UwODA2MzU0OTY2NzM4YTg0ZDc2
NWM1NThlNTg4MjU2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJL
aXRTdXBwb3J0L0lucHV0SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5oCkBAIC0yMiw3ICsyMiw3IEBACiAjaW5jbHVkZSA8
QmxhY2tCZXJyeVBsYXRmb3JtSW5wdXRFdmVudHMuaD4KIAogI2luY2x1ZGUgPGltZi9pbnB1dF9k
YXRhLmg+Ci0KKyNpbmNsdWRlIDxtYXA+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKQEAgLTM3LDYgKzM3LDggQEAgY2xhc3MgSFRNTElucHV0RWxlbWVudDsKIGNs
YXNzIEhUTUxTZWxlY3RFbGVtZW50OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIE5vZGU7CitjbGFz
cyBTcGVsbENoZWNrZXI7CitjbGFzcyBUZXh0Q2hlY2tpbmdSZXF1ZXN0OwogfQogCiBuYW1lc3Bh
Y2UgQmxhY2tCZXJyeSB7CkBAIC0xMjEsNyArMTIzLDkgQEAgcHVibGljOgogICAgIGludDMyX3Qg
c2V0Q29tcG9zaW5nVGV4dChzcGFubmFibGVfc3RyaW5nX3QqLCBpbnQzMl90IHJlbGF0aXZlQ3Vy
c29yUG9zaXRpb24pOwogICAgIGludDMyX3QgY29tbWl0VGV4dChzcGFubmFibGVfc3RyaW5nX3Qq
LCBpbnQzMl90IHJlbGF0aXZlQ3Vyc29yUG9zaXRpb24pOwogCi0gICAgdm9pZCBzcGVsbENoZWNr
aW5nUmVxdWVzdFByb2Nlc3NlZChpbnQzMl90IGlkLCBzcGFubmFibGVfc3RyaW5nX3QqKTsKKyAg
ICB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGNv
bnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1JlcXVlc3QmKTsKKyAgICB2b2lkIHNwZWxsQ2hlY2tp
bmdSZXF1ZXN0UHJvY2Vzc2VkKGludDMyX3QgdHJhbnNhY3Rpb25JZCwgc3Bhbm5hYmxlX3N0cmlu
Z190Kik7CisgICAgdm9pZCBzcGVsbENoZWNraW5nUmVxdWVzdENhbmNlbGxlZChpbnQzMl90IGlk
LCBib29sIGlzU2VxdWVuY2VJZCA9IGZhbHNlKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIFBlbmRp
bmdLZXlib2FyZFN0YXRlQ2hhbmdlIHsgTm9DaGFuZ2UsIFZpc2libGUsIE5vdFZpc2libGUgfTsK
QEAgLTE3OCw2ICsxODIsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBsZWFyblRleHQoKTsKICAg
ICB2b2lkIHNlbmRMZWFyblRleHREZXRhaWxzKGNvbnN0IFdURjo6U3RyaW5nJik7CisgICAgaW50
MzJfdCBjb252ZXJ0VHJhbnNhY3Rpb25JZFRvU2VxdWVuY2VJZChpbnQzMl90IHRyYW5zYWN0aW9u
SWQpOworICAgIFdlYkNvcmU6OlNwZWxsQ2hlY2tlciogZ2V0U3BlbGxDaGVja2VyKCk7CiAKICAg
ICBXZWJQYWdlUHJpdmF0ZSogbV93ZWJQYWdlOwogCkBAIC0xOTUsNiArMjAxLDggQEAgcHJpdmF0
ZToKIAogICAgIFBlbmRpbmdLZXlib2FyZFN0YXRlQ2hhbmdlIG1fcGVuZGluZ0tleWJvYXJkVmlz
aWJpbGl0eUNoYW5nZTsKICAgICBib29sIG1fZGVsYXlLZXlib2FyZFZpc2liaWxpdHlDaGFuZ2U7
CisKKyAgICBzdGQ6Om1hcDxpbnQzMl90LCBpbnQzMl90PiBtX3NlcXVlbmNlTWFwOwogfTsKIAog
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154355</attachid>
            <date>2012-07-25 08:00:50 -0700</date>
            <delta_ts>2012-07-26 11:50:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92160-20120725105611.patch</filename>
            <type>text/plain</type>
            <size>18193</size>
            <attacher name="Nima Ghanavatian">nima.ghanavatian</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzAzOTkwYzU3ZDY1MzZj
NTU1ZjY2ZmJjYjNmNTAwYmNjNjYwZDQ4MC4uNDdiYTQzYWUwNDdjNjdiOWQ0MmI2OGU4MWQ3NDM4
NGExM2M2YzUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA3LTI0ICBOaW1h
IEdoYW5hdmF0aWFuICA8bmdoYW5hdmF0aWFuQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVy
cnldIFN1cHBvcnQgYXN5bmMgc3BlbGxjaGVjayBmb3IgdGhlIGJsYWNrYmVycnkgcG9ydAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIxNjAKKworICAg
ICAgICAyMDEyLTA3LTI0ICBOaW1hIEdoYW5hdmF0aWFuICA8bmdoYW5hdmF0aWFuQHJpbS5jb20+
CisKKyAgICAgICAgU2V0IFVTRV9VTklGSUVEX1RFWFRfQ0hFQ0tJTkcgZm9yIFBMQVRGT1JNKEJM
QUNLQkVSUlkpIHRvIHVzZSB0aGUKKyAgICAgICAgYXN5bmNocm9ub3VzIHNwZWxsY2hlY2tpbmcg
Y29kZSBwYXRoLgorCisgICAgICAgIEludGVybmFsbHkgcmV2aWV3ZWQgYnkgTWlrZSBGZW50b24u
CisKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisKIDIwMTItMDctMTAgIEpvc2h1YSBOZXR0ZXJmaWVsZCAgPGpuZXR0ZXJmaWVsZEBy
aW0uY29tPgogICAgICAgICBNYWtlIEdDM0QgYW5kIEUzRCBtb3JlIG1haW50YWluYWJsZSBmb3Ig
R0xFUyBwbGF0Zm9ybXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkwNTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCA4Y2E5ZjYwNmQ2
ZWY2MjY0MDI0Yzg4NDZkNTRkNDkyZjM4NTk4ZmI0Li5lMWFmZGNkN2RkN2Y5MWFiNzA5NmM1ZDBl
MDYzYjJhMzVjNTZmZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0NCBAQAorMjAxMi0wNy0yNCAgTmltYSBHaGFuYXZhdGlhbiAgPG5naGFuYXZhdGlhbkByaW0u
Y29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBTdXBwb3J0IGFzeW5jIHNwZWxsY2hlY2sgZm9y
IHRoZSBibGFja2JlcnJ5IHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkyMTYwCisKKyAgICAgICAgMjAxMi0wNy0yNCAgTmltYSBHaGFuYXZhdGlh
biAgPG5naGFuYXZhdGlhbkByaW0uY29tPgorCisgICAgICAgIFBSMTI0NTE3CisgICAgICAgIElt
cGxlbWVudGluZyBzdXBwb3J0IGZvciBhc3luYyBzcGVsbGNoZWNrLgorCisgICAgICAgIEludGVy
bmFsbHkgcmV2aWV3ZWQgYnkgTWlrZSBGZW50b24uCisKKyAgICAgICAgKiBBcGkvV2ViUGFnZS5j
cHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2U6OnNwZWxsQ2hlY2tpbmdS
ZXF1ZXN0Q2FuY2VsbGVkKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChCbGFja0JlcnJ5
OjpXZWJLaXQ6OldlYlBhZ2U6OnNwZWxsQ2hlY2tpbmdSZXF1ZXN0UHJvY2Vzc2VkKToKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OmRpZENoYW5nZVNldHRpbmdz
KToKKyAgICAgICAgKiBBcGkvV2ViUGFnZS5oOgorICAgICAgICAqIEFwaS9XZWJTZXR0aW5ncy5j
cHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJT
ZXR0aW5nczo6c3RhbmRhcmRTZXR0aW5ncyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OldlYlNldHRpbmdzOjppc0FzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKToKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViU2V0dGluZ3M6OnNldEFzeW5jaHJvbm91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKToKKyAgICAgICAgKiBBcGkvV2ViU2V0dGluZ3MuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVxdWVz
dENoZWNraW5nT2ZTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tC
ZXJyeTo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEJsYWNrQmVycnkuaDoKKyAgICAgICAgKEVkaXRvckNsaWVudEJsYWNrQmVycnkp
OgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNwcDoKKyAgICAgICAgKEJs
YWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6
CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6Y29udmVydFRyYW5z
YWN0aW9uSWRUb1NlcXVlbmNlSWQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEJsYWNr
QmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpzcGVsbENoZWNraW5nUmVxdWVzdFByb2Nlc3Nl
ZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c3BlbGxDaGVj
a2luZ1JlcXVlc3RDYW5jZWxsZWQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1
dEhhbmRsZXI6OmdldFNwZWxsQ2hlY2tlcik6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9JbnB1
dEhhbmRsZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5wdXRIYW5kbGVyKToK
KwogMjAxMi0wNy0yMCAgSmFja3kgSmlhbmcgIDx6aGFqaWFuZ0ByaW0uY29tPgogCiAgICAgICAg
IFtCbGFja0JlcnJ5XSBjbG9ja19nZXR0aW1lKCkgaW4gQmFja2luZ1N0b3JlLmNwcCBzaG91bGQg
dXNlIENMT0NLX01PTk9UT05JQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0Q2hlY2tpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENo
ZWNraW5nLmgKaW5kZXggYmU5ZWQ1ZjllODVmY2RlODAxMTY4YzMzOTNlZmQ0OTUxODc2ZGMxMy4u
ZDY1NjdhOGFjMzJkOTEwNTZkZTVlZDA1MGI0OWE3ZjQ3MmQyNjhiZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oCkBAIC0zNyw4ICszNywxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICNkZWZpbmUgV1RGX1VTRV9HUkFNTUFSX0NIRUNLSU5HIDEKIAot
I2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyNpZiBQ
TEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpIHx8IFBMQVRGT1JN
KEJMQUNLQkVSUlkpCiAjZGVmaW5lIFdURl9VU0VfVU5JRklFRF9URVhUX0NIRUNLSU5HIDEKKyNl
bmRpZgorI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkK
ICNkZWZpbmUgV1RGX1VTRV9BVVRPTUFUSUNfVEVYVF9SRVBMQUNFTUVOVCAxCiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKaW5kZXggNDc4MGY2YmY5Y2Q3
OWRkMWMxOWIzNzA0M2JkM2E1MmQ5ZjhhYmYwNi4uMWQ4YTAzNzc1YWE1MzEwMjBiNDA2ZDJhMGVl
MjExNGQ5MDg3MGUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3Bw
CkBAIC00NzE5LDkgKzQ3MTksMTQgQEAgdm9pZCBXZWJQYWdlOjpzZXRTcGVsbENoZWNraW5nRW5h
YmxlZChib29sIGVuYWJsZWQpCiAgICAgc3RhdGljX2Nhc3Q8RWRpdG9yQ2xpZW50QmxhY2tCZXJy
eSo+KGQtPm1fcGFnZS0+ZWRpdG9yQ2xpZW50KCkpLT5lbmFibGVTcGVsbENoZWNraW5nKGVuYWJs
ZWQpOwogfQogCi12b2lkIFdlYlBhZ2U6OnNwZWxsQ2hlY2tpbmdSZXF1ZXN0UHJvY2Vzc2VkKGlu
dDMyX3QgaWQsIHNwYW5uYWJsZV9zdHJpbmdfdCogc3Bhbm5hYmxlU3RyaW5nKQordm9pZCBXZWJQ
YWdlOjpzcGVsbENoZWNraW5nUmVxdWVzdENhbmNlbGxlZChpbnQzMl90IHRyYW5zYWN0aW9uSWQp
CiB7Ci0gICAgZC0+bV9pbnB1dEhhbmRsZXItPnNwZWxsQ2hlY2tpbmdSZXF1ZXN0UHJvY2Vzc2Vk
KGlkLCBzcGFubmFibGVTdHJpbmcpOworICAgIGQtPm1faW5wdXRIYW5kbGVyLT5zcGVsbENoZWNr
aW5nUmVxdWVzdENhbmNlbGxlZCh0cmFuc2FjdGlvbklkKTsKK30KKwordm9pZCBXZWJQYWdlOjpz
cGVsbENoZWNraW5nUmVxdWVzdFByb2Nlc3NlZChpbnQzMl90IHRyYW5zYWN0aW9uSWQsIHNwYW5u
YWJsZV9zdHJpbmdfdCogc3Bhbm5hYmxlU3RyaW5nKQoreworICAgIGQtPm1faW5wdXRIYW5kbGVy
LT5zcGVsbENoZWNraW5nUmVxdWVzdFByb2Nlc3NlZCh0cmFuc2FjdGlvbklkLCBzcGFubmFibGVT
dHJpbmcpOwogfQogCiBjbGFzcyBEZWZlcnJlZFRhc2tTZWxlY3Rpb25DYW5jZWxsZWQ6IHB1Ymxp
YyBEZWZlcnJlZFRhc2s8JldlYlBhZ2VQcml2YXRlOjptX3dvdWxkQ2FuY2VsU2VsZWN0aW9uPiB7
CkBAIC02NTYyLDYgKzY1NjcsNyBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpkaWRDaGFuZ2VTZXR0
aW5ncyhXZWJTZXR0aW5ncyogd2ViU2V0dGluZ3MpCiAgICAgY29yZVNldHRpbmdzLT5zZXREZWZh
dWx0VGV4dEVuY29kaW5nTmFtZSh3ZWJTZXR0aW5ncy0+ZGVmYXVsdFRleHRFbmNvZGluZ05hbWUo
KS5pbXBsKCkpOwogICAgIGNvcmVTZXR0aW5ncy0+c2V0RG93bmxvYWRhYmxlQmluYXJ5Rm9udHNF
bmFibGVkKHdlYlNldHRpbmdzLT5kb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQoKSk7CiAg
ICAgY29yZVNldHRpbmdzLT5zZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQobV93ZWJTZXR0aW5n
cy0+aXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoKSk7CisgICAgY29yZVNldHRpbmdzLT5zZXRB
c3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChtX3dlYlNldHRpbmdzLT5pc0FzeW5jaHJv
bm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpOwogCiAgICAgV2ViU3RyaW5nIHN0eWxlc2hlZXRV
UkwgPSB3ZWJTZXR0aW5ncy0+dXNlclN0eWxlU2hlZXRTdHJpbmcoKTsKICAgICBpZiAoc3R5bGVz
aGVldFVSTC5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5oCmlu
ZGV4IDI4NWY5YzRkMjViNjczOGYxODZiMWY3NGYwMzU0YmVlOWViMDJmMDYuLjQ5YzBmZDg5YTMz
ZTE5NTdhNDI3YjcyZWZmZTlmMDhkYjE4Y2Q3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9B
cGkvV2ViUGFnZS5oCkBAIC0yNTUsNyArMjU1LDggQEAgcHVibGljOgogICAgIGludDMyX3QgY29t
bWl0VGV4dChzcGFubmFibGVfc3RyaW5nX3QqLCBpbnQzMl90IHJlbGF0aXZlQ3Vyc29yUG9zaXRp
b24pOwogCiAgICAgdm9pZCBzZXRTcGVsbENoZWNraW5nRW5hYmxlZChib29sKTsKLSAgICB2b2lk
IHNwZWxsQ2hlY2tpbmdSZXF1ZXN0UHJvY2Vzc2VkKGludDMyX3QgaWQsIHNwYW5uYWJsZV9zdHJp
bmdfdCopOworICAgIHZvaWQgc3BlbGxDaGVja2luZ1JlcXVlc3RQcm9jZXNzZWQoaW50MzJfdCB0
cmFuc2FjdGlvbklkLCBzcGFubmFibGVfc3RyaW5nX3QqKTsKKyAgICB2b2lkIHNwZWxsQ2hlY2tp
bmdSZXF1ZXN0Q2FuY2VsbGVkKGludDMyX3QgdHJhbnNhY3Rpb25JZCk7CiAKICAgICB2b2lkIHNl
dFNlbGVjdGlvbihjb25zdCBQbGF0Zm9ybTo6SW50UG9pbnQmIHN0YXJ0UG9pbnQsIGNvbnN0IFBs
YXRmb3JtOjpJbnRQb2ludCYgZW5kUG9pbnQpOwogICAgIHZvaWQgc2V0Q2FyZXRQb3NpdGlvbihj
b25zdCBQbGF0Zm9ybTo6SW50UG9pbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9BcGkvV2ViU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0Fw
aS9XZWJTZXR0aW5ncy5jcHAKaW5kZXggMjNiMjM5Y2QzZTkxMTU4Yzc1YjFkNWMzMDdlOTA5ZmU1
MjMzYTAyNi4uNzg4MWM0Njc0NzIxNjJjYmE1MGFmZjYyMmRkODhmZjA5NjVkNGFmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJTZXR0aW5ncy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJTZXR0aW5ncy5jcHAKQEAgLTM4LDYgKzM4
LDcgQEAgbmFtZXNwYWNlIEJsYWNrQmVycnkgewogbmFtZXNwYWNlIFdlYktpdCB7CiAKIERFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBCbGFja0JlcnJ5QWxsb3dDcm9zc1NpdGVSZXF1ZXN0cywg
KCJCbGFja0JlcnJ5QWxsb3dDcm9zc1NpdGVSZXF1ZXN0cyIpKTsKK0RFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBCbGFja0JlcnJ5QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZywgKCJCbGFja0Jl
cnJ5QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZyIpKTsKIERFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCBCbGFja0JlcnJ5QmFja2dyb3VuZENvbG9yLCAoIkJsYWNrQmVycnlCYWNrZ3JvdW5kQ29s
b3IiKSk7CiBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgQmxhY2tCZXJyeUNvb2tpZXNFbmFi
bGVkLCAoIkJsYWNrQmVycnlDb29raWVzRW5hYmxlZCIpKTsKIERFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBCbGFja0JlcnJ5RGlyZWN0UmVuZGVyaW5nVG9XaW5kb3dFbmFibGVkLCAoIkJsYWNr
QmVycnlEaXJlY3RSZW5kZXJpbmdUb1dpbmRvd0VuYWJsZWQiKSk7CkBAIC0xNzksNiArMTgwLDcg
QEAgV2ViU2V0dGluZ3MqIFdlYlNldHRpbmdzOjpzdGFuZGFyZFNldHRpbmdzKCkKICAgICBzZXR0
aW5ncy0+bV9wcml2YXRlLT5zZXRCb29sZWFuKEJsYWNrQmVycnlGaWxlU3lzdGVtQVBJU2FuZGJv
eGVkLCB0cnVlKTsKICAgICBzZXR0aW5ncy0+bV9wcml2YXRlLT5zZXRCb29sZWFuKEJsYWNrQmVy
cnlDcmVkZW50aWFsQXV0b2ZpbGxFbmFibGVkLCBmYWxzZSk7CiAgICAgc2V0dGluZ3MtPm1fcHJp
dmF0ZS0+c2V0Qm9vbGVhbihCbGFja0JlcnJ5Rm9ybUF1dG9maWxsRW5hYmxlZCwgZmFsc2UpOwor
ICAgIHNldHRpbmdzLT5tX3ByaXZhdGUtPnNldEJvb2xlYW4oQmxhY2tCZXJyeUFzeW5jaHJvbm91
c1NwZWxsQ2hlY2tpbmcsIHRydWUpOwogCiAgICAgaWYgKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpE
ZXZpY2VJbmZvOjppbnN0YW5jZSgpLT5pc01vYmlsZSgpKSB7CiAgICAgICAgIFdlYkNvcmU6OkZs
b2F0U2l6ZSBjdXJyZW50UFBJID0gUGxhdGZvcm06OkdyYXBoaWNzOjpTY3JlZW46OnByaW1hcnlT
Y3JlZW4oKS0+cGl4ZWxzUGVySW5jaCgtMSk7CkBAIC04MDksNiArODExLDE2IEBAIHZvaWQgV2Vi
U2V0dGluZ3M6OnNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChib29sIGVuYWJsZSkKICAgICBt
X3ByaXZhdGUtPnNldEJvb2xlYW4oU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkLCBlbmFibGUpOwog
fQogCitib29sIFdlYlNldHRpbmdzOjppc0FzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5nZXRCb29sZWFuKEJsYWNrQmVycnlB
c3luY2hyb25vdXNTcGVsbENoZWNraW5nKTsKK30KKwordm9pZCBXZWJTZXR0aW5nczo6c2V0QXN5
bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCBlbmFibGUpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcHJpdmF0ZS0+c2V0Qm9vbGVhbihCbGFja0JlcnJ5QXN5bmNocm9ub3VzU3BlbGxD
aGVja2luZywgZW5hYmxlKTsKK30KKwogYm9vbCBXZWJTZXR0aW5nczo6ZnVsbFNjcmVlblZpZGVv
Q2FwYWJsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Z2V0Qm9vbGVhbihCbGFj
a0JlcnJ5RnVsbFNjcmVlblZpZGVvQ2FwYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL1dlYlNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYlNldHRpbmdzLmgKaW5kZXggNzc1NWY4MzM2NDA2Y2E1ZDgzOGZjZmZiYzM2OGM2NjJi
MzQ0OWFjMS4uYTRhMDVlYjMxZGVkMzJmY2YyMDUwNDY1MTQwNTQzMmJmOTdkOTU4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJTZXR0aW5ncy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViU2V0dGluZ3MuaApAQCAtMjI4LDYgKzIyOCw5
IEBAIHB1YmxpYzoKICAgICBib29sIGlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoYm9vbCk7CiAKKyAgICBib29s
IGlzQXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkIHNl
dEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpIGNvbnN0OworCiAgICAgYm9v
bCBmdWxsU2NyZWVuVmlkZW9DYXBhYmxlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRGdWxsU2NyZWVu
VmlkZW9DYXBhYmxlKGJvb2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAK
aW5kZXggNzhmMDQ1YTg2NjFiMjVmMjI0MWZlZjJhNzJkYjkxZDk5MzgwMmNjOC4uNzVkYmE2MmFm
YjNmMDMwNjc0MjgxZmUxMmQwNWY5ZDljNzczNGYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRC
bGFja0JlcnJ5LmNwcApAQCAtNTY1LDcgKzU2NSwxMiBAQCB2b2lkIEVkaXRvckNsaWVudEJsYWNr
QmVycnk6OmNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50LCBXVEY6OlZlY3Rv
cgogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJy
eTo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwgY29uc3QgVGV4dENoZWNr
aW5nUmVxdWVzdCYpCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnJlcXVlc3RDaGVja2lu
Z09mU3RyaW5nKFNwZWxsQ2hlY2tlciogc3BlbGxDaGVja2VyLCBjb25zdCBUZXh0Q2hlY2tpbmdS
ZXF1ZXN0JiB0ZXh0Q2hlY2tpbmdSZXF1ZXN0KQoreworICAgIG1fd2ViUGFnZVByaXZhdGUtPm1f
aW5wdXRIYW5kbGVyLT5yZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhzcGVsbENoZWNrZXIsIHRleHRD
aGVja2luZ1JlcXVlc3QpOworfQorCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNoZWNr
VGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiwgaW50LCBUZXh0Q2hlY2tpbmdUeXBlTWFzaywg
VmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50QmxhY2tCZXJyeS5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuaAppbmRleCA0ODYxNzZiMGQxODU4MzU5YmM1
YWUxNDIzNDQxNmE0MzMxM2IyMGU4Li5mZGYwZDFmMDBhZjUyYmYxZTc3NTgwZjg3ZDE4YzUyNDli
ZjBlMTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmgKQEAgLTg1LDYgKzg1LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBV
Q2hhciosIGludCwgVmVjdG9yPEdyYW1tYXJEZXRhaWwsIDB1PiYsIGludCosIGludCopOwogICAg
IHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBWZWN0b3I8U3RyaW5nPiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdP
ZlN0cmluZyhTcGVsbENoZWNrZXIqLCBjb25zdCBUZXh0Q2hlY2tpbmdSZXF1ZXN0Jik7CisgICAg
dmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiwgaW50LCBUZXh0
Q2hlY2tpbmdUeXBlTWFzaywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKTsKIAogICAgIHZp
cnR1YWwgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCk7CiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBH
cmFtbWFyRGV0YWlsJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
S2l0U3VwcG9ydC9JbnB1dEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNwcAppbmRleCBlZWJmNzgyZjNjN2VjMzI3ODBhNmM3
NmFmNDA1NmU3NmI3YzhjMGQ0Li4xZDc2MjVjNjc2ZGE2NjAxYjBiMjZhNjYyOTE4YmI2YWM5ODll
OGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9J
bnB1dEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBw
b3J0L0lucHV0SGFuZGxlci5jcHAKQEAgLTUzLDYgKzUzLDggQEAKICNpbmNsdWRlICJTY29wZVBv
aW50ZXIuaCIKICNpbmNsdWRlICJTZWxlY3RQb3B1cENsaWVudC5oIgogI2luY2x1ZGUgIlNlbGVj
dGlvbkhhbmRsZXIuaCIKKyNpbmNsdWRlICJTcGVsbENoZWNrZXIuaCIKKyNpbmNsdWRlICJUZXh0
Q2hlY2tlckNsaWVudC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIldl
YlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJXZWJQYWdlX3AuaCIKQEAgLTUxNywxMiArNTE5LDEx
OCBAQCB2b2lkIElucHV0SGFuZGxlcjo6bGVhcm5UZXh0KCkKICAgICBzZW5kTGVhcm5UZXh0RGV0
YWlscyh0ZXh0SW5GaWVsZCk7CiB9CiAKK3ZvaWQgSW5wdXRIYW5kbGVyOjpyZXF1ZXN0Q2hlY2tp
bmdPZlN0cmluZyhTcGVsbENoZWNrZXIqIHNwZWxsQ2hlY2tlciwgY29uc3QgVGV4dENoZWNraW5n
UmVxdWVzdCYgdGV4dENoZWNraW5nUmVxdWVzdCkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3BlbGxD
aGVja2VyKTsKKworICAgIGludCByZXF1ZXN0TGVuZ3RoID0gdGV4dENoZWNraW5nUmVxdWVzdC50
ZXh0KCkubGVuZ3RoKCk7CisgICAgaWYgKCFyZXF1ZXN0TGVuZ3RoKQorICAgICAgICByZXR1cm47
CisKKyAgICB3Y2hhcl90KiBjaGVja2luZ1N0cmluZyA9ICh3Y2hhcl90KiltYWxsb2Moc2l6ZW9m
KHdjaGFyX3QpICogKHJlcXVlc3RMZW5ndGggKyAxKSk7CisgICAgaWYgKCFjaGVja2luZ1N0cmlu
ZykgeworICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6bG9nQWx3YXlzKEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiSW5wdXRIYW5kbGVyOjpyZXF1ZXN0Q2hlY2tp
bmdPZlN0cmluZyBDYW5ub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBzdHJpbmcuIik7CisgICAgICAg
IGZyZWUoY2hlY2tpbmdTdHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50
IHN0cmluZ0xlbmd0aCA9IDA7CisgICAgaWYgKCFjb252ZXJ0U3RyaW5nVG9XY2hhcih0ZXh0Q2hl
Y2tpbmdSZXF1ZXN0LnRleHQoKSwgY2hlY2tpbmdTdHJpbmcsIHJlcXVlc3RMZW5ndGggKyAxLCAm
c3RyaW5nTGVuZ3RoKSkgeworICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6bG9nQWx3YXlz
KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiSW5wdXRIYW5kbGVyOjpy
ZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyBGYWlsZWQgdG8gY29udmVydCBTdHJpbmcgdG8gd2NoYXIg
dHlwZS4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpbnQzMl90IHNlcXVlbmNlSWQg
PSB0ZXh0Q2hlY2tpbmdSZXF1ZXN0LnNlcXVlbmNlKCk7CisgICAgaW50MzJfdCB0cmFuc2FjdGlv
bklkID0gbV93ZWJQYWdlLT5tX2NsaWVudC0+Y2hlY2tTcGVsbGluZ09mU3RyaW5nQXN5bmMoY2hl
Y2tpbmdTdHJpbmcsIHN0cmluZ0xlbmd0aCk7CisgICAgLy8gbWFwIHRyYW5zYWN0aW9uSWQgdG8g
c2VxdWVuY2VJZAorICAgIG1fc2VxdWVuY2VNYXBbdHJhbnNhY3Rpb25JZF0gPSBzZXF1ZW5jZUlk
OworCisgICAgLy8gSWYgdGhlIGNhbGwgdG8gdGhlIGlucHV0IHNlcnZpY2UgZGlkIG5vdCBnbyB0
aHJvdWdoLCB0aGVuIGNhbmNlbCB0aGUgcmVxdWVzdCBzbyB3ZSBkb24ndCBibG9jayBlbmRsZXNz
bHkuCisgICAgLy8gVGhpcyBzaG91bGQgc3RpbGwgdGFrZSB0cmFuc2FjdGlvbklkIGFzIGEgcGFy
YW1ldGVyIHRvIG1haW50YWluIHRoZSBzYW1lIGJlaGF2aW9yIGFzIGlmIElucHV0TWV0aG9kU3Vw
cG9ydAorICAgIC8vIHdlcmUgdG8gY2FuY2VsIGEgcmVxdWVzdCBkdXJpbmcgcHJvY2Vzc2luZy4K
KyAgICBpZiAodHJhbnNhY3Rpb25JZCA9PSAtMSkgLy8gRXJyb3IgYmVmb3JlIHNlbmRpbmcgcmVx
dWVzdCB0byBpbnB1dCBzZXJ2aWNlLgorICAgICAgICBzcGVsbENoZWNraW5nUmVxdWVzdENhbmNl
bGxlZCh0cmFuc2FjdGlvbklkKTsKK30KKworaW50MzJfdCBJbnB1dEhhbmRsZXI6OmNvbnZlcnRU
cmFuc2FjdGlvbklkVG9TZXF1ZW5jZUlkKGludDMyX3QgdHJhbnNhY3Rpb25JZCkKK3sKKyAgICBz
dGQ6Om1hcDxpbnQzMl90LCBpbnQzMl90Pjo6aXRlcmF0b3IgaXQgPSBtX3NlcXVlbmNlTWFwLmZp
bmQodHJhbnNhY3Rpb25JZCk7CisKKyAgICBpZiAoaXQgPT0gbV9zZXF1ZW5jZU1hcC5lbmQoKSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpbnQzMl90IHNlcXVlbmNlSWQgPSBpdC0+c2Vjb25k
OworICAgIC8vIFdlIG9ubHkgY29udmVydCB0aGlzIHZhbHVlIHdoZW4gd2UgaGF2ZSByZWNlaXZl
ZCBpdHMgcmVzcG9uc2UsIHNvIGl0cyBzYWZlIHRvIHJlbW92ZSBpdCBmcm9tIHRoZSBtYXAuCisg
ICAgbV9zZXF1ZW5jZU1hcC5lcmFzZShpdCk7CisKKyAgICByZXR1cm4gc2VxdWVuY2VJZDsKK30K
Kwordm9pZCBJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tpbmdSZXF1ZXN0UHJvY2Vzc2VkKGludDMy
X3QgdHJhbnNhY3Rpb25JZCwgc3Bhbm5hYmxlX3N0cmluZ190KiBzcGFubmFibGVTdHJpbmcpCit7
CisgICAgaWYgKCFzcGFubmFibGVTdHJpbmcpIHsKKyAgICAgICAgc3BlbGxDaGVja2luZ1JlcXVl
c3RDYW5jZWxsZWQodHJhbnNhY3Rpb25JZCwgZmFsc2UgLyogaXNTZXF1ZW5jZUlkICovKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KIAotdm9pZCBJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tpbmdS
ZXF1ZXN0UHJvY2Vzc2VkKGludDMyX3QgaWQsIHNwYW5uYWJsZV9zdHJpbmdfdCogc3Bhbm5hYmxl
U3RyaW5nKQorICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CisKKyAgICAv
LyBDb252ZXJ0IHRoZSBzcGFubmFibGVTdHJpbmcgdG8gVGV4dENoZWNraW5nUmVzdWx0IHRoZW4g
YXBwZW5kIHRvIHJlc3VsdHMgdmVjdG9yLgorICAgIFN0cmluZyByZXBsYWNlbWVudDsKKyAgICBU
ZXh0Q2hlY2tpbmdSZXN1bHQgdGV4dENoZWNraW5nUmVzdWx0OworICAgIHRleHRDaGVja2luZ1Jl
c3VsdC50eXBlID0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOworICAgIHRleHRDaGVja2luZ1Jl
c3VsdC5yZXBsYWNlbWVudCA9IHJlcGxhY2VtZW50OworICAgIHRleHRDaGVja2luZ1Jlc3VsdC5s
b2NhdGlvbiA9IDA7CisgICAgdGV4dENoZWNraW5nUmVzdWx0Lmxlbmd0aCA9IDA7CisKKyAgICBz
cGFuX3QqIHNwYW4gPSBzcGFubmFibGVTdHJpbmctPnNwYW5zOworICAgIGZvciAodW5zaWduZWQg
aW50IGkgPSAwOyBpIDwgc3Bhbm5hYmxlU3RyaW5nLT5zcGFuc19jb3VudDsgaSsrKSB7CisgICAg
ICAgIGlmICghc3BhbikKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoc3Bhbi0+ZW5k
IDwgc3Bhbi0+c3RhcnQpIHsKKyAgICAgICAgICAgIHNwZWxsQ2hlY2tpbmdSZXF1ZXN0Q2FuY2Vs
bGVkKHRyYW5zYWN0aW9uSWQsIGZhbHNlIC8qIGlzU2VxdWVuY2VJZCAqLyk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNwYW4tPmF0dHJpYnV0ZXNfbWFzayAm
IE1JU1NQRUxMRURfV09SRF9BVFRSSUIpIHsKKyAgICAgICAgICAgIHRleHRDaGVja2luZ1Jlc3Vs
dC5sb2NhdGlvbiA9IHNwYW4tPnN0YXJ0OworICAgICAgICAgICAgLy8gVGhlIGVuZCBwb2ludCBp
bmNsdWRlcyB0aGUgY2hhcmFjdGVyIHRoYXQgaXQgaXMgYmVmb3JlLiBJZSwgMCwgMAorICAgICAg
ICAgICAgLy8gYXBwbGllcyB0byB0aGUgZmlyc3QgY2hhcmFjdGVyIGFzIHRoZSBlbmQgcG9pbnQg
aW5jbHVkZXMgdGhlIGNoYXJhY3RlcgorICAgICAgICAgICAgLy8gYXQgdGhlIHBvc2l0aW9uLiBU
aGlzIG1lYW5zIHRoZSBlbmRQb3NpdGlvbiBpcyBhbHdheXMgKzEuCisgICAgICAgICAgICB0ZXh0
Q2hlY2tpbmdSZXN1bHQubGVuZ3RoID0gc3Bhbi0+ZW5kIC0gc3Bhbi0+c3RhcnQgKyAxOworICAg
ICAgICAgICAgcmVzdWx0cy5hcHBlbmQodGV4dENoZWNraW5nUmVzdWx0KTsKKyAgICAgICAgfQor
ICAgICAgICBzcGFuKys7CisgICAgfQorCisgICAgLy8gdHJhbnNhY3Rpb25JZCBoZXJlIGlzIGZv
ciB1c2Ugd2l0aCB0aGUgaW5wdXQgc2VydmljZS4gV2UgbmVlZCB0byB0cmFuc2xhdGUgdGhpcyB0
byBzZXF1ZW5jZUlkIHVzZWQgd2l0aCBTcGVsbENoZWNrZXIuCisgICAgaW50MzJfdCBzZXF1ZW5j
ZUlkID0gY29udmVydFRyYW5zYWN0aW9uSWRUb1NlcXVlbmNlSWQodHJhbnNhY3Rpb25JZCk7CisK
KyAgICBTcGVsbENoZWNrZXIqIHNwID0gZ2V0U3BlbGxDaGVja2VyKCk7CisgICAgaWYgKCFzcCB8
fCAhc2VxdWVuY2VJZCkgeworICAgICAgICBJbnB1dExvZyhMb2dMZXZlbFdhcm4sICJJbnB1dEhh
bmRsZXI6OnNwZWxsQ2hlY2tpbmdSZXF1ZXN0UHJvY2Vzc2VkIGZhaWxlZCB0byBwcm9jZXNzZWQg
cmVxdWVzdCB3aXRoIHNlcXVlbmNlSWQgJWQiLCBzZXF1ZW5jZUlkKTsKKyAgICAgICAgc3BlbGxD
aGVja2luZ1JlcXVlc3RDYW5jZWxsZWQoc2VxdWVuY2VJZCwgdHJ1ZSAvKiBpc1NlcXVlbmNlSWQg
Ki8pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHNwLT5kaWRDaGVja1N1Y2NlZWRlZChz
ZXF1ZW5jZUlkLCByZXN1bHRzKTsKK30KKwordm9pZCBJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tp
bmdSZXF1ZXN0Q2FuY2VsbGVkKGludDMyX3QgaWQsIGJvb2wgaXNTZXF1ZW5jZUlkKQogewotICAg
IFVOVVNFRF9QQVJBTShpZCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNwYW5uYWJsZVN0cmluZyk7Ci0g
ICAgLy8gVE9ETyBpbXBsZW1lbnQuCisgICAgaW50MzJfdCBzZXF1ZW5jZUlkID0gaXNTZXF1ZW5j
ZUlkID8gaWQgOiBjb252ZXJ0VHJhbnNhY3Rpb25JZFRvU2VxdWVuY2VJZChpZCk7CisgICAgU3Bl
bGxDaGVja2VyKiBzcCA9IGdldFNwZWxsQ2hlY2tlcigpOworICAgIGlmICghc3ApIHsKKyAgICAg
ICAgSW5wdXRMb2coTG9nTGV2ZWxXYXJuLCAiSW5wdXRIYW5kbGVyOjpzcGVsbENoZWNraW5nUmVx
dWVzdENhbmNlbGxlZCBmYWlsZWQgdG8gY2FuY2VsIHRoZSByZXF1ZXN0IHdpdGggc2VxdWVuY2VJ
ZCAlZCIsIHNlcXVlbmNlSWQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHNwLT5kaWRD
aGVja0NhbmNlbGVkKHNlcXVlbmNlSWQpOworfQorCitTcGVsbENoZWNrZXIqIElucHV0SGFuZGxl
cjo6Z2V0U3BlbGxDaGVja2VyKCkKK3sKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gbV9jdXJyZW50
Rm9jdXNFbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpKQorICAgICAgICBpZiAoRWRpdG9yKiBl
ZGl0b3IgPSBmcmFtZS0+ZWRpdG9yKCkpCisgICAgICAgICAgICByZXR1cm4gZWRpdG9yLT5zcGVs
bENoZWNrZXIoKTsKKworICAgIHJldHVybiAwOwogfQogCiB2b2lkIElucHV0SGFuZGxlcjo6c2V0
RWxlbWVudFVuZm9jdXNlZChib29sIHJlZm9jdXNPY2N1cmluZykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5oIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmgKaW5kZXggZWM5
MTZmODI0NmI2NDNkMTA3MWJmOTNlMzI0NTk1YjQxMTBlYzY0Yi4uMjMzNDNjZTA4MDYzNTQ5NjY3
MzhhODRkNzY1YzU1OGU1ODgyNTZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmgKQEAgLTIyLDcgKzIyLDcgQEAKICNp
bmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1JbnB1dEV2ZW50cy5oPgogCiAjaW5jbHVkZSA8aW1m
L2lucHV0X2RhdGEuaD4KLQorI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMzcsNiArMzcsOCBAQCBjbGFzcyBIVE1MSW5wdXRFbGVt
ZW50OwogY2xhc3MgSFRNTFNlbGVjdEVsZW1lbnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgTm9k
ZTsKK2NsYXNzIFNwZWxsQ2hlY2tlcjsKK2NsYXNzIFRleHRDaGVja2luZ1JlcXVlc3Q7CiB9CiAK
IG5hbWVzcGFjZSBCbGFja0JlcnJ5IHsKQEAgLTEyMSw3ICsxMjMsOSBAQCBwdWJsaWM6CiAgICAg
aW50MzJfdCBzZXRDb21wb3NpbmdUZXh0KHNwYW5uYWJsZV9zdHJpbmdfdCosIGludDMyX3QgcmVs
YXRpdmVDdXJzb3JQb3NpdGlvbik7CiAgICAgaW50MzJfdCBjb21taXRUZXh0KHNwYW5uYWJsZV9z
dHJpbmdfdCosIGludDMyX3QgcmVsYXRpdmVDdXJzb3JQb3NpdGlvbik7CiAKLSAgICB2b2lkIHNw
ZWxsQ2hlY2tpbmdSZXF1ZXN0UHJvY2Vzc2VkKGludDMyX3QgaWQsIHNwYW5uYWJsZV9zdHJpbmdf
dCopOworICAgIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVj
a2VyKiwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWVzdCYpOworICAgIHZvaWQgc3Bl
bGxDaGVja2luZ1JlcXVlc3RQcm9jZXNzZWQoaW50MzJfdCB0cmFuc2FjdGlvbklkLCBzcGFubmFi
bGVfc3RyaW5nX3QqKTsKKyAgICB2b2lkIHNwZWxsQ2hlY2tpbmdSZXF1ZXN0Q2FuY2VsbGVkKGlu
dDMyX3QgaWQsIGJvb2wgaXNTZXF1ZW5jZUlkID0gZmFsc2UpOwogCiBwcml2YXRlOgogICAgIGVu
dW0gUGVuZGluZ0tleWJvYXJkU3RhdGVDaGFuZ2UgeyBOb0NoYW5nZSwgVmlzaWJsZSwgTm90Vmlz
aWJsZSB9OwpAQCAtMTc4LDYgKzE4Miw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGxlYXJuVGV4
dCgpOwogICAgIHZvaWQgc2VuZExlYXJuVGV4dERldGFpbHMoY29uc3QgV1RGOjpTdHJpbmcmKTsK
KyAgICBpbnQzMl90IGNvbnZlcnRUcmFuc2FjdGlvbklkVG9TZXF1ZW5jZUlkKGludDMyX3QgdHJh
bnNhY3Rpb25JZCk7CisgICAgV2ViQ29yZTo6U3BlbGxDaGVja2VyKiBnZXRTcGVsbENoZWNrZXIo
KTsKIAogICAgIFdlYlBhZ2VQcml2YXRlKiBtX3dlYlBhZ2U7CiAKQEAgLTE5NSw2ICsyMDEsOCBA
QCBwcml2YXRlOgogCiAgICAgUGVuZGluZ0tleWJvYXJkU3RhdGVDaGFuZ2UgbV9wZW5kaW5nS2V5
Ym9hcmRWaXNpYmlsaXR5Q2hhbmdlOwogICAgIGJvb2wgbV9kZWxheUtleWJvYXJkVmlzaWJpbGl0
eUNoYW5nZTsKKworICAgIHN0ZDo6bWFwPGludDMyX3QsIGludDMyX3Q+IG1fc2VxdWVuY2VNYXA7
CiB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154708</attachid>
            <date>2012-07-26 11:50:39 -0700</date>
            <delta_ts>2012-07-26 12:18:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92160-20120726144558.patch</filename>
            <type>text/plain</type>
            <size>18480</size>
            <attacher name="Nima Ghanavatian">nima.ghanavatian</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTNhNzVlZGZlN2ZlY2Fk
Y2FjOGU2YTYzOGZiYjEzMTQ5NjdkOWQzOC4uNGM0YWIwZDdkZTE2ZWE0NzE0MDI5MTI5NDgyMTE4
NmI0NzU5YjgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA3LTI0ICBOaW1h
IEdoYW5hdmF0aWFuICA8bmdoYW5hdmF0aWFuQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVy
cnldIFN1cHBvcnQgYXN5bmMgc3BlbGxjaGVjayBmb3IgdGhlIGJsYWNrYmVycnkgcG9ydAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIxNjAKKworICAg
ICAgICBTZXQgVVNFX1VOSUZJRURfVEVYVF9DSEVDS0lORyBmb3IgUExBVEZPUk0oQkxBQ0tCRVJS
WSkgdG8gdXNlIHRoZQorICAgICAgICBhc3luY2hyb25vdXMgc3BlbGxjaGVja2luZyBjb2RlIHBh
dGguCisKKyAgICAgICAgSW50ZXJuYWxseSByZXZpZXdlZCBieSBNaWtlIEZlbnRvbi4KKworICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmg6CisgICAgICAgIChXZWJDb3JlKToK
KwogMjAxMi0wNy0yNCAgU2hhd24gU2luZ2ggIDxzaGF3bnNpbmdoQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbY2hyb21pdW1dIFJlZmFjdG9yIENDTGF5ZXJUcmVlSG9zdENvbW1vbjogbW92ZSBy
b290IGxheWVyIHNwZWNpYWwgY2FzZSBpbml0aWFsaXphdGlvbiBpbnRvIGludGVybmFsIGNvZGUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCAwMjgzYjcyNmRiOTNiNTMzMjg2Yzg2
Y2E4YzZiNWQwZDEwZmJmYmI1Li42YTExYjdjYTcxNTE5NGQ5MTdhMDZlMzZiMWMzNTBiZDA1ZDYx
NTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAx
Mi0wNy0yNCAgTmltYSBHaGFuYXZhdGlhbiAgPG5naGFuYXZhdGlhbkByaW0uY29tPgorCisgICAg
ICAgIFtCbGFja0JlcnJ5XSBTdXBwb3J0IGFzeW5jIHNwZWxsY2hlY2sgZm9yIHRoZSBibGFja2Jl
cnJ5IHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkyMTYwCisKKyAgICAgICAgUFIxMjQ1MTcKKyAgICAgICAgSW1wbGVtZW50aW5nIHN1cHBvcnQg
Zm9yIGFzeW5jIHNwZWxsY2hlY2suCisKKyAgICAgICAgSW50ZXJuYWxseSByZXZpZXdlZCBieSBN
aWtlIEZlbnRvbi4KKworICAgICAgICAqIEFwaS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKEJsYWNr
QmVycnk6OldlYktpdDo6V2ViUGFnZTo6c3BlbGxDaGVja2luZ1JlcXVlc3RDYW5jZWxsZWQpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZTo6
c3BlbGxDaGVja2luZ1JlcXVlc3RQcm9jZXNzZWQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2Vi
S2l0OjpXZWJQYWdlUHJpdmF0ZTo6ZGlkQ2hhbmdlU2V0dGluZ3MpOgorICAgICAgICAqIEFwaS9X
ZWJQYWdlLmg6CisgICAgICAgICogQXBpL1dlYlNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlNldHRpbmdzOjpzdGFuZGFyZFNl
dHRpbmdzKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViU2V0dGluZ3M6OmlzQXN5
bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2Vi
S2l0OjpXZWJTZXR0aW5nczo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpOgor
ICAgICAgICAqIEFwaS9XZWJTZXR0aW5ncy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjaGVja1RleHRPZlBh
cmFncmFwaCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJy
eS5oOgorICAgICAgICAoRWRpdG9yQ2xpZW50QmxhY2tCZXJyeSk6CisgICAgICAgICogV2ViS2l0
U3VwcG9ydC9JbnB1dEhhbmRsZXIuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJ
bnB1dEhhbmRsZXI6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKyAgICAgICAgKEJsYWNrQmVy
cnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpjb252ZXJ0VHJhbnNhY3Rpb25JZFRvU2VxdWVuY2VJ
ZCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1
dEhhbmRsZXI6OnNwZWxsQ2hlY2tpbmdSZXF1ZXN0UHJvY2Vzc2VkKToKKyAgICAgICAgKEJsYWNr
QmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpzcGVsbENoZWNraW5nUmVxdWVzdENhbmNlbGxl
ZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6Z2V0U3BlbGxD
aGVja2VyKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChJbnB1dEhhbmRsZXIpOgorCiAyMDEyLTA3LTI1ICBKYWNr
eSBKaWFuZyAgPHpoYWppYW5nQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIGNsb2Nr
X2dldHRpbWUoKSBpbiBCYWNraW5nU3RvcmUuY3BwIHNob3VsZCB1c2UgQ0xPQ0tfTU9OT1RPTklD
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaAppbmRleCA1MzM2
NDM5N2Y4NTdmMGFkODdiY2ZkY2RkMDA3ODFlYTkxYmJjOTc5Li4xM2RhNWU5NzMyOThlMzUyMDMw
NTI1NDYzOTk3NzM5NzE5NmE2OGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRDaGVja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dENoZWNraW5nLmgKQEAgLTM5LDggKzM5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
I2RlZmluZSBXVEZfVVNFX0dSQU1NQVJfQ0hFQ0tJTkcgMQogCi0jaWYgUExBVEZPUk0oTUFDKSAm
JiAoUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
NjApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgKFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwKSkgfHwgUExBVEZPUk0oQkxBQ0tCRVJSWSkKICNk
ZWZpbmUgV1RGX1VTRV9VTklGSUVEX1RFWFRfQ0hFQ0tJTkcgMQorI2VuZGlmCisjaWYgUExBVEZP
Uk0oTUFDKSAmJiAoUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwNjApCiAjZGVmaW5lIFdURl9VU0VfQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQg
MQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCmluZGV4
IDI4NmFiZjJmN2ZjNjcxZjgwZWJlMTcwODZiZDdkNWI1ZTJkNDIwYzguLmQ3NzE2YTU1MTQyNTJm
MTA1Y2E1ZTVlNzNmYWY3YTA1YjdjNDUzZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0Fw
aS9XZWJQYWdlLmNwcApAQCAtNDU5Myw5ICs0NTkzLDE0IEBAIHZvaWQgV2ViUGFnZTo6c2V0U3Bl
bGxDaGVja2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIHN0YXRpY19jYXN0PEVkaXRvckNs
aWVudEJsYWNrQmVycnkqPihkLT5tX3BhZ2UtPmVkaXRvckNsaWVudCgpKS0+ZW5hYmxlU3BlbGxD
aGVja2luZyhlbmFibGVkKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzcGVsbENoZWNraW5nUmVxdWVz
dFByb2Nlc3NlZChpbnQzMl90IGlkLCBzcGFubmFibGVfc3RyaW5nX3QqIHNwYW5uYWJsZVN0cmlu
ZykKK3ZvaWQgV2ViUGFnZTo6c3BlbGxDaGVja2luZ1JlcXVlc3RDYW5jZWxsZWQoaW50MzJfdCB0
cmFuc2FjdGlvbklkKQogewotICAgIGQtPm1faW5wdXRIYW5kbGVyLT5zcGVsbENoZWNraW5nUmVx
dWVzdFByb2Nlc3NlZChpZCwgc3Bhbm5hYmxlU3RyaW5nKTsKKyAgICBkLT5tX2lucHV0SGFuZGxl
ci0+c3BlbGxDaGVja2luZ1JlcXVlc3RDYW5jZWxsZWQodHJhbnNhY3Rpb25JZCk7Cit9CisKK3Zv
aWQgV2ViUGFnZTo6c3BlbGxDaGVja2luZ1JlcXVlc3RQcm9jZXNzZWQoaW50MzJfdCB0cmFuc2Fj
dGlvbklkLCBzcGFubmFibGVfc3RyaW5nX3QqIHNwYW5uYWJsZVN0cmluZykKK3sKKyAgICBkLT5t
X2lucHV0SGFuZGxlci0+c3BlbGxDaGVja2luZ1JlcXVlc3RQcm9jZXNzZWQodHJhbnNhY3Rpb25J
ZCwgc3Bhbm5hYmxlU3RyaW5nKTsKIH0KIAogY2xhc3MgRGVmZXJyZWRUYXNrU2VsZWN0aW9uQ2Fu
Y2VsbGVkOiBwdWJsaWMgRGVmZXJyZWRUYXNrPCZXZWJQYWdlUHJpdmF0ZTo6bV93b3VsZENhbmNl
bFNlbGVjdGlvbj4gewpAQCAtNjQwNCw2ICs2NDA5LDcgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6
ZGlkQ2hhbmdlU2V0dGluZ3MoV2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzKQogICAgIGNvcmVTZXR0
aW5ncy0+c2V0RGVmYXVsdFRleHRFbmNvZGluZ05hbWUod2ViU2V0dGluZ3MtPmRlZmF1bHRUZXh0
RW5jb2RpbmdOYW1lKCkuaW1wbCgpKTsKICAgICBjb3JlU2V0dGluZ3MtPnNldERvd25sb2FkYWJs
ZUJpbmFyeUZvbnRzRW5hYmxlZCh3ZWJTZXR0aW5ncy0+ZG93bmxvYWRhYmxlQmluYXJ5Rm9udHNF
bmFibGVkKCkpOwogICAgIGNvcmVTZXR0aW5ncy0+c2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVk
KG1fd2ViU2V0dGluZ3MtPmlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKCkpOworICAgIGNvcmVT
ZXR0aW5ncy0+c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQobV93ZWJTZXR0aW5n
cy0+aXNBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKTsKIAogICAgIFdlYlN0cmlu
ZyBzdHlsZXNoZWV0VVJMID0gd2ViU2V0dGluZ3MtPnVzZXJTdHlsZVNoZWV0U3RyaW5nKCk7CiAg
ICAgaWYgKHN0eWxlc2hlZXRVUkwuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBp
L1dlYlBhZ2UuaAppbmRleCBlNTU2MDg0Zjk5OGZkNWUwZTZkYjhlYjFjN2YzZjg4ZjU1YzRiYjYy
Li41NDY2M2NiNjNhZTdmZDIyYmM4NzczNDE3ZDI2ZjI5NTU3OTMzM2QyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuaApAQCAtMjU2LDcgKzI1Niw4IEBAIHB1YmxpYzoKICAg
ICBpbnQzMl90IGNvbW1pdFRleHQoc3Bhbm5hYmxlX3N0cmluZ190KiwgaW50MzJfdCByZWxhdGl2
ZUN1cnNvclBvc2l0aW9uKTsKIAogICAgIHZvaWQgc2V0U3BlbGxDaGVja2luZ0VuYWJsZWQoYm9v
bCk7Ci0gICAgdm9pZCBzcGVsbENoZWNraW5nUmVxdWVzdFByb2Nlc3NlZChpbnQzMl90IGlkLCBz
cGFubmFibGVfc3RyaW5nX3QqKTsKKyAgICB2b2lkIHNwZWxsQ2hlY2tpbmdSZXF1ZXN0UHJvY2Vz
c2VkKGludDMyX3QgdHJhbnNhY3Rpb25JZCwgc3Bhbm5hYmxlX3N0cmluZ190Kik7CisgICAgdm9p
ZCBzcGVsbENoZWNraW5nUmVxdWVzdENhbmNlbGxlZChpbnQzMl90IHRyYW5zYWN0aW9uSWQpOwog
CiAgICAgdm9pZCBzZXRTZWxlY3Rpb24oY29uc3QgUGxhdGZvcm06OkludFBvaW50JiBzdGFydFBv
aW50LCBjb25zdCBQbGF0Zm9ybTo6SW50UG9pbnQmIGVuZFBvaW50KTsKICAgICB2b2lkIHNldENh
cmV0UG9zaXRpb24oY29uc3QgUGxhdGZvcm06OkludFBvaW50Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViU2V0dGluZ3MuY3BwCmluZGV4IDExNTZkNzQxYWZkNmQyZjdiMTM4
MmExZDY3MGM2MGY0NmZiNTQzZDUuLjUzNTMzYTg5MDM1MjBhYWY2Njc2NTIzYmU2NWNiOWMyNjI5
ZTIyMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViU2V0dGlu
Z3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViU2V0dGluZ3MuY3Bw
CkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBCbGFja0JlcnJ5IHsKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgQmxhY2tCZXJyeUFsbG93Q3Jvc3NT
aXRlUmVxdWVzdHMsICgiQmxhY2tCZXJyeUFsbG93Q3Jvc3NTaXRlUmVxdWVzdHMiKSk7CitERUZJ
TkVfU1RBVElDX0xPQ0FMKFN0cmluZywgQmxhY2tCZXJyeUFzeW5jaHJvbm91c1NwZWxsQ2hlY2tp
bmcsICgiQmxhY2tCZXJyeUFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmciKSk7CiBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgQmxhY2tCZXJyeUJhY2tncm91bmRDb2xvciwgKCJCbGFja0JlcnJ5
QmFja2dyb3VuZENvbG9yIikpOwogREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIEJsYWNrQmVy
cnlDb29raWVzRW5hYmxlZCwgKCJCbGFja0JlcnJ5Q29va2llc0VuYWJsZWQiKSk7CiBERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgQmxhY2tCZXJyeURpcmVjdFJlbmRlcmluZ1RvV2luZG93RW5h
YmxlZCwgKCJCbGFja0JlcnJ5RGlyZWN0UmVuZGVyaW5nVG9XaW5kb3dFbmFibGVkIikpOwpAQCAt
MTc3LDYgKzE3OCw3IEBAIFdlYlNldHRpbmdzKiBXZWJTZXR0aW5nczo6c3RhbmRhcmRTZXR0aW5n
cygpCiAgICAgc2V0dGluZ3MtPm1fcHJpdmF0ZS0+c2V0Qm9vbGVhbihCbGFja0JlcnJ5RnVsbFNj
cmVlblZpZGVvQ2FwYWJsZSwgZmFsc2UpOwogICAgIHNldHRpbmdzLT5tX3ByaXZhdGUtPnNldEJv
b2xlYW4oQmxhY2tCZXJyeUNyZWRlbnRpYWxBdXRvZmlsbEVuYWJsZWQsIGZhbHNlKTsKICAgICBz
ZXR0aW5ncy0+bV9wcml2YXRlLT5zZXRCb29sZWFuKEJsYWNrQmVycnlGb3JtQXV0b2ZpbGxFbmFi
bGVkLCBmYWxzZSk7CisgICAgc2V0dGluZ3MtPm1fcHJpdmF0ZS0+c2V0Qm9vbGVhbihCbGFja0Jl
cnJ5QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZywgdHJ1ZSk7CiAKICAgICBpZiAoQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkRldmljZUluZm86Omluc3RhbmNlKCktPmlzTW9iaWxlKCkpIHsKICAgICAg
ICAgV2ViQ29yZTo6RmxvYXRTaXplIGN1cnJlbnRQUEkgPSBQbGF0Zm9ybTo6R3JhcGhpY3M6OlNj
cmVlbjo6cHJpbWFyeVNjcmVlbigpLT5waXhlbHNQZXJJbmNoKC0xKTsKQEAgLTgwNyw2ICs4MDks
MTYgQEAgdm9pZCBXZWJTZXR0aW5nczo6c2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGJvb2wg
ZW5hYmxlKQogICAgIG1fcHJpdmF0ZS0+c2V0Qm9vbGVhbihTcGF0aWFsTmF2aWdhdGlvbkVuYWJs
ZWQsIGVuYWJsZSk7CiB9CiAKK2Jvb2wgV2ViU2V0dGluZ3M6OmlzQXN5bmNocm9ub3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmdldEJvb2xl
YW4oQmxhY2tCZXJyeUFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmcpOworfQorCit2b2lkIFdlYlNl
dHRpbmdzOjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sIGVuYWJsZSkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5zZXRCb29sZWFuKEJsYWNrQmVycnlBc3lu
Y2hyb25vdXNTcGVsbENoZWNraW5nLCBlbmFibGUpOworfQorCiBib29sIFdlYlNldHRpbmdzOjpm
dWxsU2NyZWVuVmlkZW9DYXBhYmxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5n
ZXRCb29sZWFuKEJsYWNrQmVycnlGdWxsU2NyZWVuVmlkZW9DYXBhYmxlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvV2ViU2V0dGluZ3MuaAppbmRleCAzOWY3YzIwOWIwNTgwODE0M2Jh
NWZiMjEyOTFjMjI2M2NjOWMyMTBmLi5iNjBjYjZkY2ZjZTViNmFmZjRiMjIxOTlkNDRhNTNmNmVl
OWI1YTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlNldHRp
bmdzLmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJTZXR0aW5ncy5oCkBA
IC0yMjgsNiArMjI4LDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNTcGF0aWFsTmF2aWdhdGlvbkVu
YWJsZWQoKSBjb25zdDsKICAgICB2b2lkIHNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChib29s
KTsKIAorICAgIGJvb2wgaXNBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIGNvbnN0
OworICAgIHZvaWQgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkgY29u
c3Q7CisKICAgICBib29sIGZ1bGxTY3JlZW5WaWRlb0NhcGFibGUoKSBjb25zdDsKICAgICB2b2lk
IHNldEZ1bGxTY3JlZW5WaWRlb0NhcGFibGUoYm9vbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRC
bGFja0JlcnJ5LmNwcAppbmRleCBkY2VjMmRlYjQ3ZjM4NmM2NmY0ZmNhYzhiZjEwNTAwNjJkMTMx
NDg5Li5hYWM5MjJkNTVlMTU1ZDY2OGUyZTRiM2M4NWI3MDNjNTQ1MDlhNDhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50Qmxh
Y2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3BwCkBAIC01NzAsNyArNTcwLDEyIEBAIHZvaWQgRWRp
dG9yQ2xpZW50QmxhY2tCZXJyeTo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBp
bnQsIFdURjo6VmVjdG9yCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBFZGl0b3JD
bGllbnRCbGFja0JlcnJ5OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWVzdD4pCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVy
cnk6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFBhc3NSZWZQdHI8VGV4dENoZWNraW5nUmVxdWVz
dD4gdGVzdENoZWNraW5nUmVxdWVzdCkKK3sKKyAgICBtX3dlYlBhZ2VQcml2YXRlLT5tX2lucHV0
SGFuZGxlci0+cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcodGV4dENoZWNraW5nUmVxdWVzdCk7Cit9
CisKK3ZvaWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29u
c3QgVUNoYXIqLCBpbnQsIFRleHRDaGVja2luZ1R5cGVNYXNrLCBWZWN0b3I8VGV4dENoZWNraW5n
UmVzdWx0PiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5
LmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
QmxhY2tCZXJyeS5oCmluZGV4IDI1YTg3MjhmNTUyNGM4N2QxODRkMjc2MWYxZDRhYWUyNzdkNDAz
YWUuLmFiYzU2ZDFmY2I1MmIwMDdmYmM1MTBkNDM4YzY1NWRmZjAwZWRmNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFj
a0JlcnJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEJsYWNrQmVycnkuaApAQCAtODcsNiArODcsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50LCBWZWN0b3I8
R3JhbW1hckRldGFpbCwgMHU+JiwgaW50KiwgaW50Kik7CiAgICAgdmlydHVhbCB2b2lkIGdldEd1
ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTdHJpbmc+
Jik7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdURjo6UGFzc1Jl
ZlB0cjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0Pik7CisgICAgdmlydHVhbCB2b2lkIGNo
ZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiwgaW50LCBUZXh0Q2hlY2tpbmdUeXBlTWFz
aywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKTsKIAogICAgIHZpcnR1YWwgVGV4dENoZWNr
ZXJDbGllbnQqIHRleHRDaGVja2VyKCk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5n
VUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBHcmFtbWFyRGV0YWlsJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1
dEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5w
dXRIYW5kbGVyLmNwcAppbmRleCBlYzFkYjBmMTFiZTE0MDc5OTJkYzM2NDVkYjBkYTYwNDc3NjJk
ZDQyLi41YjQ0YjVlNzZhYTk0NDdkYzAzMmI0ZTZiYTViODQzNTY2YjMyNWQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxl
ci5jcHAKQEAgLTUzLDYgKzUzLDggQEAKICNpbmNsdWRlICJTY29wZVBvaW50ZXIuaCIKICNpbmNs
dWRlICJTZWxlY3RQb3B1cENsaWVudC5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkhhbmRsZXIuaCIK
KyNpbmNsdWRlICJTcGVsbENoZWNrZXIuaCIKKyNpbmNsdWRlICJUZXh0Q2hlY2tlckNsaWVudC5o
IgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIldlYlBhZ2VDbGllbnQuaCIK
ICNpbmNsdWRlICJXZWJQYWdlX3AuaCIKQEAgLTUxOCwxMiArNTIwLDEyNyBAQCB2b2lkIElucHV0
SGFuZGxlcjo6bGVhcm5UZXh0KCkKICAgICBzZW5kTGVhcm5UZXh0RGV0YWlscyh0ZXh0SW5GaWVs
ZCk7CiB9CiAKK3ZvaWQgSW5wdXRIYW5kbGVyOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXVEY6
OlBhc3NSZWZQdHI8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWVzdD4gdGV4dENoZWNraW5nUmVx
dWVzdCkKK3sKKyAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0PiBy
ZXF1ZXN0ID0gdGV4dENoZWNraW5nUmVxdWVzdDsKKworICAgIGludDMyX3Qgc2VxdWVuY2VJZCA9
IHJlcXVlc3QtPnNlcXVlbmNlKCk7CisgICAgaW50IHJlcXVlc3RMZW5ndGggPSByZXF1ZXN0LT50
ZXh0KCkubGVuZ3RoKCk7CisgICAgaWYgKCFyZXF1ZXN0TGVuZ3RoIC8qIHx8IHJlcXVlc3RMZW5n
dGggPiBtYXhTcGVsbENoZWNrU3RyaW5nTGVuZ3RoICovKSB7CisgICAgICAgIHNwZWxsQ2hlY2tp
bmdSZXF1ZXN0Q2FuY2VsbGVkKHNlcXVlbmNlSWQsIHRydWUgLyogaXNTZXF1ZW5jZUlkICovKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdjaGFyX3QqIGNoZWNraW5nU3RyaW5nID0g
KHdjaGFyX3QqKW1hbGxvYyhzaXplb2Yod2NoYXJfdCkgKiAocmVxdWVzdExlbmd0aCArIDEpKTsK
KyAgICBpZiAoIWNoZWNraW5nU3RyaW5nKSB7CisgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3Jt
Ojpsb2dBbHdheXMoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsICJJbnB1
dEhhbmRsZXI6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nIENhbm5vdCBhbGxvY2F0ZSBtZW1vcnkg
Zm9yIHN0cmluZy4iKTsKKyAgICAgICAgc3BlbGxDaGVja2luZ1JlcXVlc3RDYW5jZWxsZWQoc2Vx
dWVuY2VJZCwgdHJ1ZSAvKiBpc1NlcXVlbmNlSWQgKi8pOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaW50IHN0cmluZ0xlbmd0aCA9IDA7CisgICAgaWYgKCFjb252ZXJ0U3RyaW5nVG9X
Y2hhcihyZXF1ZXN0LT50ZXh0KCksIGNoZWNraW5nU3RyaW5nLCByZXF1ZXN0TGVuZ3RoICsgMSwg
JnN0cmluZ0xlbmd0aCkpIHsKKyAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OmxvZ0Fsd2F5
cyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIklucHV0SGFuZGxlcjo6
cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcgRmFpbGVkIHRvIGNvbnZlcnQgU3RyaW5nIHRvIHdjaGFy
IHR5cGUuIik7CisgICAgICAgIGZyZWUoY2hlY2tpbmdTdHJpbmcpOworICAgICAgICBzcGVsbENo
ZWNraW5nUmVxdWVzdENhbmNlbGxlZChzZXF1ZW5jZUlkLCB0cnVlIC8qIGlzU2VxdWVuY2VJZCAq
Lyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnQzMl90IHRyYW5zYWN0aW9uSWQg
PSBtX3dlYlBhZ2UtPm1fY2xpZW50LT5jaGVja1NwZWxsaW5nT2ZTdHJpbmdBc3luYyhjaGVja2lu
Z1N0cmluZywgc3RyaW5nTGVuZ3RoKTsKKyAgICBmcmVlKGNoZWNraW5nU3RyaW5nKTsKKworICAg
IC8vIElmIHRoZSBjYWxsIHRvIHRoZSBpbnB1dCBzZXJ2aWNlIGRpZCBub3QgZ28gdGhyb3VnaCwg
dGhlbiBjYW5jZWwgdGhlIHJlcXVlc3Qgc28gd2UgZG9uJ3QgYmxvY2sgZW5kbGVzc2x5LgorICAg
IC8vIFRoaXMgc2hvdWxkIHN0aWxsIHRha2UgdHJhbnNhY3Rpb25JZCBhcyBhIHBhcmFtZXRlciB0
byBtYWludGFpbiB0aGUgc2FtZSBiZWhhdmlvciBhcyBpZiBJbnB1dE1ldGhvZFN1cHBvcnQKKyAg
ICAvLyB3ZXJlIHRvIGNhbmNlbCBhIHJlcXVlc3QgZHVyaW5nIHByb2Nlc3NpbmcuCisgICAgaWYg
KHRyYW5zYWN0aW9uSWQgPT0gLTEpIHsgLy8gRXJyb3IgYmVmb3JlIHNlbmRpbmcgcmVxdWVzdCB0
byBpbnB1dCBzZXJ2aWNlLgorICAgICAgICBzcGVsbENoZWNraW5nUmVxdWVzdENhbmNlbGxlZChz
ZXF1ZW5jZUlkLCB0cnVlIC8qIGlzU2VxdWVuY2VJZCAqLyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICAvLyBtYXAgc2VxdWVuY2VJZCB0byB0cmFuc2FjdGlvbklkCisgICAgbV9zZXF1
ZW5jZU1hcFt0cmFuc2FjdGlvbklkXSA9IHNlcXVlbmNlSWQ7Cit9CiAKLXZvaWQgSW5wdXRIYW5k
bGVyOjpzcGVsbENoZWNraW5nUmVxdWVzdFByb2Nlc3NlZChpbnQzMl90IGlkLCBzcGFubmFibGVf
c3RyaW5nX3QqIHNwYW5uYWJsZVN0cmluZykKK2ludDMyX3QgSW5wdXRIYW5kbGVyOjpjb252ZXJ0
VHJhbnNhY3Rpb25JZFRvU2VxdWVuY2VJZChpbnQzMl90IHRyYW5zYWN0aW9uSWQpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKGlkKTsKLSAgICBVTlVTRURfUEFSQU0oc3Bhbm5hYmxlU3RyaW5nKTsKLSAg
ICAvLyBUT0RPIGltcGxlbWVudC4KKyAgICBzdGQ6Om1hcDxpbnQzMl90LCBpbnQzMl90Pjo6aXRl
cmF0b3IgaXQgPSBtX3NlcXVlbmNlTWFwLmZpbmQodHJhbnNhY3Rpb25JZCk7CisKKyAgICBpZiAo
aXQgPT0gbV9zZXF1ZW5jZU1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpbnQz
Ml90IHNlcXVlbmNlSWQgPSBpdC0+c2Vjb25kOworICAgIC8vIFdlIG9ubHkgY29udmVydCB0aGlz
IHZhbHVlIHdoZW4gd2UgaGF2ZSByZWNlaXZlZCBpdHMgcmVzcG9uc2UsIHNvIGl0cyBzYWZlIHRv
IHJlbW92ZSBpdCBmcm9tIHRoZSBtYXAuCisgICAgbV9zZXF1ZW5jZU1hcC5lcmFzZShpdCk7CisK
KyAgICByZXR1cm4gc2VxdWVuY2VJZDsKK30KKwordm9pZCBJbnB1dEhhbmRsZXI6OnNwZWxsQ2hl
Y2tpbmdSZXF1ZXN0UHJvY2Vzc2VkKGludDMyX3QgdHJhbnNhY3Rpb25JZCwgc3Bhbm5hYmxlX3N0
cmluZ190KiBzcGFubmFibGVTdHJpbmcpCit7CisgICAgaWYgKCFzcGFubmFibGVTdHJpbmcpIHsK
KyAgICAgICAgc3BlbGxDaGVja2luZ1JlcXVlc3RDYW5jZWxsZWQodHJhbnNhY3Rpb25JZCwgZmFs
c2UgLyogaXNTZXF1ZW5jZUlkICovKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFZl
Y3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CisKKyAgICAvLyBDb252ZXJ0IHRoZSBz
cGFubmFibGVTdHJpbmcgdG8gVGV4dENoZWNraW5nUmVzdWx0IHRoZW4gYXBwZW5kIHRvIHJlc3Vs
dHMgdmVjdG9yLgorICAgIFN0cmluZyByZXBsYWNlbWVudDsKKyAgICBUZXh0Q2hlY2tpbmdSZXN1
bHQgdGV4dENoZWNraW5nUmVzdWx0OworICAgIHRleHRDaGVja2luZ1Jlc3VsdC50eXBlID0gVGV4
dENoZWNraW5nVHlwZVNwZWxsaW5nOworICAgIHRleHRDaGVja2luZ1Jlc3VsdC5yZXBsYWNlbWVu
dCA9IHJlcGxhY2VtZW50OworICAgIHRleHRDaGVja2luZ1Jlc3VsdC5sb2NhdGlvbiA9IDA7Cisg
ICAgdGV4dENoZWNraW5nUmVzdWx0Lmxlbmd0aCA9IDA7CisKKyAgICBzcGFuX3QqIHNwYW4gPSBz
cGFubmFibGVTdHJpbmctPnNwYW5zOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
c3Bhbm5hYmxlU3RyaW5nLT5zcGFuc19jb3VudDsgaSsrKSB7CisgICAgICAgIGlmICghc3BhbikK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoc3Bhbi0+ZW5kIDwgc3Bhbi0+c3RhcnQp
IHsKKyAgICAgICAgICAgIHNwZWxsQ2hlY2tpbmdSZXF1ZXN0Q2FuY2VsbGVkKHRyYW5zYWN0aW9u
SWQsIGZhbHNlIC8qIGlzU2VxdWVuY2VJZCAqLyk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKHNwYW4tPmF0dHJpYnV0ZXNfbWFzayAmIE1JU1NQRUxMRURfV09S
RF9BVFRSSUIpIHsKKyAgICAgICAgICAgIHRleHRDaGVja2luZ1Jlc3VsdC5sb2NhdGlvbiA9IHNw
YW4tPnN0YXJ0OworICAgICAgICAgICAgLy8gVGhlIGVuZCBwb2ludCBpbmNsdWRlcyB0aGUgY2hh
cmFjdGVyIHRoYXQgaXQgaXMgYmVmb3JlLiBJZSwgMCwgMAorICAgICAgICAgICAgLy8gYXBwbGll
cyB0byB0aGUgZmlyc3QgY2hhcmFjdGVyIGFzIHRoZSBlbmQgcG9pbnQgaW5jbHVkZXMgdGhlIGNo
YXJhY3RlcgorICAgICAgICAgICAgLy8gYXQgdGhlIHBvc2l0aW9uLiBUaGlzIG1lYW5zIHRoZSBl
bmRQb3NpdGlvbiBpcyBhbHdheXMgKzEuCisgICAgICAgICAgICB0ZXh0Q2hlY2tpbmdSZXN1bHQu
bGVuZ3RoID0gc3Bhbi0+ZW5kIC0gc3Bhbi0+c3RhcnQgKyAxOworICAgICAgICAgICAgcmVzdWx0
cy5hcHBlbmQodGV4dENoZWNraW5nUmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICBzcGFuKys7
CisgICAgfQorCisgICAgLy8gdHJhbnNhY3Rpb25JZCBoZXJlIGlzIGZvciB1c2Ugd2l0aCB0aGUg
aW5wdXQgc2VydmljZS4gV2UgbmVlZCB0byB0cmFuc2xhdGUgdGhpcyB0byBzZXF1ZW5jZUlkIHVz
ZWQgd2l0aCBTcGVsbENoZWNrZXIuCisgICAgaW50MzJfdCBzZXF1ZW5jZUlkID0gY29udmVydFRy
YW5zYWN0aW9uSWRUb1NlcXVlbmNlSWQodHJhbnNhY3Rpb25JZCk7CisKKyAgICBTcGVsbENoZWNr
ZXIqIHNwID0gZ2V0U3BlbGxDaGVja2VyKCk7CisgICAgaWYgKCFzcCB8fCAhc2VxdWVuY2VJZCkg
eworICAgICAgICBJbnB1dExvZyhMb2dMZXZlbFdhcm4sICJJbnB1dEhhbmRsZXI6OnNwZWxsQ2hl
Y2tpbmdSZXF1ZXN0UHJvY2Vzc2VkIGZhaWxlZCB0byBwcm9jZXNzZWQgcmVxdWVzdCB3aXRoIHNl
cXVlbmNlSWQgJWQiLCBzZXF1ZW5jZUlkKTsKKyAgICAgICAgc3BlbGxDaGVja2luZ1JlcXVlc3RD
YW5jZWxsZWQoc2VxdWVuY2VJZCwgdHJ1ZSAvKiBpc1NlcXVlbmNlSWQgKi8pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIHNwLT5kaWRDaGVja1N1Y2NlZWRlZChzZXF1ZW5jZUlkLCByZXN1
bHRzKTsKK30KKwordm9pZCBJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tpbmdSZXF1ZXN0Q2FuY2Vs
bGVkKGludDMyX3QgaWQsIGJvb2wgaXNTZXF1ZW5jZUlkKQoreworICAgIGludDMyX3Qgc2VxdWVu
Y2VJZCA9IGlzU2VxdWVuY2VJZCA/IGlkIDogY29udmVydFRyYW5zYWN0aW9uSWRUb1NlcXVlbmNl
SWQoaWQpOworICAgIFNwZWxsQ2hlY2tlciogc3AgPSBnZXRTcGVsbENoZWNrZXIoKTsKKyAgICBp
ZiAoIXNwKSB7CisgICAgICAgIElucHV0TG9nKExvZ0xldmVsV2FybiwgIklucHV0SGFuZGxlcjo6
c3BlbGxDaGVja2luZ1JlcXVlc3RDYW5jZWxsZWQgZmFpbGVkIHRvIGNhbmNlbCB0aGUgcmVxdWVz
dCB3aXRoIHNlcXVlbmNlSWQgJWQiLCBzZXF1ZW5jZUlkKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBzcC0+ZGlkQ2hlY2tDYW5jZWxlZChzZXF1ZW5jZUlkKTsKK30KKworU3BlbGxDaGVj
a2VyKiBJbnB1dEhhbmRsZXI6OmdldFNwZWxsQ2hlY2tlcigpCit7CisgICAgaWYgKEZyYW1lKiBm
cmFtZSA9IG1fY3VycmVudEZvY3VzRWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkKKyAgICAg
ICAgaWYgKEVkaXRvciogZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpKQorICAgICAgICAgICAgcmV0
dXJuIGVkaXRvci0+c3BlbGxDaGVja2VyKCk7CisKKyAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBJ
bnB1dEhhbmRsZXI6OnNldEVsZW1lbnRVbmZvY3VzZWQoYm9vbCByZWZvY3VzT2NjdXJpbmcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhh
bmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFu
ZGxlci5oCmluZGV4IGE2ZWVkM2I3ZTJmNDY2ZDVlY2VkMTBkNmQ0OGJjNWFmODA4YTMzMDIuLmU0
OTJjNjA3ZmYxZWM0ZDVkZmRkYzZjNTYxOGY4OTdjYjk5YjhlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5oCkBAIC0y
Miw3ICsyMiw3IEBACiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtSW5wdXRFdmVudHMuaD4K
IAogI2luY2x1ZGUgPGltZi9pbnB1dF9kYXRhLmg+Ci0KKyNpbmNsdWRlIDxtYXA+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM3LDYgKzM3LDggQEAgY2xh
c3MgSFRNTElucHV0RWxlbWVudDsKIGNsYXNzIEhUTUxTZWxlY3RFbGVtZW50OwogY2xhc3MgSW50
UmVjdDsKIGNsYXNzIE5vZGU7CitjbGFzcyBTcGVsbENoZWNrZXI7CitjbGFzcyBUZXh0Q2hlY2tp
bmdSZXF1ZXN0OwogfQogCiBuYW1lc3BhY2UgQmxhY2tCZXJyeSB7CkBAIC0xMjIsNyArMTI0LDkg
QEAgcHVibGljOgogICAgIGludDMyX3Qgc2V0Q29tcG9zaW5nVGV4dChzcGFubmFibGVfc3RyaW5n
X3QqLCBpbnQzMl90IHJlbGF0aXZlQ3Vyc29yUG9zaXRpb24pOwogICAgIGludDMyX3QgY29tbWl0
VGV4dChzcGFubmFibGVfc3RyaW5nX3QqLCBpbnQzMl90IHJlbGF0aXZlQ3Vyc29yUG9zaXRpb24p
OwogCi0gICAgdm9pZCBzcGVsbENoZWNraW5nUmVxdWVzdFByb2Nlc3NlZChpbnQzMl90IGlkLCBz
cGFubmFibGVfc3RyaW5nX3QqKTsKKyAgICB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0Pik7CisgICAgdm9pZCBz
cGVsbENoZWNraW5nUmVxdWVzdFByb2Nlc3NlZChpbnQzMl90IHRyYW5zYWN0aW9uSWQsIHNwYW5u
YWJsZV9zdHJpbmdfdCopOworICAgIHZvaWQgc3BlbGxDaGVja2luZ1JlcXVlc3RDYW5jZWxsZWQo
aW50MzJfdCBpZCwgYm9vbCBpc1NlcXVlbmNlSWQgPSBmYWxzZSk7CiAKIHByaXZhdGU6CiAgICAg
ZW51bSBQZW5kaW5nS2V5Ym9hcmRTdGF0ZUNoYW5nZSB7IE5vQ2hhbmdlLCBWaXNpYmxlLCBOb3RW
aXNpYmxlIH07CkBAIC0xNzksNiArMTgzLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbGVhcm5U
ZXh0KCk7CiAgICAgdm9pZCBzZW5kTGVhcm5UZXh0RGV0YWlscyhjb25zdCBXVEY6OlN0cmluZyYp
OworICAgIGludDMyX3QgY29udmVydFRyYW5zYWN0aW9uSWRUb1NlcXVlbmNlSWQoaW50MzJfdCB0
cmFuc2FjdGlvbklkKTsKKyAgICBXZWJDb3JlOjpTcGVsbENoZWNrZXIqIGdldFNwZWxsQ2hlY2tl
cigpOwogCiAgICAgV2ViUGFnZVByaXZhdGUqIG1fd2ViUGFnZTsKIApAQCAtMTk2LDYgKzIwMiw4
IEBAIHByaXZhdGU6CiAKICAgICBQZW5kaW5nS2V5Ym9hcmRTdGF0ZUNoYW5nZSBtX3BlbmRpbmdL
ZXlib2FyZFZpc2liaWxpdHlDaGFuZ2U7CiAgICAgYm9vbCBtX2RlbGF5S2V5Ym9hcmRWaXNpYmls
aXR5Q2hhbmdlOworCisgICAgc3RkOjptYXA8aW50MzJfdCwgaW50MzJfdD4gbV9zZXF1ZW5jZU1h
cDsKIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154715</attachid>
            <date>2012-07-26 12:18:50 -0700</date>
            <delta_ts>2012-07-26 13:26:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92160-20120726151409.patch</filename>
            <type>text/plain</type>
            <size>18473</size>
            <attacher name="Nima Ghanavatian">nima.ghanavatian</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTNhNzVlZGZlN2ZlY2Fk
Y2FjOGU2YTYzOGZiYjEzMTQ5NjdkOWQzOC4uNGM0YWIwZDdkZTE2ZWE0NzE0MDI5MTI5NDgyMTE4
NmI0NzU5YjgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA3LTI0ICBOaW1h
IEdoYW5hdmF0aWFuICA8bmdoYW5hdmF0aWFuQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVy
cnldIFN1cHBvcnQgYXN5bmMgc3BlbGxjaGVjayBmb3IgdGhlIGJsYWNrYmVycnkgcG9ydAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIxNjAKKworICAg
ICAgICBTZXQgVVNFX1VOSUZJRURfVEVYVF9DSEVDS0lORyBmb3IgUExBVEZPUk0oQkxBQ0tCRVJS
WSkgdG8gdXNlIHRoZQorICAgICAgICBhc3luY2hyb25vdXMgc3BlbGxjaGVja2luZyBjb2RlIHBh
dGguCisKKyAgICAgICAgSW50ZXJuYWxseSByZXZpZXdlZCBieSBNaWtlIEZlbnRvbi4KKworICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmg6CisgICAgICAgIChXZWJDb3JlKToK
KwogMjAxMi0wNy0yNCAgU2hhd24gU2luZ2ggIDxzaGF3bnNpbmdoQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbY2hyb21pdW1dIFJlZmFjdG9yIENDTGF5ZXJUcmVlSG9zdENvbW1vbjogbW92ZSBy
b290IGxheWVyIHNwZWNpYWwgY2FzZSBpbml0aWFsaXphdGlvbiBpbnRvIGludGVybmFsIGNvZGUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCAwMjgzYjcyNmRiOTNiNTMzMjg2Yzg2
Y2E4YzZiNWQwZDEwZmJmYmI1Li42YTExYjdjYTcxNTE5NGQ5MTdhMDZlMzZiMWMzNTBiZDA1ZDYx
NTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAx
Mi0wNy0yNCAgTmltYSBHaGFuYXZhdGlhbiAgPG5naGFuYXZhdGlhbkByaW0uY29tPgorCisgICAg
ICAgIFtCbGFja0JlcnJ5XSBTdXBwb3J0IGFzeW5jIHNwZWxsY2hlY2sgZm9yIHRoZSBibGFja2Jl
cnJ5IHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkyMTYwCisKKyAgICAgICAgUFIxMjQ1MTcKKyAgICAgICAgSW1wbGVtZW50aW5nIHN1cHBvcnQg
Zm9yIGFzeW5jIHNwZWxsY2hlY2suCisKKyAgICAgICAgSW50ZXJuYWxseSByZXZpZXdlZCBieSBN
aWtlIEZlbnRvbi4KKworICAgICAgICAqIEFwaS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKEJsYWNr
QmVycnk6OldlYktpdDo6V2ViUGFnZTo6c3BlbGxDaGVja2luZ1JlcXVlc3RDYW5jZWxsZWQpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZTo6
c3BlbGxDaGVja2luZ1JlcXVlc3RQcm9jZXNzZWQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2Vi
S2l0OjpXZWJQYWdlUHJpdmF0ZTo6ZGlkQ2hhbmdlU2V0dGluZ3MpOgorICAgICAgICAqIEFwaS9X
ZWJQYWdlLmg6CisgICAgICAgICogQXBpL1dlYlNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlNldHRpbmdzOjpzdGFuZGFyZFNl
dHRpbmdzKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViU2V0dGluZ3M6OmlzQXN5
bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2Vi
S2l0OjpXZWJTZXR0aW5nczo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpOgor
ICAgICAgICAqIEFwaS9XZWJTZXR0aW5ncy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjaGVja1RleHRPZlBh
cmFncmFwaCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJy
eS5oOgorICAgICAgICAoRWRpdG9yQ2xpZW50QmxhY2tCZXJyeSk6CisgICAgICAgICogV2ViS2l0
U3VwcG9ydC9JbnB1dEhhbmRsZXIuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJ
bnB1dEhhbmRsZXI6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKyAgICAgICAgKEJsYWNrQmVy
cnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpjb252ZXJ0VHJhbnNhY3Rpb25JZFRvU2VxdWVuY2VJ
ZCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1
dEhhbmRsZXI6OnNwZWxsQ2hlY2tpbmdSZXF1ZXN0UHJvY2Vzc2VkKToKKyAgICAgICAgKEJsYWNr
QmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpzcGVsbENoZWNraW5nUmVxdWVzdENhbmNlbGxl
ZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6Z2V0U3BlbGxD
aGVja2VyKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChJbnB1dEhhbmRsZXIpOgorCiAyMDEyLTA3LTI1ICBKYWNr
eSBKaWFuZyAgPHpoYWppYW5nQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIGNsb2Nr
X2dldHRpbWUoKSBpbiBCYWNraW5nU3RvcmUuY3BwIHNob3VsZCB1c2UgQ0xPQ0tfTU9OT1RPTklD
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaAppbmRleCA1MzM2
NDM5N2Y4NTdmMGFkODdiY2ZkY2RkMDA3ODFlYTkxYmJjOTc5Li4xM2RhNWU5NzMyOThlMzUyMDMw
NTI1NDYzOTk3NzM5NzE5NmE2OGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRDaGVja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dENoZWNraW5nLmgKQEAgLTM5LDggKzM5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
I2RlZmluZSBXVEZfVVNFX0dSQU1NQVJfQ0hFQ0tJTkcgMQogCi0jaWYgUExBVEZPUk0oTUFDKSAm
JiAoUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
NjApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgKFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwKSkgfHwgUExBVEZPUk0oQkxBQ0tCRVJSWSkKICNk
ZWZpbmUgV1RGX1VTRV9VTklGSUVEX1RFWFRfQ0hFQ0tJTkcgMQorI2VuZGlmCisjaWYgUExBVEZP
Uk0oTUFDKSAmJiAoUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwNjApCiAjZGVmaW5lIFdURl9VU0VfQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQg
MQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCmluZGV4
IDI4NmFiZjJmN2ZjNjcxZjgwZWJlMTcwODZiZDdkNWI1ZTJkNDIwYzguLmQ3NzE2YTU1MTQyNTJm
MTA1Y2E1ZTVlNzNmYWY3YTA1YjdjNDUzZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0Fw
aS9XZWJQYWdlLmNwcApAQCAtNDU5Myw5ICs0NTkzLDE0IEBAIHZvaWQgV2ViUGFnZTo6c2V0U3Bl
bGxDaGVja2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIHN0YXRpY19jYXN0PEVkaXRvckNs
aWVudEJsYWNrQmVycnkqPihkLT5tX3BhZ2UtPmVkaXRvckNsaWVudCgpKS0+ZW5hYmxlU3BlbGxD
aGVja2luZyhlbmFibGVkKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzcGVsbENoZWNraW5nUmVxdWVz
dFByb2Nlc3NlZChpbnQzMl90IGlkLCBzcGFubmFibGVfc3RyaW5nX3QqIHNwYW5uYWJsZVN0cmlu
ZykKK3ZvaWQgV2ViUGFnZTo6c3BlbGxDaGVja2luZ1JlcXVlc3RDYW5jZWxsZWQoaW50MzJfdCB0
cmFuc2FjdGlvbklkKQogewotICAgIGQtPm1faW5wdXRIYW5kbGVyLT5zcGVsbENoZWNraW5nUmVx
dWVzdFByb2Nlc3NlZChpZCwgc3Bhbm5hYmxlU3RyaW5nKTsKKyAgICBkLT5tX2lucHV0SGFuZGxl
ci0+c3BlbGxDaGVja2luZ1JlcXVlc3RDYW5jZWxsZWQodHJhbnNhY3Rpb25JZCk7Cit9CisKK3Zv
aWQgV2ViUGFnZTo6c3BlbGxDaGVja2luZ1JlcXVlc3RQcm9jZXNzZWQoaW50MzJfdCB0cmFuc2Fj
dGlvbklkLCBzcGFubmFibGVfc3RyaW5nX3QqIHNwYW5uYWJsZVN0cmluZykKK3sKKyAgICBkLT5t
X2lucHV0SGFuZGxlci0+c3BlbGxDaGVja2luZ1JlcXVlc3RQcm9jZXNzZWQodHJhbnNhY3Rpb25J
ZCwgc3Bhbm5hYmxlU3RyaW5nKTsKIH0KIAogY2xhc3MgRGVmZXJyZWRUYXNrU2VsZWN0aW9uQ2Fu
Y2VsbGVkOiBwdWJsaWMgRGVmZXJyZWRUYXNrPCZXZWJQYWdlUHJpdmF0ZTo6bV93b3VsZENhbmNl
bFNlbGVjdGlvbj4gewpAQCAtNjQwNCw2ICs2NDA5LDcgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6
ZGlkQ2hhbmdlU2V0dGluZ3MoV2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzKQogICAgIGNvcmVTZXR0
aW5ncy0+c2V0RGVmYXVsdFRleHRFbmNvZGluZ05hbWUod2ViU2V0dGluZ3MtPmRlZmF1bHRUZXh0
RW5jb2RpbmdOYW1lKCkuaW1wbCgpKTsKICAgICBjb3JlU2V0dGluZ3MtPnNldERvd25sb2FkYWJs
ZUJpbmFyeUZvbnRzRW5hYmxlZCh3ZWJTZXR0aW5ncy0+ZG93bmxvYWRhYmxlQmluYXJ5Rm9udHNF
bmFibGVkKCkpOwogICAgIGNvcmVTZXR0aW5ncy0+c2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVk
KG1fd2ViU2V0dGluZ3MtPmlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKCkpOworICAgIGNvcmVT
ZXR0aW5ncy0+c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQobV93ZWJTZXR0aW5n
cy0+aXNBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKTsKIAogICAgIFdlYlN0cmlu
ZyBzdHlsZXNoZWV0VVJMID0gd2ViU2V0dGluZ3MtPnVzZXJTdHlsZVNoZWV0U3RyaW5nKCk7CiAg
ICAgaWYgKHN0eWxlc2hlZXRVUkwuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBp
L1dlYlBhZ2UuaAppbmRleCBlNTU2MDg0Zjk5OGZkNWUwZTZkYjhlYjFjN2YzZjg4ZjU1YzRiYjYy
Li41NDY2M2NiNjNhZTdmZDIyYmM4NzczNDE3ZDI2ZjI5NTU3OTMzM2QyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuaApAQCAtMjU2LDcgKzI1Niw4IEBAIHB1YmxpYzoKICAg
ICBpbnQzMl90IGNvbW1pdFRleHQoc3Bhbm5hYmxlX3N0cmluZ190KiwgaW50MzJfdCByZWxhdGl2
ZUN1cnNvclBvc2l0aW9uKTsKIAogICAgIHZvaWQgc2V0U3BlbGxDaGVja2luZ0VuYWJsZWQoYm9v
bCk7Ci0gICAgdm9pZCBzcGVsbENoZWNraW5nUmVxdWVzdFByb2Nlc3NlZChpbnQzMl90IGlkLCBz
cGFubmFibGVfc3RyaW5nX3QqKTsKKyAgICB2b2lkIHNwZWxsQ2hlY2tpbmdSZXF1ZXN0UHJvY2Vz
c2VkKGludDMyX3QgdHJhbnNhY3Rpb25JZCwgc3Bhbm5hYmxlX3N0cmluZ190Kik7CisgICAgdm9p
ZCBzcGVsbENoZWNraW5nUmVxdWVzdENhbmNlbGxlZChpbnQzMl90IHRyYW5zYWN0aW9uSWQpOwog
CiAgICAgdm9pZCBzZXRTZWxlY3Rpb24oY29uc3QgUGxhdGZvcm06OkludFBvaW50JiBzdGFydFBv
aW50LCBjb25zdCBQbGF0Zm9ybTo6SW50UG9pbnQmIGVuZFBvaW50KTsKICAgICB2b2lkIHNldENh
cmV0UG9zaXRpb24oY29uc3QgUGxhdGZvcm06OkludFBvaW50Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViU2V0dGluZ3MuY3BwCmluZGV4IDExNTZkNzQxYWZkNmQyZjdiMTM4
MmExZDY3MGM2MGY0NmZiNTQzZDUuLjUzNTMzYTg5MDM1MjBhYWY2Njc2NTIzYmU2NWNiOWMyNjI5
ZTIyMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViU2V0dGlu
Z3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViU2V0dGluZ3MuY3Bw
CkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBCbGFja0JlcnJ5IHsKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgQmxhY2tCZXJyeUFsbG93Q3Jvc3NT
aXRlUmVxdWVzdHMsICgiQmxhY2tCZXJyeUFsbG93Q3Jvc3NTaXRlUmVxdWVzdHMiKSk7CitERUZJ
TkVfU1RBVElDX0xPQ0FMKFN0cmluZywgQmxhY2tCZXJyeUFzeW5jaHJvbm91c1NwZWxsQ2hlY2tp
bmcsICgiQmxhY2tCZXJyeUFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmciKSk7CiBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgQmxhY2tCZXJyeUJhY2tncm91bmRDb2xvciwgKCJCbGFja0JlcnJ5
QmFja2dyb3VuZENvbG9yIikpOwogREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIEJsYWNrQmVy
cnlDb29raWVzRW5hYmxlZCwgKCJCbGFja0JlcnJ5Q29va2llc0VuYWJsZWQiKSk7CiBERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgQmxhY2tCZXJyeURpcmVjdFJlbmRlcmluZ1RvV2luZG93RW5h
YmxlZCwgKCJCbGFja0JlcnJ5RGlyZWN0UmVuZGVyaW5nVG9XaW5kb3dFbmFibGVkIikpOwpAQCAt
MTc3LDYgKzE3OCw3IEBAIFdlYlNldHRpbmdzKiBXZWJTZXR0aW5nczo6c3RhbmRhcmRTZXR0aW5n
cygpCiAgICAgc2V0dGluZ3MtPm1fcHJpdmF0ZS0+c2V0Qm9vbGVhbihCbGFja0JlcnJ5RnVsbFNj
cmVlblZpZGVvQ2FwYWJsZSwgZmFsc2UpOwogICAgIHNldHRpbmdzLT5tX3ByaXZhdGUtPnNldEJv
b2xlYW4oQmxhY2tCZXJyeUNyZWRlbnRpYWxBdXRvZmlsbEVuYWJsZWQsIGZhbHNlKTsKICAgICBz
ZXR0aW5ncy0+bV9wcml2YXRlLT5zZXRCb29sZWFuKEJsYWNrQmVycnlGb3JtQXV0b2ZpbGxFbmFi
bGVkLCBmYWxzZSk7CisgICAgc2V0dGluZ3MtPm1fcHJpdmF0ZS0+c2V0Qm9vbGVhbihCbGFja0Jl
cnJ5QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZywgdHJ1ZSk7CiAKICAgICBpZiAoQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkRldmljZUluZm86Omluc3RhbmNlKCktPmlzTW9iaWxlKCkpIHsKICAgICAg
ICAgV2ViQ29yZTo6RmxvYXRTaXplIGN1cnJlbnRQUEkgPSBQbGF0Zm9ybTo6R3JhcGhpY3M6OlNj
cmVlbjo6cHJpbWFyeVNjcmVlbigpLT5waXhlbHNQZXJJbmNoKC0xKTsKQEAgLTgwNyw2ICs4MDks
MTYgQEAgdm9pZCBXZWJTZXR0aW5nczo6c2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGJvb2wg
ZW5hYmxlKQogICAgIG1fcHJpdmF0ZS0+c2V0Qm9vbGVhbihTcGF0aWFsTmF2aWdhdGlvbkVuYWJs
ZWQsIGVuYWJsZSk7CiB9CiAKK2Jvb2wgV2ViU2V0dGluZ3M6OmlzQXN5bmNocm9ub3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmdldEJvb2xl
YW4oQmxhY2tCZXJyeUFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmcpOworfQorCit2b2lkIFdlYlNl
dHRpbmdzOjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sIGVuYWJsZSkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5zZXRCb29sZWFuKEJsYWNrQmVycnlBc3lu
Y2hyb25vdXNTcGVsbENoZWNraW5nLCBlbmFibGUpOworfQorCiBib29sIFdlYlNldHRpbmdzOjpm
dWxsU2NyZWVuVmlkZW9DYXBhYmxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5n
ZXRCb29sZWFuKEJsYWNrQmVycnlGdWxsU2NyZWVuVmlkZW9DYXBhYmxlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvV2ViU2V0dGluZ3MuaAppbmRleCAzOWY3YzIwOWIwNTgwODE0M2Jh
NWZiMjEyOTFjMjI2M2NjOWMyMTBmLi5iNjBjYjZkY2ZjZTViNmFmZjRiMjIxOTlkNDRhNTNmNmVl
OWI1YTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlNldHRp
bmdzLmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJTZXR0aW5ncy5oCkBA
IC0yMjgsNiArMjI4LDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNTcGF0aWFsTmF2aWdhdGlvbkVu
YWJsZWQoKSBjb25zdDsKICAgICB2b2lkIHNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChib29s
KTsKIAorICAgIGJvb2wgaXNBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIGNvbnN0
OworICAgIHZvaWQgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkgY29u
c3Q7CisKICAgICBib29sIGZ1bGxTY3JlZW5WaWRlb0NhcGFibGUoKSBjb25zdDsKICAgICB2b2lk
IHNldEZ1bGxTY3JlZW5WaWRlb0NhcGFibGUoYm9vbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRC
bGFja0JlcnJ5LmNwcAppbmRleCBkY2VjMmRlYjQ3ZjM4NmM2NmY0ZmNhYzhiZjEwNTAwNjJkMTMx
NDg5Li5hYWM5MjJkNTVlMTU1ZDY2OGUyZTRiM2M4NWI3MDNjNTQ1MDlhNDhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50Qmxh
Y2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3BwCkBAIC01NzAsNyArNTcwLDEyIEBAIHZvaWQgRWRp
dG9yQ2xpZW50QmxhY2tCZXJyeTo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBp
bnQsIFdURjo6VmVjdG9yCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBFZGl0b3JD
bGllbnRCbGFja0JlcnJ5OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWVzdD4pCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVy
cnk6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFBhc3NSZWZQdHI8VGV4dENoZWNraW5nUmVxdWVz
dD4gdGVzdENoZWNraW5nUmVxdWVzdCkKK3sKKyAgICBtX3dlYlBhZ2VQcml2YXRlLT5tX2lucHV0
SGFuZGxlci0+cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcodGV4dENoZWNraW5nUmVxdWVzdCk7Cit9
CisKK3ZvaWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29u
c3QgVUNoYXIqLCBpbnQsIFRleHRDaGVja2luZ1R5cGVNYXNrLCBWZWN0b3I8VGV4dENoZWNraW5n
UmVzdWx0PiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5
LmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
QmxhY2tCZXJyeS5oCmluZGV4IDI1YTg3MjhmNTUyNGM4N2QxODRkMjc2MWYxZDRhYWUyNzdkNDAz
YWUuLmFiYzU2ZDFmY2I1MmIwMDdmYmM1MTBkNDM4YzY1NWRmZjAwZWRmNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFj
a0JlcnJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEJsYWNrQmVycnkuaApAQCAtODcsNiArODcsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50LCBWZWN0b3I8
R3JhbW1hckRldGFpbCwgMHU+JiwgaW50KiwgaW50Kik7CiAgICAgdmlydHVhbCB2b2lkIGdldEd1
ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTdHJpbmc+
Jik7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdURjo6UGFzc1Jl
ZlB0cjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0Pik7CisgICAgdmlydHVhbCB2b2lkIGNo
ZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiwgaW50LCBUZXh0Q2hlY2tpbmdUeXBlTWFz
aywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKTsKIAogICAgIHZpcnR1YWwgVGV4dENoZWNr
ZXJDbGllbnQqIHRleHRDaGVja2VyKCk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5n
VUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBHcmFtbWFyRGV0YWlsJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1
dEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5w
dXRIYW5kbGVyLmNwcAppbmRleCBlYzFkYjBmMTFiZTE0MDc5OTJkYzM2NDVkYjBkYTYwNDc3NjJk
ZDQyLi45YzNmYjRiNTYwYTljNmIyYjM3MTA1YzkyODdkMDA1Yzc2NzIyZDE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxl
ci5jcHAKQEAgLTUzLDYgKzUzLDggQEAKICNpbmNsdWRlICJTY29wZVBvaW50ZXIuaCIKICNpbmNs
dWRlICJTZWxlY3RQb3B1cENsaWVudC5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkhhbmRsZXIuaCIK
KyNpbmNsdWRlICJTcGVsbENoZWNrZXIuaCIKKyNpbmNsdWRlICJUZXh0Q2hlY2tlckNsaWVudC5o
IgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIldlYlBhZ2VDbGllbnQuaCIK
ICNpbmNsdWRlICJXZWJQYWdlX3AuaCIKQEAgLTUxOCwxMiArNTIwLDEyNyBAQCB2b2lkIElucHV0
SGFuZGxlcjo6bGVhcm5UZXh0KCkKICAgICBzZW5kTGVhcm5UZXh0RGV0YWlscyh0ZXh0SW5GaWVs
ZCk7CiB9CiAKK3ZvaWQgSW5wdXRIYW5kbGVyOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhQYXNz
UmVmUHRyPFdlYkNvcmU6OlRleHRDaGVja2luZ1JlcXVlc3Q+IHRleHRDaGVja2luZ1JlcXVlc3Qp
Cit7CisgICAgUmVmUHRyPFdlYkNvcmU6OlRleHRDaGVja2luZ1JlcXVlc3Q+IHJlcXVlc3QgPSB0
ZXh0Q2hlY2tpbmdSZXF1ZXN0OworCisgICAgaW50MzJfdCBzZXF1ZW5jZUlkID0gcmVxdWVzdC0+
c2VxdWVuY2UoKTsKKyAgICBpbnQgcmVxdWVzdExlbmd0aCA9IHJlcXVlc3QtPnRleHQoKS5sZW5n
dGgoKTsKKyAgICBpZiAoIXJlcXVlc3RMZW5ndGggLyogfHwgcmVxdWVzdExlbmd0aCA+IG1heFNw
ZWxsQ2hlY2tTdHJpbmdMZW5ndGggKi8pIHsKKyAgICAgICAgc3BlbGxDaGVja2luZ1JlcXVlc3RD
YW5jZWxsZWQoc2VxdWVuY2VJZCwgdHJ1ZSAvKiBpc1NlcXVlbmNlSWQgKi8pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgd2NoYXJfdCogY2hlY2tpbmdTdHJpbmcgPSAod2NoYXJfdCop
bWFsbG9jKHNpemVvZih3Y2hhcl90KSAqIChyZXF1ZXN0TGVuZ3RoICsgMSkpOworICAgIGlmICgh
Y2hlY2tpbmdTdHJpbmcpIHsKKyAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OmxvZ0Fsd2F5
cyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIklucHV0SGFuZGxlcjo6
cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcgQ2Fubm90IGFsbG9jYXRlIG1lbW9yeSBmb3Igc3RyaW5n
LiIpOworICAgICAgICBzcGVsbENoZWNraW5nUmVxdWVzdENhbmNlbGxlZChzZXF1ZW5jZUlkLCB0
cnVlIC8qIGlzU2VxdWVuY2VJZCAqLyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
bnQgc3RyaW5nTGVuZ3RoID0gMDsKKyAgICBpZiAoIWNvbnZlcnRTdHJpbmdUb1djaGFyKHJlcXVl
c3QtPnRleHQoKSwgY2hlY2tpbmdTdHJpbmcsIHJlcXVlc3RMZW5ndGggKyAxLCAmc3RyaW5nTGVu
Z3RoKSkgeworICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6bG9nQWx3YXlzKEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiSW5wdXRIYW5kbGVyOjpyZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluZyBGYWlsZWQgdG8gY29udmVydCBTdHJpbmcgdG8gd2NoYXIgdHlwZS4iKTsK
KyAgICAgICAgZnJlZShjaGVja2luZ1N0cmluZyk7CisgICAgICAgIHNwZWxsQ2hlY2tpbmdSZXF1
ZXN0Q2FuY2VsbGVkKHNlcXVlbmNlSWQsIHRydWUgLyogaXNTZXF1ZW5jZUlkICovKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGludDMyX3QgdHJhbnNhY3Rpb25JZCA9IG1fd2ViUGFn
ZS0+bV9jbGllbnQtPmNoZWNrU3BlbGxpbmdPZlN0cmluZ0FzeW5jKGNoZWNraW5nU3RyaW5nLCBz
dHJpbmdMZW5ndGgpOworICAgIGZyZWUoY2hlY2tpbmdTdHJpbmcpOworCisgICAgLy8gSWYgdGhl
IGNhbGwgdG8gdGhlIGlucHV0IHNlcnZpY2UgZGlkIG5vdCBnbyB0aHJvdWdoLCB0aGVuIGNhbmNl
bCB0aGUgcmVxdWVzdCBzbyB3ZSBkb24ndCBibG9jayBlbmRsZXNzbHkuCisgICAgLy8gVGhpcyBz
aG91bGQgc3RpbGwgdGFrZSB0cmFuc2FjdGlvbklkIGFzIGEgcGFyYW1ldGVyIHRvIG1haW50YWlu
IHRoZSBzYW1lIGJlaGF2aW9yIGFzIGlmIElucHV0TWV0aG9kU3VwcG9ydAorICAgIC8vIHdlcmUg
dG8gY2FuY2VsIGEgcmVxdWVzdCBkdXJpbmcgcHJvY2Vzc2luZy4KKyAgICBpZiAodHJhbnNhY3Rp
b25JZCA9PSAtMSkgeyAvLyBFcnJvciBiZWZvcmUgc2VuZGluZyByZXF1ZXN0IHRvIGlucHV0IHNl
cnZpY2UuCisgICAgICAgIHNwZWxsQ2hlY2tpbmdSZXF1ZXN0Q2FuY2VsbGVkKHNlcXVlbmNlSWQs
IHRydWUgLyogaXNTZXF1ZW5jZUlkICovKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IC8vIG1hcCBzZXF1ZW5jZUlkIHRvIHRyYW5zYWN0aW9uSWQuCisgICAgbV9zZXF1ZW5jZU1hcFt0
cmFuc2FjdGlvbklkXSA9IHNlcXVlbmNlSWQ7Cit9CiAKLXZvaWQgSW5wdXRIYW5kbGVyOjpzcGVs
bENoZWNraW5nUmVxdWVzdFByb2Nlc3NlZChpbnQzMl90IGlkLCBzcGFubmFibGVfc3RyaW5nX3Qq
IHNwYW5uYWJsZVN0cmluZykKK2ludDMyX3QgSW5wdXRIYW5kbGVyOjpjb252ZXJ0VHJhbnNhY3Rp
b25JZFRvU2VxdWVuY2VJZChpbnQzMl90IHRyYW5zYWN0aW9uSWQpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKGlkKTsKLSAgICBVTlVTRURfUEFSQU0oc3Bhbm5hYmxlU3RyaW5nKTsKLSAgICAvLyBUT0RP
IGltcGxlbWVudC4KKyAgICBzdGQ6Om1hcDxpbnQzMl90LCBpbnQzMl90Pjo6aXRlcmF0b3IgaXQg
PSBtX3NlcXVlbmNlTWFwLmZpbmQodHJhbnNhY3Rpb25JZCk7CisKKyAgICBpZiAoaXQgPT0gbV9z
ZXF1ZW5jZU1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpbnQzMl90IHNlcXVl
bmNlSWQgPSBpdC0+c2Vjb25kOworICAgIC8vIFdlIG9ubHkgY29udmVydCB0aGlzIHZhbHVlIHdo
ZW4gd2UgaGF2ZSByZWNlaXZlZCBpdHMgcmVzcG9uc2UsIHNvIGl0cyBzYWZlIHRvIHJlbW92ZSBp
dCBmcm9tIHRoZSBtYXAuCisgICAgbV9zZXF1ZW5jZU1hcC5lcmFzZShpdCk7CisKKyAgICByZXR1
cm4gc2VxdWVuY2VJZDsKK30KKwordm9pZCBJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tpbmdSZXF1
ZXN0UHJvY2Vzc2VkKGludDMyX3QgdHJhbnNhY3Rpb25JZCwgc3Bhbm5hYmxlX3N0cmluZ190KiBz
cGFubmFibGVTdHJpbmcpCit7CisgICAgaWYgKCFzcGFubmFibGVTdHJpbmcpIHsKKyAgICAgICAg
c3BlbGxDaGVja2luZ1JlcXVlc3RDYW5jZWxsZWQodHJhbnNhY3Rpb25JZCwgZmFsc2UgLyogaXNT
ZXF1ZW5jZUlkICovKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFZlY3RvcjxUZXh0
Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CisKKyAgICAvLyBDb252ZXJ0IHRoZSBzcGFubmFibGVT
dHJpbmcgdG8gVGV4dENoZWNraW5nUmVzdWx0IHRoZW4gYXBwZW5kIHRvIHJlc3VsdHMgdmVjdG9y
LgorICAgIFN0cmluZyByZXBsYWNlbWVudDsKKyAgICBUZXh0Q2hlY2tpbmdSZXN1bHQgdGV4dENo
ZWNraW5nUmVzdWx0OworICAgIHRleHRDaGVja2luZ1Jlc3VsdC50eXBlID0gVGV4dENoZWNraW5n
VHlwZVNwZWxsaW5nOworICAgIHRleHRDaGVja2luZ1Jlc3VsdC5yZXBsYWNlbWVudCA9IHJlcGxh
Y2VtZW50OworICAgIHRleHRDaGVja2luZ1Jlc3VsdC5sb2NhdGlvbiA9IDA7CisgICAgdGV4dENo
ZWNraW5nUmVzdWx0Lmxlbmd0aCA9IDA7CisKKyAgICBzcGFuX3QqIHNwYW4gPSBzcGFubmFibGVT
dHJpbmctPnNwYW5zOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc3Bhbm5hYmxl
U3RyaW5nLT5zcGFuc19jb3VudDsgaSsrKSB7CisgICAgICAgIGlmICghc3BhbikKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBpZiAoc3Bhbi0+ZW5kIDwgc3Bhbi0+c3RhcnQpIHsKKyAgICAg
ICAgICAgIHNwZWxsQ2hlY2tpbmdSZXF1ZXN0Q2FuY2VsbGVkKHRyYW5zYWN0aW9uSWQsIGZhbHNl
IC8qIGlzU2VxdWVuY2VJZCAqLyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKHNwYW4tPmF0dHJpYnV0ZXNfbWFzayAmIE1JU1NQRUxMRURfV09SRF9BVFRSSUIp
IHsKKyAgICAgICAgICAgIHRleHRDaGVja2luZ1Jlc3VsdC5sb2NhdGlvbiA9IHNwYW4tPnN0YXJ0
OworICAgICAgICAgICAgLy8gVGhlIGVuZCBwb2ludCBpbmNsdWRlcyB0aGUgY2hhcmFjdGVyIHRo
YXQgaXQgaXMgYmVmb3JlLiBJZSwgMCwgMAorICAgICAgICAgICAgLy8gYXBwbGllcyB0byB0aGUg
Zmlyc3QgY2hhcmFjdGVyIGFzIHRoZSBlbmQgcG9pbnQgaW5jbHVkZXMgdGhlIGNoYXJhY3Rlcgor
ICAgICAgICAgICAgLy8gYXQgdGhlIHBvc2l0aW9uLiBUaGlzIG1lYW5zIHRoZSBlbmRQb3NpdGlv
biBpcyBhbHdheXMgKzEuCisgICAgICAgICAgICB0ZXh0Q2hlY2tpbmdSZXN1bHQubGVuZ3RoID0g
c3Bhbi0+ZW5kIC0gc3Bhbi0+c3RhcnQgKyAxOworICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQo
dGV4dENoZWNraW5nUmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICBzcGFuKys7CisgICAgfQor
CisgICAgLy8gdHJhbnNhY3Rpb25JZCBoZXJlIGlzIGZvciB1c2Ugd2l0aCB0aGUgaW5wdXQgc2Vy
dmljZS4gV2UgbmVlZCB0byB0cmFuc2xhdGUgdGhpcyB0byBzZXF1ZW5jZUlkIHVzZWQgd2l0aCBT
cGVsbENoZWNrZXIuCisgICAgaW50MzJfdCBzZXF1ZW5jZUlkID0gY29udmVydFRyYW5zYWN0aW9u
SWRUb1NlcXVlbmNlSWQodHJhbnNhY3Rpb25JZCk7CisKKyAgICBTcGVsbENoZWNrZXIqIHNwID0g
Z2V0U3BlbGxDaGVja2VyKCk7CisgICAgaWYgKCFzcCB8fCAhc2VxdWVuY2VJZCkgeworICAgICAg
ICBJbnB1dExvZyhMb2dMZXZlbFdhcm4sICJJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tpbmdSZXF1
ZXN0UHJvY2Vzc2VkIGZhaWxlZCB0byBwcm9jZXNzIHRoZSByZXF1ZXN0IHdpdGggc2VxdWVuY2VJ
ZCAlZCIsIHNlcXVlbmNlSWQpOworICAgICAgICBzcGVsbENoZWNraW5nUmVxdWVzdENhbmNlbGxl
ZChzZXF1ZW5jZUlkLCB0cnVlIC8qIGlzU2VxdWVuY2VJZCAqLyk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgc3AtPmRpZENoZWNrU3VjY2VlZGVkKHNlcXVlbmNlSWQsIHJlc3VsdHMpOwor
fQorCit2b2lkIElucHV0SGFuZGxlcjo6c3BlbGxDaGVja2luZ1JlcXVlc3RDYW5jZWxsZWQoaW50
MzJfdCBpZCwgYm9vbCBpc1NlcXVlbmNlSWQpCit7CisgICAgaW50MzJfdCBzZXF1ZW5jZUlkID0g
aXNTZXF1ZW5jZUlkID8gaWQgOiBjb252ZXJ0VHJhbnNhY3Rpb25JZFRvU2VxdWVuY2VJZChpZCk7
CisgICAgU3BlbGxDaGVja2VyKiBzcCA9IGdldFNwZWxsQ2hlY2tlcigpOworICAgIGlmICghc3Ap
IHsKKyAgICAgICAgSW5wdXRMb2coTG9nTGV2ZWxXYXJuLCAiSW5wdXRIYW5kbGVyOjpzcGVsbENo
ZWNraW5nUmVxdWVzdENhbmNlbGxlZCBmYWlsZWQgdG8gY2FuY2VsIHRoZSByZXF1ZXN0IHdpdGgg
c2VxdWVuY2VJZCAlZCIsIHNlcXVlbmNlSWQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IHNwLT5kaWRDaGVja0NhbmNlbGVkKHNlcXVlbmNlSWQpOworfQorCitTcGVsbENoZWNrZXIqIElu
cHV0SGFuZGxlcjo6Z2V0U3BlbGxDaGVja2VyKCkKK3sKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0g
bV9jdXJyZW50Rm9jdXNFbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpKQorICAgICAgICBpZiAo
RWRpdG9yKiBlZGl0b3IgPSBmcmFtZS0+ZWRpdG9yKCkpCisgICAgICAgICAgICByZXR1cm4gZWRp
dG9yLT5zcGVsbENoZWNrZXIoKTsKKworICAgIHJldHVybiAwOwogfQogCiB2b2lkIElucHV0SGFu
ZGxlcjo6c2V0RWxlbWVudFVuZm9jdXNlZChib29sIHJlZm9jdXNPY2N1cmluZykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5o
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmgK
aW5kZXggYTZlZWQzYjdlMmY0NjZkNWVjZWQxMGQ2ZDQ4YmM1YWY4MDhhMzMwMi4uZTQ5MmM2MDdm
ZjFlYzRkNWRmZGRjNmM1NjE4Zjg5N2NiOTliOGU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmgKQEAgLTIyLDcgKzIy
LDcgQEAKICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1JbnB1dEV2ZW50cy5oPgogCiAjaW5j
bHVkZSA8aW1mL2lucHV0X2RhdGEuaD4KLQorI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMzcsNiArMzcsOCBAQCBjbGFzcyBIVE1M
SW5wdXRFbGVtZW50OwogY2xhc3MgSFRNTFNlbGVjdEVsZW1lbnQ7CiBjbGFzcyBJbnRSZWN0Owog
Y2xhc3MgTm9kZTsKK2NsYXNzIFNwZWxsQ2hlY2tlcjsKK2NsYXNzIFRleHRDaGVja2luZ1JlcXVl
c3Q7CiB9CiAKIG5hbWVzcGFjZSBCbGFja0JlcnJ5IHsKQEAgLTEyMiw3ICsxMjQsOSBAQCBwdWJs
aWM6CiAgICAgaW50MzJfdCBzZXRDb21wb3NpbmdUZXh0KHNwYW5uYWJsZV9zdHJpbmdfdCosIGlu
dDMyX3QgcmVsYXRpdmVDdXJzb3JQb3NpdGlvbik7CiAgICAgaW50MzJfdCBjb21taXRUZXh0KHNw
YW5uYWJsZV9zdHJpbmdfdCosIGludDMyX3QgcmVsYXRpdmVDdXJzb3JQb3NpdGlvbik7CiAKLSAg
ICB2b2lkIHNwZWxsQ2hlY2tpbmdSZXF1ZXN0UHJvY2Vzc2VkKGludDMyX3QgaWQsIHNwYW5uYWJs
ZV9zdHJpbmdfdCopOworICAgIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV1RGOjpQYXNz
UmVmUHRyPFdlYkNvcmU6OlRleHRDaGVja2luZ1JlcXVlc3Q+KTsKKyAgICB2b2lkIHNwZWxsQ2hl
Y2tpbmdSZXF1ZXN0UHJvY2Vzc2VkKGludDMyX3QgdHJhbnNhY3Rpb25JZCwgc3Bhbm5hYmxlX3N0
cmluZ190Kik7CisgICAgdm9pZCBzcGVsbENoZWNraW5nUmVxdWVzdENhbmNlbGxlZChpbnQzMl90
IGlkLCBib29sIGlzU2VxdWVuY2VJZCA9IGZhbHNlKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIFBl
bmRpbmdLZXlib2FyZFN0YXRlQ2hhbmdlIHsgTm9DaGFuZ2UsIFZpc2libGUsIE5vdFZpc2libGUg
fTsKQEAgLTE3OSw2ICsxODMsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBsZWFyblRleHQoKTsK
ICAgICB2b2lkIHNlbmRMZWFyblRleHREZXRhaWxzKGNvbnN0IFdURjo6U3RyaW5nJik7CisgICAg
aW50MzJfdCBjb252ZXJ0VHJhbnNhY3Rpb25JZFRvU2VxdWVuY2VJZChpbnQzMl90IHRyYW5zYWN0
aW9uSWQpOworICAgIFdlYkNvcmU6OlNwZWxsQ2hlY2tlciogZ2V0U3BlbGxDaGVja2VyKCk7CiAK
ICAgICBXZWJQYWdlUHJpdmF0ZSogbV93ZWJQYWdlOwogCkBAIC0xOTYsNiArMjAyLDggQEAgcHJp
dmF0ZToKIAogICAgIFBlbmRpbmdLZXlib2FyZFN0YXRlQ2hhbmdlIG1fcGVuZGluZ0tleWJvYXJk
VmlzaWJpbGl0eUNoYW5nZTsKICAgICBib29sIG1fZGVsYXlLZXlib2FyZFZpc2liaWxpdHlDaGFu
Z2U7CisKKyAgICBzdGQ6Om1hcDxpbnQzMl90LCBpbnQzMl90PiBtX3NlcXVlbmNlTWFwOwogfTsK
IAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154732</attachid>
            <date>2012-07-26 13:26:45 -0700</date>
            <delta_ts>2012-07-26 16:05:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92160-20120726162204.patch</filename>
            <type>text/plain</type>
            <size>18486</size>
            <attacher name="Nima Ghanavatian">nima.ghanavatian</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYzMDUzNzY0NGE3Mjg5
ZmFjYmE4NWU3YzRkMjliZWJjNTRmZjEwMC4uMGE2YWEwMDc4MTBjNDdjMjM1MmVhNDgwZmI0MDA2
ZmI0MDg2YjdkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA3LTI0ICBOaW1h
IEdoYW5hdmF0aWFuICA8bmdoYW5hdmF0aWFuQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVy
cnldIFN1cHBvcnQgYXN5bmMgc3BlbGxjaGVjayBmb3IgdGhlIGJsYWNrYmVycnkgcG9ydAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIxNjAKKworICAg
ICAgICBTZXQgVVNFX1VOSUZJRURfVEVYVF9DSEVDS0lORyBmb3IgUExBVEZPUk0oQkxBQ0tCRVJS
WSkgdG8gdXNlIHRoZQorICAgICAgICBhc3luY2hyb25vdXMgc3BlbGxjaGVja2luZyBjb2RlIHBh
dGguCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50
ZXJuYWxseSByZXZpZXdlZCBieSBNaWtlIEZlbnRvbi4KKworICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvVGV4dENoZWNraW5nLmg6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wNy0yNiAgVG9u
eSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlZ3Jlc3Npb246IHIxMjM2
OTYgbWFkZSBjc3MzL2ZsZXhib3ggdGVzdHMgZmFpbGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKaW5kZXggNGJkZWUzNDM3OTg4NzA1ZTQ0NWE1YTA5ZDA5NTk1ZmMxZjc4NTY1My4uYmFj
MmJiNGRkZDczN2UyMmYzMTgxMDc0YTZiMTc0ZmU5NDg3ZjVkYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTItMDctMjQgIE5pbWEgR2hhbmF2YXRp
YW4gIDxuZ2hhbmF2YXRpYW5AcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gU3VwcG9y
dCBhc3luYyBzcGVsbGNoZWNrIGZvciB0aGUgYmxhY2tiZXJyeSBwb3J0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjE2MAorCisgICAgICAgIFBSMTI0
NTE3CisgICAgICAgIEltcGxlbWVudGluZyBzdXBwb3J0IGZvciBhc3luYyBzcGVsbGNoZWNrLgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludGVybmFs
bHkgcmV2aWV3ZWQgYnkgTWlrZSBGZW50b24uCisKKyAgICAgICAgKiBBcGkvV2ViUGFnZS5jcHA6
CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2U6OnNwZWxsQ2hlY2tpbmdSZXF1
ZXN0Q2FuY2VsbGVkKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6OldlYlBhZ2U6OnNwZWxsQ2hlY2tpbmdSZXF1ZXN0UHJvY2Vzc2VkKToKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OmRpZENoYW5nZVNldHRpbmdzKToK
KyAgICAgICAgKiBBcGkvV2ViUGFnZS5oOgorICAgICAgICAqIEFwaS9XZWJTZXR0aW5ncy5jcHA6
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJTZXR0
aW5nczo6c3RhbmRhcmRTZXR0aW5ncyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6Oldl
YlNldHRpbmdzOjppc0FzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKToKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6V2ViU2V0dGluZ3M6OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKToKKyAgICAgICAgKiBBcGkvV2ViU2V0dGluZ3MuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVxdWVzdENo
ZWNraW5nT2ZTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJy
eTo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEJsYWNrQmVycnkuaDoKKyAgICAgICAgKEVkaXRvckNsaWVudEJsYWNrQmVycnkpOgor
ICAgICAgICAqIFdlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNwcDoKKyAgICAgICAgKEJsYWNr
QmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6Y29udmVydFRyYW5zYWN0
aW9uSWRUb1NlcXVlbmNlSWQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEJsYWNrQmVy
cnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpzcGVsbENoZWNraW5nUmVxdWVzdFByb2Nlc3NlZCk6
CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c3BlbGxDaGVja2lu
Z1JlcXVlc3RDYW5jZWxsZWQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhh
bmRsZXI6OmdldFNwZWxsQ2hlY2tlcik6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9JbnB1dEhh
bmRsZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5wdXRIYW5kbGVyKToKKwog
MjAxMi0wNy0yNiAgTWlrZSBGZW50b24gIDxtaWZlbnRvbkByaW0uY29tPgogCiAgICAgICAgIFtC
bGFja0JlcnJ5XSBJbnB1dEhhbmRsZXIgZmFpbHVyZSBsb2dzIHNob3VsZCBiZSBsb2dBbHdheXMg
YW5kIGNyaXRpY2FsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0Q2hlY2tpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNraW5n
LmgKaW5kZXggNTMzNjQzOTdmODU3ZjBhZDg3YmNmZGNkZDAwNzgxZWE5MWJiYzk3OS4uMTNkYTVl
OTczMjk4ZTM1MjAzMDUyNTQ2Mzk5NzczOTcxOTZhNjhkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oCkBAIC0zOSw4ICszOSwxMCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICNkZWZpbmUgV1RGX1VTRV9HUkFNTUFSX0NIRUNLSU5HIDEKIAotI2lmIFBM
QVRGT1JNKE1BQykgJiYgKFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDYwKQorI2lmIChQTEFURk9STShNQUMpICYmIChQTEFURk9STShJT1MpIHx8
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MCkpIHx8IFBMQVRGT1JNKEJM
QUNLQkVSUlkpCiAjZGVmaW5lIFdURl9VU0VfVU5JRklFRF9URVhUX0NIRUNLSU5HIDEKKyNlbmRp
ZgorI2lmIFBMQVRGT1JNKE1BQykgJiYgKFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwKQogI2RlZmluZSBXVEZfVVNFX0FVVE9NQVRJQ19URVhU
X1JFUExBQ0VNRU5UIDEKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQXBpL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQ
YWdlLmNwcAppbmRleCBlZDliNDExOTI5NDVmYWNkMzE2NzgzMGNjZjg3ZjkwNzk5ZWFkM2Y5Li5m
ZTAxM2U1NmFiNzk3MmYyZWJkZTJhYTFkNDE4ZGIyNjU5ZWY0OTA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKQEAgLTQ1OTMsOSArNDU5MywxNCBAQCB2b2lkIFdl
YlBhZ2U6OnNldFNwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBzdGF0aWNf
Y2FzdDxFZGl0b3JDbGllbnRCbGFja0JlcnJ5Kj4oZC0+bV9wYWdlLT5lZGl0b3JDbGllbnQoKSkt
PmVuYWJsZVNwZWxsQ2hlY2tpbmcoZW5hYmxlZCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c3BlbGxD
aGVja2luZ1JlcXVlc3RQcm9jZXNzZWQoaW50MzJfdCBpZCwgc3Bhbm5hYmxlX3N0cmluZ190KiBz
cGFubmFibGVTdHJpbmcpCit2b2lkIFdlYlBhZ2U6OnNwZWxsQ2hlY2tpbmdSZXF1ZXN0Q2FuY2Vs
bGVkKGludDMyX3QgdHJhbnNhY3Rpb25JZCkKIHsKLSAgICBkLT5tX2lucHV0SGFuZGxlci0+c3Bl
bGxDaGVja2luZ1JlcXVlc3RQcm9jZXNzZWQoaWQsIHNwYW5uYWJsZVN0cmluZyk7CisgICAgZC0+
bV9pbnB1dEhhbmRsZXItPnNwZWxsQ2hlY2tpbmdSZXF1ZXN0Q2FuY2VsbGVkKHRyYW5zYWN0aW9u
SWQpOworfQorCit2b2lkIFdlYlBhZ2U6OnNwZWxsQ2hlY2tpbmdSZXF1ZXN0UHJvY2Vzc2VkKGlu
dDMyX3QgdHJhbnNhY3Rpb25JZCwgc3Bhbm5hYmxlX3N0cmluZ190KiBzcGFubmFibGVTdHJpbmcp
Cit7CisgICAgZC0+bV9pbnB1dEhhbmRsZXItPnNwZWxsQ2hlY2tpbmdSZXF1ZXN0UHJvY2Vzc2Vk
KHRyYW5zYWN0aW9uSWQsIHNwYW5uYWJsZVN0cmluZyk7CiB9CiAKIGNsYXNzIERlZmVycmVkVGFz
a1NlbGVjdGlvbkNhbmNlbGxlZDogcHVibGljIERlZmVycmVkVGFzazwmV2ViUGFnZVByaXZhdGU6
Om1fd291bGRDYW5jZWxTZWxlY3Rpb24+IHsKQEAgLTY0MDQsNiArNjQwOSw3IEBAIHZvaWQgV2Vi
UGFnZVByaXZhdGU6OmRpZENoYW5nZVNldHRpbmdzKFdlYlNldHRpbmdzKiB3ZWJTZXR0aW5ncykK
ICAgICBjb3JlU2V0dGluZ3MtPnNldERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lKHdlYlNldHRpbmdz
LT5kZWZhdWx0VGV4dEVuY29kaW5nTmFtZSgpLmltcGwoKSk7CiAgICAgY29yZVNldHRpbmdzLT5z
ZXREb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQod2ViU2V0dGluZ3MtPmRvd25sb2FkYWJs
ZUJpbmFyeUZvbnRzRW5hYmxlZCgpKTsKICAgICBjb3JlU2V0dGluZ3MtPnNldFNwYXRpYWxOYXZp
Z2F0aW9uRW5hYmxlZChtX3dlYlNldHRpbmdzLT5pc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCgp
KTsKKyAgICBjb3JlU2V0dGluZ3MtPnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KG1fd2ViU2V0dGluZ3MtPmlzQXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSk7CiAK
ICAgICBXZWJTdHJpbmcgc3R5bGVzaGVldFVSTCA9IHdlYlNldHRpbmdzLT51c2VyU3R5bGVTaGVl
dFN0cmluZygpOwogICAgIGlmIChzdHlsZXNoZWV0VVJMLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0FwaS9XZWJQYWdlLmgKaW5kZXggZTU1NjA4NGY5OThmZDVlMGU2ZGI4ZWIxYzdm
M2Y4OGY1NWM0YmI2Mi4uNTQ2NjNjYjYzYWU3ZmQyMmJjODc3MzQxN2QyNmYyOTU1NzkzMzNkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmgKQEAgLTI1Niw3ICsyNTYsOCBA
QCBwdWJsaWM6CiAgICAgaW50MzJfdCBjb21taXRUZXh0KHNwYW5uYWJsZV9zdHJpbmdfdCosIGlu
dDMyX3QgcmVsYXRpdmVDdXJzb3JQb3NpdGlvbik7CiAKICAgICB2b2lkIHNldFNwZWxsQ2hlY2tp
bmdFbmFibGVkKGJvb2wpOwotICAgIHZvaWQgc3BlbGxDaGVja2luZ1JlcXVlc3RQcm9jZXNzZWQo
aW50MzJfdCBpZCwgc3Bhbm5hYmxlX3N0cmluZ190Kik7CisgICAgdm9pZCBzcGVsbENoZWNraW5n
UmVxdWVzdFByb2Nlc3NlZChpbnQzMl90IHRyYW5zYWN0aW9uSWQsIHNwYW5uYWJsZV9zdHJpbmdf
dCopOworICAgIHZvaWQgc3BlbGxDaGVja2luZ1JlcXVlc3RDYW5jZWxsZWQoaW50MzJfdCB0cmFu
c2FjdGlvbklkKTsKIAogICAgIHZvaWQgc2V0U2VsZWN0aW9uKGNvbnN0IFBsYXRmb3JtOjpJbnRQ
b2ludCYgc3RhcnRQb2ludCwgY29uc3QgUGxhdGZvcm06OkludFBvaW50JiBlbmRQb2ludCk7CiAg
ICAgdm9pZCBzZXRDYXJldFBvc2l0aW9uKGNvbnN0IFBsYXRmb3JtOjpJbnRQb2ludCYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJTZXR0aW5ncy5jcHAgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlNldHRpbmdzLmNwcAppbmRleCAxMTU2ZDc0
MWFmZDZkMmY3YjEzODJhMWQ2NzBjNjBmNDZmYjU0M2Q1Li41MzUzM2E4OTAzNTIwYWFmNjY3NjUy
M2JlNjVjYjljMjYyOWUyMjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYlNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dl
YlNldHRpbmdzLmNwcApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgQmxhY2tCZXJyeSB7CiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIEJsYWNrQmVy
cnlBbGxvd0Nyb3NzU2l0ZVJlcXVlc3RzLCAoIkJsYWNrQmVycnlBbGxvd0Nyb3NzU2l0ZVJlcXVl
c3RzIikpOworREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIEJsYWNrQmVycnlBc3luY2hyb25v
dXNTcGVsbENoZWNraW5nLCAoIkJsYWNrQmVycnlBc3luY2hyb25vdXNTcGVsbENoZWNraW5nIikp
OwogREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIEJsYWNrQmVycnlCYWNrZ3JvdW5kQ29sb3Is
ICgiQmxhY2tCZXJyeUJhY2tncm91bmRDb2xvciIpKTsKIERFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCBCbGFja0JlcnJ5Q29va2llc0VuYWJsZWQsICgiQmxhY2tCZXJyeUNvb2tpZXNFbmFibGVk
IikpOwogREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIEJsYWNrQmVycnlEaXJlY3RSZW5kZXJp
bmdUb1dpbmRvd0VuYWJsZWQsICgiQmxhY2tCZXJyeURpcmVjdFJlbmRlcmluZ1RvV2luZG93RW5h
YmxlZCIpKTsKQEAgLTE3Nyw2ICsxNzgsNyBAQCBXZWJTZXR0aW5ncyogV2ViU2V0dGluZ3M6OnN0
YW5kYXJkU2V0dGluZ3MoKQogICAgIHNldHRpbmdzLT5tX3ByaXZhdGUtPnNldEJvb2xlYW4oQmxh
Y2tCZXJyeUZ1bGxTY3JlZW5WaWRlb0NhcGFibGUsIGZhbHNlKTsKICAgICBzZXR0aW5ncy0+bV9w
cml2YXRlLT5zZXRCb29sZWFuKEJsYWNrQmVycnlDcmVkZW50aWFsQXV0b2ZpbGxFbmFibGVkLCBm
YWxzZSk7CiAgICAgc2V0dGluZ3MtPm1fcHJpdmF0ZS0+c2V0Qm9vbGVhbihCbGFja0JlcnJ5Rm9y
bUF1dG9maWxsRW5hYmxlZCwgZmFsc2UpOworICAgIHNldHRpbmdzLT5tX3ByaXZhdGUtPnNldEJv
b2xlYW4oQmxhY2tCZXJyeUFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmcsIHRydWUpOwogCiAgICAg
aWYgKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpEZXZpY2VJbmZvOjppbnN0YW5jZSgpLT5pc01vYmls
ZSgpKSB7CiAgICAgICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBjdXJyZW50UFBJID0gUGxhdGZvcm06
OkdyYXBoaWNzOjpTY3JlZW46OnByaW1hcnlTY3JlZW4oKS0+cGl4ZWxzUGVySW5jaCgtMSk7CkBA
IC04MDcsNiArODA5LDE2IEBAIHZvaWQgV2ViU2V0dGluZ3M6OnNldFNwYXRpYWxOYXZpZ2F0aW9u
RW5hYmxlZChib29sIGVuYWJsZSkKICAgICBtX3ByaXZhdGUtPnNldEJvb2xlYW4oU3BhdGlhbE5h
dmlnYXRpb25FbmFibGVkLCBlbmFibGUpOwogfQogCitib29sIFdlYlNldHRpbmdzOjppc0FzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2
YXRlLT5nZXRCb29sZWFuKEJsYWNrQmVycnlBc3luY2hyb25vdXNTcGVsbENoZWNraW5nKTsKK30K
Kwordm9pZCBXZWJTZXR0aW5nczo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQo
Ym9vbCBlbmFibGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2V0Qm9vbGVhbihC
bGFja0JlcnJ5QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZywgZW5hYmxlKTsKK30KKwogYm9vbCBX
ZWJTZXR0aW5nczo6ZnVsbFNjcmVlblZpZGVvQ2FwYWJsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fcHJpdmF0ZS0+Z2V0Qm9vbGVhbihCbGFja0JlcnJ5RnVsbFNjcmVlblZpZGVvQ2FwYWJsZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlNldHRpbmdzLmgg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlNldHRpbmdzLmgKaW5kZXggMzlmN2My
MDliMDU4MDgxNDNiYTVmYjIxMjkxYzIyNjNjYzljMjEwZi4uYjYwY2I2ZGNmY2U1YjZhZmY0YjIy
MTk5ZDQ0YTUzZjZlZTliNWEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0FwaS9XZWJTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2Vi
U2V0dGluZ3MuaApAQCAtMjI4LDYgKzIyOCw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzU3BhdGlh
bE5hdmlnYXRpb25FbmFibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTcGF0aWFsTmF2aWdhdGlv
bkVuYWJsZWQoYm9vbCk7CiAKKyAgICBib29sIGlzQXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0Vu
YWJsZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKGJvb2wpIGNvbnN0OworCiAgICAgYm9vbCBmdWxsU2NyZWVuVmlkZW9DYXBhYmxlKCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRGdWxsU2NyZWVuVmlkZW9DYXBhYmxlKGJvb2wpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
QmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAKaW5kZXggZGNlYzJkZWI0N2YzODZjNjZmNGZjYWM4
YmYxMDUwMDYyZDEzMTQ4OS4uYWFjOTIyZDU1ZTE1NWQ2NjhlMmU0YjNjODViNzAzYzU0NTA5YTQ4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmNwcApAQCAtNTcwLDcgKzU3MCwx
MiBAQCB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNoZWNrR3JhbW1hck9mU3RyaW5nKGNv
bnN0IFVDaGFyKiwgaW50LCBXVEY6OlZlY3RvcgogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAK
LXZvaWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OlRleHRDaGVja2luZ1JlcXVlc3Q+KQordm9pZCBFZGl0b3JD
bGllbnRCbGFja0JlcnJ5OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhQYXNzUmVmUHRyPFRleHRD
aGVja2luZ1JlcXVlc3Q+IHRlc3RDaGVja2luZ1JlcXVlc3QpCit7CisgICAgbV93ZWJQYWdlUHJp
dmF0ZS0+bV9pbnB1dEhhbmRsZXItPnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKHRleHRDaGVja2lu
Z1JlcXVlc3QpOworfQorCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNoZWNrVGV4dE9m
UGFyYWdyYXBoKGNvbnN0IFVDaGFyKiwgaW50LCBUZXh0Q2hlY2tpbmdUeXBlTWFzaywgVmVjdG9y
PFRleHRDaGVja2luZ1Jlc3VsdD4mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50QmxhY2tCZXJyeS5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEJsYWNrQmVycnkuaAppbmRleCAyNWE4NzI4ZjU1MjRjODdkMTg0ZDI3NjFm
MWQ0YWFlMjc3ZDQwM2FlLi5hYmM1NmQxZmNiNTJiMDA3ZmJjNTEwZDQzOGM2NTVkZmYwMGVkZjQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50QmxhY2tCZXJyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmgKQEAgLTg3LDYgKzg3LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hhcios
IGludCwgVmVjdG9yPEdyYW1tYXJEZXRhaWwsIDB1PiYsIGludCosIGludCopOwogICAgIHZpcnR1
YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBW
ZWN0b3I8U3RyaW5nPiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
ZyhXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWVzdD4pOworICAgIHZp
cnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciosIGludCwgVGV4dENo
ZWNraW5nVHlwZU1hc2ssIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+Jik7CiAKICAgICB2aXJ0
dWFsIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpOwogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgU3RyaW5nJiwgY29uc3QgR3Jh
bW1hckRldGFpbCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktp
dFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJL
aXRTdXBwb3J0L0lucHV0SGFuZGxlci5jcHAKaW5kZXggYmZiNjIyNjg2YWIyZWYzYTVkZDI3Yjk1
NmFmMTMyNmI2ODkzOTkxMy4uZWVhMmVjMzhlMzA4YTM0YWVlZjJkMjVkZmM0ZDEwZmFjN2UwMTQ5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5w
dXRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9y
dC9JbnB1dEhhbmRsZXIuY3BwCkBAIC01Myw2ICs1Myw4IEBACiAjaW5jbHVkZSAiU2NvcGVQb2lu
dGVyLmgiCiAjaW5jbHVkZSAiU2VsZWN0UG9wdXBDbGllbnQuaCIKICNpbmNsdWRlICJTZWxlY3Rp
b25IYW5kbGVyLmgiCisjaW5jbHVkZSAiU3BlbGxDaGVja2VyLmgiCisjaW5jbHVkZSAiVGV4dENo
ZWNrZXJDbGllbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJXZWJQ
YWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFnZV9wLmgiCkBAIC01MTgsMTIgKzUyMCwxMjcg
QEAgdm9pZCBJbnB1dEhhbmRsZXI6OmxlYXJuVGV4dCgpCiAgICAgc2VuZExlYXJuVGV4dERldGFp
bHModGV4dEluRmllbGQpOwogfQogCit2b2lkIElucHV0SGFuZGxlcjo6cmVxdWVzdENoZWNraW5n
T2ZTdHJpbmcoUGFzc1JlZlB0cjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0PiB0ZXh0Q2hl
Y2tpbmdSZXF1ZXN0KQoreworICAgIFJlZlB0cjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0
PiByZXF1ZXN0ID0gdGV4dENoZWNraW5nUmVxdWVzdDsKKworICAgIGludDMyX3Qgc2VxdWVuY2VJ
ZCA9IHJlcXVlc3QtPnNlcXVlbmNlKCk7CisgICAgaW50IHJlcXVlc3RMZW5ndGggPSByZXF1ZXN0
LT50ZXh0KCkubGVuZ3RoKCk7CisgICAgaWYgKCFyZXF1ZXN0TGVuZ3RoIC8qIHx8IHJlcXVlc3RM
ZW5ndGggPiBtYXhTcGVsbENoZWNrU3RyaW5nTGVuZ3RoICovKSB7CisgICAgICAgIHNwZWxsQ2hl
Y2tpbmdSZXF1ZXN0Q2FuY2VsbGVkKHNlcXVlbmNlSWQsIHRydWUgLyogaXNTZXF1ZW5jZUlkICov
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdjaGFyX3QqIGNoZWNraW5nU3RyaW5n
ID0gKHdjaGFyX3QqKW1hbGxvYyhzaXplb2Yod2NoYXJfdCkgKiAocmVxdWVzdExlbmd0aCArIDEp
KTsKKyAgICBpZiAoIWNoZWNraW5nU3RyaW5nKSB7CisgICAgICAgIEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpsb2dBbHdheXMoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsICJJ
bnB1dEhhbmRsZXI6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nIENhbm5vdCBhbGxvY2F0ZSBtZW1v
cnkgZm9yIHN0cmluZy4iKTsKKyAgICAgICAgc3BlbGxDaGVja2luZ1JlcXVlc3RDYW5jZWxsZWQo
c2VxdWVuY2VJZCwgdHJ1ZSAvKiBpc1NlcXVlbmNlSWQgKi8pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaW50IHN0cmluZ0xlbmd0aCA9IDA7CisgICAgaWYgKCFjb252ZXJ0U3RyaW5n
VG9XY2hhcihyZXF1ZXN0LT50ZXh0KCksIGNoZWNraW5nU3RyaW5nLCByZXF1ZXN0TGVuZ3RoICsg
MSwgJnN0cmluZ0xlbmd0aCkpIHsKKyAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OmxvZ0Fs
d2F5cyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIklucHV0SGFuZGxl
cjo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcgRmFpbGVkIHRvIGNvbnZlcnQgU3RyaW5nIHRvIHdj
aGFyIHR5cGUuIik7CisgICAgICAgIGZyZWUoY2hlY2tpbmdTdHJpbmcpOworICAgICAgICBzcGVs
bENoZWNraW5nUmVxdWVzdENhbmNlbGxlZChzZXF1ZW5jZUlkLCB0cnVlIC8qIGlzU2VxdWVuY2VJ
ZCAqLyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnQzMl90IHRyYW5zYWN0aW9u
SWQgPSBtX3dlYlBhZ2UtPm1fY2xpZW50LT5jaGVja1NwZWxsaW5nT2ZTdHJpbmdBc3luYyhjaGVj
a2luZ1N0cmluZywgc3RyaW5nTGVuZ3RoKTsKKyAgICBmcmVlKGNoZWNraW5nU3RyaW5nKTsKKwor
ICAgIC8vIElmIHRoZSBjYWxsIHRvIHRoZSBpbnB1dCBzZXJ2aWNlIGRpZCBub3QgZ28gdGhyb3Vn
aCwgdGhlbiBjYW5jZWwgdGhlIHJlcXVlc3Qgc28gd2UgZG9uJ3QgYmxvY2sgZW5kbGVzc2x5Lgor
ICAgIC8vIFRoaXMgc2hvdWxkIHN0aWxsIHRha2UgdHJhbnNhY3Rpb25JZCBhcyBhIHBhcmFtZXRl
ciB0byBtYWludGFpbiB0aGUgc2FtZSBiZWhhdmlvciBhcyBpZiBJbnB1dE1ldGhvZFN1cHBvcnQK
KyAgICAvLyB3ZXJlIHRvIGNhbmNlbCBhIHJlcXVlc3QgZHVyaW5nIHByb2Nlc3NpbmcuCisgICAg
aWYgKHRyYW5zYWN0aW9uSWQgPT0gLTEpIHsgLy8gRXJyb3IgYmVmb3JlIHNlbmRpbmcgcmVxdWVz
dCB0byBpbnB1dCBzZXJ2aWNlLgorICAgICAgICBzcGVsbENoZWNraW5nUmVxdWVzdENhbmNlbGxl
ZChzZXF1ZW5jZUlkLCB0cnVlIC8qIGlzU2VxdWVuY2VJZCAqLyk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICAvLyBtYXAgc2VxdWVuY2VJZCB0byB0cmFuc2FjdGlvbklkLgorICAgIG1f
c2VxdWVuY2VNYXBbdHJhbnNhY3Rpb25JZF0gPSBzZXF1ZW5jZUlkOworfQogCi12b2lkIElucHV0
SGFuZGxlcjo6c3BlbGxDaGVja2luZ1JlcXVlc3RQcm9jZXNzZWQoaW50MzJfdCBpZCwgc3Bhbm5h
YmxlX3N0cmluZ190KiBzcGFubmFibGVTdHJpbmcpCitpbnQzMl90IElucHV0SGFuZGxlcjo6Y29u
dmVydFRyYW5zYWN0aW9uSWRUb1NlcXVlbmNlSWQoaW50MzJfdCB0cmFuc2FjdGlvbklkKQogewot
ICAgIFVOVVNFRF9QQVJBTShpZCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNwYW5uYWJsZVN0cmluZyk7
Ci0gICAgLy8gVE9ETyBpbXBsZW1lbnQuCisgICAgc3RkOjptYXA8aW50MzJfdCwgaW50MzJfdD46
Oml0ZXJhdG9yIGl0ID0gbV9zZXF1ZW5jZU1hcC5maW5kKHRyYW5zYWN0aW9uSWQpOworCisgICAg
aWYgKGl0ID09IG1fc2VxdWVuY2VNYXAuZW5kKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAg
aW50MzJfdCBzZXF1ZW5jZUlkID0gaXQtPnNlY29uZDsKKyAgICAvLyBXZSBvbmx5IGNvbnZlcnQg
dGhpcyB2YWx1ZSB3aGVuIHdlIGhhdmUgcmVjZWl2ZWQgaXRzIHJlc3BvbnNlLCBzbyBpdHMgc2Fm
ZSB0byByZW1vdmUgaXQgZnJvbSB0aGUgbWFwLgorICAgIG1fc2VxdWVuY2VNYXAuZXJhc2UoaXQp
OworCisgICAgcmV0dXJuIHNlcXVlbmNlSWQ7Cit9CisKK3ZvaWQgSW5wdXRIYW5kbGVyOjpzcGVs
bENoZWNraW5nUmVxdWVzdFByb2Nlc3NlZChpbnQzMl90IHRyYW5zYWN0aW9uSWQsIHNwYW5uYWJs
ZV9zdHJpbmdfdCogc3Bhbm5hYmxlU3RyaW5nKQoreworICAgIGlmICghc3Bhbm5hYmxlU3RyaW5n
KSB7CisgICAgICAgIHNwZWxsQ2hlY2tpbmdSZXF1ZXN0Q2FuY2VsbGVkKHRyYW5zYWN0aW9uSWQs
IGZhbHNlIC8qIGlzU2VxdWVuY2VJZCAqLyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOworCisgICAgLy8gQ29udmVydCB0
aGUgc3Bhbm5hYmxlU3RyaW5nIHRvIFRleHRDaGVja2luZ1Jlc3VsdCB0aGVuIGFwcGVuZCB0byBy
ZXN1bHRzIHZlY3Rvci4KKyAgICBTdHJpbmcgcmVwbGFjZW1lbnQ7CisgICAgVGV4dENoZWNraW5n
UmVzdWx0IHRleHRDaGVja2luZ1Jlc3VsdDsKKyAgICB0ZXh0Q2hlY2tpbmdSZXN1bHQudHlwZSA9
IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKKyAgICB0ZXh0Q2hlY2tpbmdSZXN1bHQucmVwbGFj
ZW1lbnQgPSByZXBsYWNlbWVudDsKKyAgICB0ZXh0Q2hlY2tpbmdSZXN1bHQubG9jYXRpb24gPSAw
OworICAgIHRleHRDaGVja2luZ1Jlc3VsdC5sZW5ndGggPSAwOworCisgICAgc3Bhbl90KiBzcGFu
ID0gc3Bhbm5hYmxlU3RyaW5nLT5zcGFuczsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IHNwYW5uYWJsZVN0cmluZy0+c3BhbnNfY291bnQ7IGkrKykgeworICAgICAgICBpZiAoIXNw
YW4pCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKHNwYW4tPmVuZCA8IHNwYW4tPnN0
YXJ0KSB7CisgICAgICAgICAgICBzcGVsbENoZWNraW5nUmVxdWVzdENhbmNlbGxlZCh0cmFuc2Fj
dGlvbklkLCBmYWxzZSAvKiBpc1NlcXVlbmNlSWQgKi8pOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIGlmIChzcGFuLT5hdHRyaWJ1dGVzX21hc2sgJiBNSVNTUEVMTEVE
X1dPUkRfQVRUUklCKSB7CisgICAgICAgICAgICB0ZXh0Q2hlY2tpbmdSZXN1bHQubG9jYXRpb24g
PSBzcGFuLT5zdGFydDsKKyAgICAgICAgICAgIC8vIFRoZSBlbmQgcG9pbnQgaW5jbHVkZXMgdGhl
IGNoYXJhY3RlciB0aGF0IGl0IGlzIGJlZm9yZS4gSWUsIDAsIDAKKyAgICAgICAgICAgIC8vIGFw
cGxpZXMgdG8gdGhlIGZpcnN0IGNoYXJhY3RlciBhcyB0aGUgZW5kIHBvaW50IGluY2x1ZGVzIHRo
ZSBjaGFyYWN0ZXIKKyAgICAgICAgICAgIC8vIGF0IHRoZSBwb3NpdGlvbi4gVGhpcyBtZWFucyB0
aGUgZW5kUG9zaXRpb24gaXMgYWx3YXlzICsxLgorICAgICAgICAgICAgdGV4dENoZWNraW5nUmVz
dWx0Lmxlbmd0aCA9IHNwYW4tPmVuZCAtIHNwYW4tPnN0YXJ0ICsgMTsKKyAgICAgICAgICAgIHJl
c3VsdHMuYXBwZW5kKHRleHRDaGVja2luZ1Jlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgc3Bh
bisrOworICAgIH0KKworICAgIC8vIHRyYW5zYWN0aW9uSWQgaGVyZSBpcyBmb3IgdXNlIHdpdGgg
dGhlIGlucHV0IHNlcnZpY2UuIFdlIG5lZWQgdG8gdHJhbnNsYXRlIHRoaXMgdG8gc2VxdWVuY2VJ
ZCB1c2VkIHdpdGggU3BlbGxDaGVja2VyLgorICAgIGludDMyX3Qgc2VxdWVuY2VJZCA9IGNvbnZl
cnRUcmFuc2FjdGlvbklkVG9TZXF1ZW5jZUlkKHRyYW5zYWN0aW9uSWQpOworCisgICAgU3BlbGxD
aGVja2VyKiBzcCA9IGdldFNwZWxsQ2hlY2tlcigpOworICAgIGlmICghc3AgfHwgIXNlcXVlbmNl
SWQpIHsKKyAgICAgICAgSW5wdXRMb2coTG9nTGV2ZWxXYXJuLCAiSW5wdXRIYW5kbGVyOjpzcGVs
bENoZWNraW5nUmVxdWVzdFByb2Nlc3NlZCBmYWlsZWQgdG8gcHJvY2VzcyB0aGUgcmVxdWVzdCB3
aXRoIHNlcXVlbmNlSWQgJWQiLCBzZXF1ZW5jZUlkKTsKKyAgICAgICAgc3BlbGxDaGVja2luZ1Jl
cXVlc3RDYW5jZWxsZWQoc2VxdWVuY2VJZCwgdHJ1ZSAvKiBpc1NlcXVlbmNlSWQgKi8pOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIHNwLT5kaWRDaGVja1N1Y2NlZWRlZChzZXF1ZW5jZUlk
LCByZXN1bHRzKTsKK30KKwordm9pZCBJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tpbmdSZXF1ZXN0
Q2FuY2VsbGVkKGludDMyX3QgaWQsIGJvb2wgaXNTZXF1ZW5jZUlkKQoreworICAgIGludDMyX3Qg
c2VxdWVuY2VJZCA9IGlzU2VxdWVuY2VJZCA/IGlkIDogY29udmVydFRyYW5zYWN0aW9uSWRUb1Nl
cXVlbmNlSWQoaWQpOworICAgIFNwZWxsQ2hlY2tlciogc3AgPSBnZXRTcGVsbENoZWNrZXIoKTsK
KyAgICBpZiAoIXNwKSB7CisgICAgICAgIElucHV0TG9nKExvZ0xldmVsV2FybiwgIklucHV0SGFu
ZGxlcjo6c3BlbGxDaGVja2luZ1JlcXVlc3RDYW5jZWxsZWQgZmFpbGVkIHRvIGNhbmNlbCB0aGUg
cmVxdWVzdCB3aXRoIHNlcXVlbmNlSWQgJWQiLCBzZXF1ZW5jZUlkKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBzcC0+ZGlkQ2hlY2tDYW5jZWxlZChzZXF1ZW5jZUlkKTsKK30KKworU3Bl
bGxDaGVja2VyKiBJbnB1dEhhbmRsZXI6OmdldFNwZWxsQ2hlY2tlcigpCit7CisgICAgaWYgKEZy
YW1lKiBmcmFtZSA9IG1fY3VycmVudEZvY3VzRWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkK
KyAgICAgICAgaWYgKEVkaXRvciogZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpKQorICAgICAgICAg
ICAgcmV0dXJuIGVkaXRvci0+c3BlbGxDaGVja2VyKCk7CisKKyAgICByZXR1cm4gMDsKIH0KIAog
dm9pZCBJbnB1dEhhbmRsZXI6OnNldEVsZW1lbnRVbmZvY3VzZWQoYm9vbCByZWZvY3VzT2NjdXJp
bmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9J
bnB1dEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lu
cHV0SGFuZGxlci5oCmluZGV4IGE2ZWVkM2I3ZTJmNDY2ZDVlY2VkMTBkNmQ0OGJjNWFmODA4YTMz
MDIuLmU0OTJjNjA3ZmYxZWM0ZDVkZmRkYzZjNTYxOGY4OTdjYjk5YjhlNDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5o
CkBAIC0yMiw3ICsyMiw3IEBACiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtSW5wdXRFdmVu
dHMuaD4KIAogI2luY2x1ZGUgPGltZi9pbnB1dF9kYXRhLmg+Ci0KKyNpbmNsdWRlIDxtYXA+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM3LDYgKzM3LDgg
QEAgY2xhc3MgSFRNTElucHV0RWxlbWVudDsKIGNsYXNzIEhUTUxTZWxlY3RFbGVtZW50OwogY2xh
c3MgSW50UmVjdDsKIGNsYXNzIE5vZGU7CitjbGFzcyBTcGVsbENoZWNrZXI7CitjbGFzcyBUZXh0
Q2hlY2tpbmdSZXF1ZXN0OwogfQogCiBuYW1lc3BhY2UgQmxhY2tCZXJyeSB7CkBAIC0xMjIsNyAr
MTI0LDkgQEAgcHVibGljOgogICAgIGludDMyX3Qgc2V0Q29tcG9zaW5nVGV4dChzcGFubmFibGVf
c3RyaW5nX3QqLCBpbnQzMl90IHJlbGF0aXZlQ3Vyc29yUG9zaXRpb24pOwogICAgIGludDMyX3Qg
Y29tbWl0VGV4dChzcGFubmFibGVfc3RyaW5nX3QqLCBpbnQzMl90IHJlbGF0aXZlQ3Vyc29yUG9z
aXRpb24pOwogCi0gICAgdm9pZCBzcGVsbENoZWNraW5nUmVxdWVzdFByb2Nlc3NlZChpbnQzMl90
IGlkLCBzcGFubmFibGVfc3RyaW5nX3QqKTsKKyAgICB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3Ry
aW5nKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0Pik7CisgICAg
dm9pZCBzcGVsbENoZWNraW5nUmVxdWVzdFByb2Nlc3NlZChpbnQzMl90IHRyYW5zYWN0aW9uSWQs
IHNwYW5uYWJsZV9zdHJpbmdfdCopOworICAgIHZvaWQgc3BlbGxDaGVja2luZ1JlcXVlc3RDYW5j
ZWxsZWQoaW50MzJfdCBpZCwgYm9vbCBpc1NlcXVlbmNlSWQgPSBmYWxzZSk7CiAKIHByaXZhdGU6
CiAgICAgZW51bSBQZW5kaW5nS2V5Ym9hcmRTdGF0ZUNoYW5nZSB7IE5vQ2hhbmdlLCBWaXNpYmxl
LCBOb3RWaXNpYmxlIH07CkBAIC0xNzksNiArMTgzLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
bGVhcm5UZXh0KCk7CiAgICAgdm9pZCBzZW5kTGVhcm5UZXh0RGV0YWlscyhjb25zdCBXVEY6OlN0
cmluZyYpOworICAgIGludDMyX3QgY29udmVydFRyYW5zYWN0aW9uSWRUb1NlcXVlbmNlSWQoaW50
MzJfdCB0cmFuc2FjdGlvbklkKTsKKyAgICBXZWJDb3JlOjpTcGVsbENoZWNrZXIqIGdldFNwZWxs
Q2hlY2tlcigpOwogCiAgICAgV2ViUGFnZVByaXZhdGUqIG1fd2ViUGFnZTsKIApAQCAtMTk2LDYg
KzIwMiw4IEBAIHByaXZhdGU6CiAKICAgICBQZW5kaW5nS2V5Ym9hcmRTdGF0ZUNoYW5nZSBtX3Bl
bmRpbmdLZXlib2FyZFZpc2liaWxpdHlDaGFuZ2U7CiAgICAgYm9vbCBtX2RlbGF5S2V5Ym9hcmRW
aXNpYmlsaXR5Q2hhbmdlOworCisgICAgc3RkOjptYXA8aW50MzJfdCwgaW50MzJfdD4gbV9zZXF1
ZW5jZU1hcDsKIH07CiAKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>