<?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>66610</bug_id>
          
          <creation_ts>2011-08-19 16:42:23 -0700</creation_ts>
          <short_desc>[chromium] Implement CCThread in terms of WebThread</short_desc>
          <delta_ts>2011-08-23 18:22:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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="Nat Duca">nduca</reporter>
          <assigned_to name="Nat Duca">nduca</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>454198</commentid>
    <comment_count>0</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-08-19 16:42:23 -0700</bug_when>
    <thetext>[chromium] Implement CCThread in terms of WebThread</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454200</commentid>
    <comment_count>1</comment_count>
      <attachid>104594</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-08-19 16:42:45 -0700</bug_when>
    <thetext>Created attachment 104594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454219</commentid>
    <comment_count>2</comment_count>
      <attachid>104594</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-19 17:10:12 -0700</bug_when>
    <thetext>Comment on attachment 104594
Patch

Attachment 104594 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9432522</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454227</commentid>
    <comment_count>3</comment_count>
      <attachid>104594</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-19 17:26:28 -0700</bug_when>
    <thetext>Comment on attachment 104594
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThread.h:50
&gt; +    virtual void postTask(PassOwnPtr&lt;Task&gt;) = 0; // Executes the task on context&apos;s thread asynchronously.

s/context/compositor/, perhaps? not sure what &apos;context&apos; would mean here

&gt; Source/WebKit/chromium/public/WebThread.h:45
&gt; +    virtual void postDelayedTask(Task*, int64_t delayMs) = 0;

out of curiosity, why do we need this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454228</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-19 17:27:43 -0700</bug_when>
    <thetext>I think you need to edit Source/WebKit/chromium/WebKit.gypi to make this compile.  Otherwise looks reasonable, although I haven&apos;t followed WebThread too closely so Darin should probably take a look as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454277</commentid>
    <comment_count>5</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-08-19 19:02:35 -0700</bug_when>
    <thetext>postDelayedTask for implementing dead reckoning, i.e. I just drew, now wait 16-drawtime ms before drawing again. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454306</commentid>
    <comment_count>6</comment_count>
      <attachid>104594</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-08-19 21:20:16 -0700</bug_when>
    <thetext>Comment on attachment 104594
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebThread.h:45
&gt;&gt; +    virtual void postDelayedTask(Task*, int64_t delayMs) = 0;
&gt; 
&gt; out of curiosity, why do we need this?

int64 comes from base/basictypes.h, which webkit should not be depending on.
int64_t comes from stdint.h, which webkit can depend on :)

but the webkit API should use &apos;long long&apos; instead as we don&apos;t have any
machinery in the webkit API headers to simulate int64_t on windows.

&gt; Source/WebKit/chromium/src/CCThreadImpl.cpp:46
&gt; +    GetThreadIDTask(WTF::ThreadIdentifier* result, WebCore::CCCompletionEvent* completion)

nit: no need for the WebCore:: prefix, and i suspect the WTF:: prefixes can be dropped too.

&gt; Source/WebKit/chromium/src/CCThreadImpl.cpp:50
&gt; +    virtual ~GetThreadIDTask() { }

do you want to worry about what happens if the destructor is called before run?
i believe it is possible for the chromium MessageLoop to dispose of an unrun
Task if for some reason it cannot run it.

&gt; Source/WebKit/chromium/src/CCThreadImpl.cpp:66
&gt; +    CCThreadTaskAdapter(PassOwnPtr&lt;CCThread::Task&gt; task) : m_task(task) { }

add whitespace between these functions as you did for GetThreadIDTask?

&gt; Source/WebKit/chromium/src/CCThreadImpl.cpp:103
&gt; +    completion.wait();

are you sure it is safe to destroy a CCCompletionEvent before .signal() returns?
i think the answer is yes, but i don&apos;t see this documented anywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454637</commentid>
    <comment_count>7</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-08-22 09:49:44 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 104594 [details])
&gt; &gt; +    virtual ~GetThreadIDTask() { }
&gt; 
&gt; do you want to worry about what happens if the destructor is called before run?

The pointers this class owns are stack allocated, so not much &quot;bad&quot; will happen in terms of leaks. This task only runs when we create the thread, and if this task doesn&apos;t run, the completion event won&apos;t signal and the main loop will hang. Should I be designing for the possibility that the thread can&apos;t initialize at all?


&gt; &gt; Source/WebKit/chromium/src/CCThreadImpl.cpp:103
&gt; &gt; +    completion.wait();
&gt; 
&gt; are you sure it is safe to destroy a CCCompletionEvent before .signal() returns?

Great point. The thing that keeps this safe is the mutex unlock on ~CCCompletionEvent, which coordinates with the MutexLocker on the singal function. I added documentation to this effect on the CCCompletionEvent so this behavior is clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454641</commentid>
    <comment_count>8</comment_count>
      <attachid>104685</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-08-22 09:55:49 -0700</bug_when>
    <thetext>Created attachment 104685
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454647</commentid>
    <comment_count>9</comment_count>
      <attachid>104685</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-22 10:01:37 -0700</bug_when>
    <thetext>Comment on attachment 104685
Patch

Attachment 104685 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9464800</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455447</commentid>
    <comment_count>10</comment_count>
      <attachid>104858</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-08-23 09:29:10 -0700</bug_when>
    <thetext>Created attachment 104858
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455466</commentid>
    <comment_count>11</comment_count>
      <attachid>104858</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-08-23 10:14:01 -0700</bug_when>
    <thetext>Comment on attachment 104858
Patch

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

&gt; Source/WebKit/chromium/src/CCThreadImpl.cpp:59
&gt; +    WebCore::CCCompletionEvent* m_completion;

nit: can drop the WebCore:: prefix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455853</commentid>
    <comment_count>12</comment_count>
      <attachid>104940</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-08-23 17:20:00 -0700</bug_when>
    <thetext>Created attachment 104940
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455911</commentid>
    <comment_count>13</comment_count>
      <attachid>104940</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-23 18:22:36 -0700</bug_when>
    <thetext>Comment on attachment 104940
Patch for landing

Clearing flags on attachment: 104940

Committed r93680: &lt;http://trac.webkit.org/changeset/93680&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455912</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-23 18:22:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104594</attachid>
            <date>2011-08-19 16:42:45 -0700</date>
            <delta_ts>2011-08-22 09:55:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66610-20110819164244.patch</filename>
            <type>text/plain</type>
            <size>19951</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM0MDYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiMjcyNWZmZjY3N2ZiYTQ2
NDZhMzgzYzZmMzI5YjJhZTgwMDY5NDdhLi5mNWI0ODM0YTYzMjM3MTY4OGQ0NWQ1ZmY0NDQ4Yjkx
NTM4N2NhY2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDgtMTkgIE5hdCBE
dWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gSW1wbGVtZW50
IENDVGhyZWFkIGluIHRlcm1zIG9mIFdlYlRocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY2MTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NvbXBsZXRpb25FdmVudC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGxQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsUHJveHk6OkNDTGF5ZXJUcmVlSG9zdEltcGxQ
cm94eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkOjp+Q0NUaHJlYWQpOgorCiAyMDExLTA4LTE5
ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBnZXRBdHRyaWJ1dGVzIHNob3VsZCB3b3JrIG9uIGEgc2luZ2xlIG5vZGUsIG5vdCBh
cnJheS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBlZDU5NzBhMWE3ZGYwYWEwNGVmMWM3ODk5NDJmOWRm
MzUzOTIxYjE4Li45YTkyODIwM2RkZGE1ODBkMTU5MDA5YzE3MDRiOWVlNjk1NGU5N2VjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC0zNTc1LDcgKzM1NzUsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5o
JywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZC5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
VGFzay5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rp
bGVkTGF5ZXJJbXBsLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NvbXBsZXRpb25FdmVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDb21wbGV0aW9uRXZlbnQuaAppbmRleCA5
OWUzNmU3YWZjOTYzODFjNjNlMDIzNTBjMzQ3MzIzZGEwZTkwYWI3Li5hOGFjMTUxMDBhODUwMWI1
ZjdhMTQxYmE5YTRkZmMyYjNjODhmZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NvbXBsZXRpb25FdmVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ29tcGxldGlvbkV2ZW50
LmgKQEAgLTEsNCArMSwzIEBACi0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmlu
ZGV4IGIwN2EyNWZjYTYyY2JjYjVhZGNjYTkxODljYWJlYWRkM2U1ZTBkOTkuLjU1ZDVjYjVmYTk5
MDk2YTAxM2JmNmI2ZjYyYTEzNWRiYzRkMTE0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXll
clRyZWVIb3N0SW1wbDsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQ7CitjbGFzcyBD
Q1RocmVhZDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgTGF5ZXJDaHJvbWl1bTsK
IGNsYXNzIExheWVyUGFpbnRlckNocm9taXVtOwpAQCAtNDcsNiArNDgsNyBAQCBjbGFzcyBOb25D
b21wb3NpdGVkQ29udGVudEhvc3Q7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RDbGllbnQgewogcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlQW5kTGF5b3V0KGRvdWJsZSBmcmFtZUJlZ2lu
VGltZSkgPSAwOworICAgIHZpcnR1YWwgUGFzc093blB0cjxDQ1RocmVhZD4gY3JlYXRlQ29tcG9z
aXRvclRocmVhZCgpID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IGNyZWF0ZUxheWVyVHJlZUhvc3RDb250ZXh0M0QoKSA9IDA7CiAgICAgdmlydHVhbCBQYXNz
T3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBjcmVhdGVSb290TGF5ZXJQYWludGVyKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dChib29sIHN1Y2Nl
c3MpID0gMDsKQEAgLTg1LDYgKzg3LDggQEAgcHVibGljOgogICAgIGJvb2wgYW5pbWF0aW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9hbmltYXRpbmc7IH0KICAgICB2b2lkIHNldEFuaW1hdGluZyhib29s
IGFuaW1hdGluZykgeyBtX2FuaW1hdGluZyA9IGFuaW1hdGluZzsgfSAvLyBDYW4gYmUgcmVtb3Zl
ZCB3aGVuIG5vbi10aHJlYWRlZCBzY2hlZHVsaW5nIG1vdmVzIGluc2lkZS4KIAorICAgIENDTGF5
ZXJUcmVlSG9zdENsaWVudCogY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KKwogICAgIEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCk7CiAKICAgICB2b2lkIGNvbXBvc2l0ZUFuZFJlYWRi
YWNrKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGxQcm94eS5jcHAKaW5kZXggYjk5ZGI5NzdlOWZhYzBjODUzNjEwNjUz
NWVjMDJhOTQ4ZTI5MGM1My4uYTY2OTI4ODU2NDU5NmQ4NzgyNjc2NjFkM2Y5NDYxZWJmYjY2MmU5
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsUHJveHkuY3BwCkBA
IC00OSw3ICs0OSw3IEBAIENDTGF5ZXJUcmVlSG9zdEltcGxQcm94eTo6Q0NMYXllclRyZWVIb3N0
SW1wbFByb3h5KENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zCiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICBudW1Qcm94aWVzKys7CiAgICAgaWYgKCFjY1RocmVhZCkKLSAgICAg
ICAgY2NUaHJlYWQgPSBDQ1RocmVhZDo6Y3JlYXRlKCkubGVha1B0cigpOworICAgICAgICBjY1Ro
cmVhZCA9IGxheWVyVHJlZUhvc3QtPmNsaWVudCgpLT5jcmVhdGVDb21wb3NpdG9yVGhyZWFkKCku
bGVha1B0cigpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZGUxNzNhMTM0OTgyNGFmOTBmYWRjZTc4MTkwZmJiODNjYzQwZWI4NS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNp
bmNsdWRlICJDQ1RocmVhZC5oIgotCi0jaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgi
Ci0jaW5jbHVkZSAiVHJhY2VFdmVudC5oIgotI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgot
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1p
dGl2ZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBuYW1lc3BhY2UgV1RGOwot
Ci1DQ1RocmVhZDo6Q0NUaHJlYWQoKQotewotICAgIE11dGV4TG9ja2VyIGxvY2sobV90aHJlYWRD
cmVhdGlvbk11dGV4KTsKLSAgICBtX3RocmVhZElEID0gY3JlYXRlVGhyZWFkKENDVGhyZWFkOjpj
b21wb3NpdG9yVGhyZWFkU3RhcnQsIHRoaXMsICJDaHJvbWl1bSBDb21wb3NpdG9yIik7Ci19Ci0K
LUNDVGhyZWFkOjp+Q0NUaHJlYWQoKQotewotICAgIG1fcXVldWUua2lsbCgpOwotCi0gICAgLy8g
U3RvcCB0aHJlYWQuCi0gICAgdm9pZCogZXhpdENvZGU7Ci0gICAgd2FpdEZvclRocmVhZENvbXBs
ZXRpb24obV90aHJlYWRJRCwgJmV4aXRDb2RlKTsKLSAgICBtX3RocmVhZElEID0gMDsKLX0KLQot
dm9pZCBDQ1RocmVhZDo6cG9zdFRhc2soUGFzc093blB0cjxUYXNrPiB0YXNrKQotewotICAgIG1f
cXVldWUuYXBwZW5kKHRhc2spOwotfQotCi12b2lkKiBDQ1RocmVhZDo6Y29tcG9zaXRvclRocmVh
ZFN0YXJ0KHZvaWQqIHVzZXJkYXRhKQotewotICAgIENDVGhyZWFkKiBjY1RocmVhZCA9IHN0YXRp
Y19jYXN0PENDVGhyZWFkKj4odXNlcmRhdGEpOwotICAgIHJldHVybiBjY1RocmVhZC0+cnVuTG9v
cCgpOwotfQotCi12b2lkKiBDQ1RocmVhZDo6cnVuTG9vcCgpCi17Ci0gICAgVFJBQ0VfRVZFTlQo
IkNDVGhyZWFkOjpydW5Mb29wIiwgdGhpcywgMCk7Ci0gICAgewotICAgICAgICAvLyBXYWl0IGZv
ciBDQ1RocmVhZDo6c3RhcnQoKSB0byBjb21wbGV0ZSB0byBoYXZlIG1fdGhyZWFkSUQKLSAgICAg
ICAgLy8gZXN0YWJsaXNoZWQgYmVmb3JlIHN0YXJ0aW5nIHRoZSBtYWluIGxvb3AuCi0gICAgICAg
IE11dGV4TG9ja2VyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11dGV4KTsKLSAgICB9Ci0KLSAgICB3
aGlsZSAoT3duUHRyPFRhc2s+IHRhc2sgPSBtX3F1ZXVlLndhaXRGb3JNZXNzYWdlKCkpCi0gICAg
ICAgIHRhc2stPnBlcmZvcm1UYXNrKCk7Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkLmgKaW5kZXggMTc3ZDNmMzhhYmM0MjNjZDY5Zjg3MDU5Y2U3YjZhN2E5NWYwMzExNi4uYTJm
MmNmNGRjZTkxZDRlM2FjMTc5YjI4OGJmNTgzYjA1ZjExY2E1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZC5oCkBA
IC0yNSwyMyArMjUsMTYgQEAKICNpZm5kZWYgQ0NUaHJlYWRfaAogI2RlZmluZSBDQ1RocmVhZF9o
CiAKLSNpbmNsdWRlIDx3dGYvTWVzc2FnZVF1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBUaGUgQ0NUaHJlYWQgc2luZ2xldG9u
IG93bnMgdGhlIGNvbXBvc2l0b3IgdGhyZWFkIGFuZCBwcm92aWRlcwotLy8gYmFzaWMgaW5mcmFz
dHJ1Y3R1cmUgZm9yIG1lc3NhZ2luZyBiZXR3ZWVuIHRoZSB0d28gdGhyZWFkcy4KKy8vIENDVGhy
ZWFkIHByb3ZpZGVzIGJhc2ljIGluZnJhc3RydWN0dXJlIGZvciBtZXNzYWdpbmcgd2l0aCB0aGUg
Y29tcG9zaXRvciBpbiBhCisvLyBwbGF0Zm9ybS1uZXV0cmFsIHdheS4KIGNsYXNzIENDVGhyZWFk
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1RocmVhZD4gY3JlYXRlKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NUaHJlYWQoKSk7Ci0gICAgfQotCi0g
ICAgdmlydHVhbCB+Q0NUaHJlYWQoKTsKKyAgICB2aXJ0dWFsIH5DQ1RocmVhZCgpIHsgfQogCiAg
ICAgY2xhc3MgVGFzayB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRhc2spOwpAQCAt
NTQsMjAgKzQ3LDkgQEAgcHVibGljOgogICAgICAgICB2b2lkKiBtX2luc3RhbmNlOwogICAgIH07
CiAKLSAgICB2b2lkIHBvc3RUYXNrKFBhc3NPd25QdHI8VGFzaz4pOyAvLyBFeGVjdXRlcyB0aGUg
dGFzayBvbiBjb250ZXh0J3MgdGhyZWFkIGFzeW5jaHJvbm91c2x5LgotCi0gICAgV1RGOjpUaHJl
YWRJZGVudGlmaWVyIHRocmVhZElEKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWRJRDsgfQotCi1w
cm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgQ0NUaHJlYWQoKTsKLQotICAgIHN0YXRpYyB2b2lkKiBj
b21wb3NpdG9yVGhyZWFkU3RhcnQodm9pZCopOwotICAgIHZvaWQqIHJ1bkxvb3AoKTsKLQotICAg
IFdURjo6VGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElEOwotICAgIE1lc3NhZ2VRdWV1ZTxUYXNr
PiBtX3F1ZXVlOworICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhQYXNzT3duUHRyPFRhc2s+KSA9
IDA7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5bmNocm9ub3Vz
bHkuCiAKLSAgICBNdXRleCBtX3RocmVhZENyZWF0aW9uTXV0ZXg7CisgICAgdmlydHVhbCBXVEY6
OlRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQoKSBjb25zdCA9IDA7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDQ1OWNiZDhmMTI2N2NlYWVkYjRlYTk5Yzg2YTEwNDA4MzUw
YWRkNzguLmU4ZjliOGRmMjQ5NzIyNDFhZGViZmEyYzIzNzQ0YjYxNjg5Mjg0NTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTEtMDgtMTkgIE5hdCBEdWNh
ICA8bmR1Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gSW1wbGVtZW50IEND
VGhyZWFkIGluIHRlcm1zIG9mIFdlYlRocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY2MTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYlRo
cmVhZC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJUaHJlYWQ6On5XZWJUaHJlYWQpOgorICAgICAg
ICAqIHNyYy9DQ1RocmVhZEltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6R2V0VGhy
ZWFkSURUYXNrOjpHZXRUaHJlYWRJRFRhc2spOgorICAgICAgICAoV2ViS2l0OjpHZXRUaHJlYWRJ
RFRhc2s6On5HZXRUaHJlYWRJRFRhc2spOgorICAgICAgICAoV2ViS2l0OjpHZXRUaHJlYWRJRFRh
c2s6OnJ1bik6CisgICAgICAgIChXZWJLaXQ6OkNDVGhyZWFkVGFza0FkYXB0ZXI6OkNDVGhyZWFk
VGFza0FkYXB0ZXIpOgorICAgICAgICAoV2ViS2l0OjpDQ1RocmVhZFRhc2tBZGFwdGVyOjp+Q0NU
aHJlYWRUYXNrQWRhcHRlcik6CisgICAgICAgIChXZWJLaXQ6OkNDVGhyZWFkVGFza0FkYXB0ZXI6
OnJ1bik6CisgICAgICAgIChXZWJLaXQ6OkNDVGhyZWFkSW1wbDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6Q0NUaHJlYWRJbXBsOjp+Q0NUaHJlYWRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6
Q0NUaHJlYWRJbXBsOjpwb3N0VGFzayk6CisgICAgICAgIChXZWJLaXQ6OkNDVGhyZWFkSW1wbDo6
dGhyZWFkSUQpOgorICAgICAgICAoV2ViS2l0OjpDQ1RocmVhZEltcGw6OkNDVGhyZWFkSW1wbCk6
CisgICAgICAgICogc3JjL0NDVGhyZWFkSW1wbC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWQuY3BwLgorICAgICAgICAq
IHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjcmVh
dGVDb21wb3NpdG9yVGhyZWFkKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAg
ICAgKiB0ZXN0cy9DQ1RocmVhZFRlc3QuY3BwOgorCiAyMDExLTA4LTE5ICBBbmRyZXkgS29zeWFr
b3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW0V4dGVu
c2lvbnMgQVBJXVtjaHJvbWl1bV0gd2ViSW5zcGVjdG9yLnJlc291cmNlcyBkZXByZWNhdGlvbiB3
YXJuaW5nIGlzIGdpdmVuIGV2ZW4gZm9yIGV4dGVuc2lvbnMgdGhhdCBkb24ndCB1c2Ugd2ViSW5z
cGVjdG9yLnJlc291cmNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDk0YWQxZmMx
OWE3ZWQwMDgzZWZhZDNiOTNlZWYzYmViMTgwMjljOTAuLjJhY2IyNGIyMGYwMDdhMzAyNWRiY2Rl
MmM1ZDU0ZGJiNzk5YTRkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTMyNCw2
ICszMjQsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvQmxvYlJlZ2lzdHJ5UHJveHkuaCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9Cb3VuZE9iamVjdC5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvQm91bmRPYmplY3QuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9DQ1RocmVhZEltcGwuY3Bw
JywKKyAgICAgICAgICAgICAgICAnc3JjL0NDVGhyZWFkSW1wbC5oJywKICAgICAgICAgICAgICAg
ICAnc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0Nocm9t
ZUNsaWVudEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9DaHJvbWl1bUN1cnJlbnRUaW1l
LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUaHJl
YWQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRocmVhZC5oCmluZGV4IGNh
YWM5NWM2MjZjYzdhZmUxYWY3MDMxZjMyZmNiYTU4ZDczYWM3OGYuLjgyODIyYmJiY2ZmYTA0ODQ4
YTViMDFiOThjYmFkYmE2OGJjNjVlMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlRocmVhZC5oCkBAIC00MiwxMCArNDIsOSBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHZp
cnR1YWwgdm9pZCBwb3N0VGFzayhUYXNrKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwb3N0RGVs
YXllZFRhc2soVGFzayosIGludDY0IGRlbGF5TXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9z
dERlbGF5ZWRUYXNrKFRhc2sqLCBpbnQ2NF90IGRlbGF5TXMpID0gMDsKIAotcHJvdGVjdGVkOgot
ICAgIH5XZWJUaHJlYWQoKSB7IH0KKyAgICB2aXJ0dWFsIH5XZWJUaHJlYWQoKSB7IH0KIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQ0NUaHJlYWRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NDVGhy
ZWFkSW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzcwYzZhYWZhN2YyZTRjZmIwMDRiYzkwMmUxZjRiNzY3
OWQxOWFjMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ND
VGhyZWFkSW1wbC5jcHAKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJDQ1RocmVhZEltcGwuaCIKKworI2luY2x1ZGUgIldlYktp
dC5oIgorI2luY2x1ZGUgIldlYktpdENsaWVudC5oIgorI2luY2x1ZGUgIldlYlRocmVhZC5oIgor
I2luY2x1ZGUgImNjL0NDQ29tcGxldGlvbkV2ZW50LmgiCisjaW5jbHVkZSA8c3RkaW50Lmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gVGFz
ayB0aGF0LCB3aGVuIHJ1bnMsIHBsYWNlcyB0aGUgY3VycmVudCB0aHJlYWQgSUQgaW50byB0aGUg
cHJvdmlkZWQKKy8vIHBvaW50ZXIgYW5kIHNpZ25hbHMgYSBjb21wbGV0aW9uIGV2ZW50LgorLy8K
Ky8vIERvZXMgbm90IHByb3ZpZGUgYSBQYXNzT3duUHRyPEdldFRocmVhZElEVGFzaz46OmNyZWF0
ZSBtZXRob2QgYmVjYXVzZQorLy8gdGhlIHJlc3VsdGluZyBvYmplY3QgaXMgYWx3YXlzIGhhbmRl
ZCBpbnRvIGEgV2ViVGhyZWFkLCB3aGljaCBkb2VzIG5vdCB1bmRlcnN0YW5kCisvLyBQYXNzT3du
UHRycy4KK2NsYXNzIEdldFRocmVhZElEVGFzayA6IHB1YmxpYyBXZWJUaHJlYWQ6OlRhc2sgewor
cHVibGljOgorICAgIEdldFRocmVhZElEVGFzayhXVEY6OlRocmVhZElkZW50aWZpZXIqIHJlc3Vs
dCwgV2ViQ29yZTo6Q0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCisgICAgICAgICA6IG1f
Y29tcGxldGlvbihjb21wbGV0aW9uKQorICAgICAgICAgLCBtX3Jlc3VsdChyZXN1bHQpIHsgfQor
CisgICAgdmlydHVhbCB+R2V0VGhyZWFkSURUYXNrKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
cnVuKCkKKyAgICB7CisgICAgICAgICptX3Jlc3VsdCA9IFdURjo6Y3VycmVudFRocmVhZCgpOwor
ICAgICAgICBtX2NvbXBsZXRpb24tPnNpZ25hbCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBX
ZWJDb3JlOjpDQ0NvbXBsZXRpb25FdmVudCogbV9jb21wbGV0aW9uOworICAgIFdURjo6VGhyZWFk
SWRlbnRpZmllciogbV9yZXN1bHQ7Cit9OworCisvLyBHZW5lcmFsIGFkYXB0ZXIgZnJvbSBhIEND
VGhyZWFkOjpUYXNrIHRvIGEgV2ViVGhyZWFkOjpUYXNrLgorY2xhc3MgQ0NUaHJlYWRUYXNrQWRh
cHRlciA6IHB1YmxpYyBXZWJUaHJlYWQ6OlRhc2sgeworcHVibGljOgorICAgIENDVGhyZWFkVGFz
a0FkYXB0ZXIoUGFzc093blB0cjxDQ1RocmVhZDo6VGFzaz4gdGFzaykgOiBtX3Rhc2sodGFzaykg
eyB9CisgICAgdmlydHVhbCB+Q0NUaHJlYWRUYXNrQWRhcHRlcigpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgbV90YXNrLT5wZXJmb3JtVGFzaygpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBPd25QdHI8Q0NUaHJlYWQ6OlRhc2s+IG1fdGFzazsKK307CisKK1Bh
c3NPd25QdHI8Q0NUaHJlYWQ+IENDVGhyZWFkSW1wbDo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4g
YWRvcHRQdHIobmV3IENDVGhyZWFkSW1wbCgpKTsKK30KKworQ0NUaHJlYWRJbXBsOjp+Q0NUaHJl
YWRJbXBsKCkKK3sKK30KKwordm9pZCBDQ1RocmVhZEltcGw6OnBvc3RUYXNrKFBhc3NPd25QdHI8
Q0NUaHJlYWQ6OlRhc2s+IHRhc2spCit7CisgICAgbV90aHJlYWQtPnBvc3RUYXNrKG5ldyBDQ1Ro
cmVhZFRhc2tBZGFwdGVyKHRhc2spKTsKK30KKworV1RGOjpUaHJlYWRJZGVudGlmaWVyIENDVGhy
ZWFkSW1wbDo6dGhyZWFkSUQoKSBjb25zdAoreworICAgIHJldHVybiBtX3RocmVhZElEOworfQor
CitDQ1RocmVhZEltcGw6OkNDVGhyZWFkSW1wbCgpCisgICAgOiBtX3RocmVhZChhZG9wdFB0cih3
ZWJLaXRDbGllbnQoKS0+Y3JlYXRlVGhyZWFkKCJDQ1RocmVhZCIpKSkKK3sKKyAgICAvLyBHZXQg
dGhlIHRocmVhZElkIGZvciB0aGUgbmV3bHktY3JlYXRlZCB0aHJlYWQgYnkgcnVubmluZyBhIHRh
c2sKKyAgICAvLyBvbiB0aGF0IHRocmVhZCwgYmxvY2tpbmcgb24gdGhlIHJlc3VsdC4KKyAgICBD
Q0NvbXBsZXRpb25FdmVudCBjb21wbGV0aW9uOworICAgIG1fdGhyZWFkLT5wb3N0VGFzayhuZXcg
R2V0VGhyZWFkSURUYXNrKCZtX3RocmVhZElELCAmY29tcGxldGlvbikpOworICAgIGNvbXBsZXRp
b24ud2FpdCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NDVGhyZWFkSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQ0NUaHJlYWRJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWM5MjlhYjEwOWM1M2UzYjE2NzIz
MjgxN2Q5OThhOGNmZTBiNTIxNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0NDVGhyZWFkSW1wbC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjYy9DQ1RocmVhZC5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKKworI2lmbmRlZiBDQ1RocmVhZEltcGxfaAorI2RlZmlu
ZSBDQ1RocmVhZEltcGxfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViVGhyZWFk
OworCisvLyBJbXBsZW1lbnRzIENDVGhyZWFkIGluIHRlcm1zIG9mIFdlYlRocmVhZC4KK2NsYXNz
IENDVGhyZWFkSW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpDQ1RocmVhZCB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NPd25QdHI8V2ViQ29yZTo6Q0NUaHJlYWQ+IGNyZWF0ZSgpOworICAgIHZpcnR1
YWwgfkNDVGhyZWFkSW1wbCgpOworICAgIHZvaWQgcG9zdFRhc2soUGFzc093blB0cjxXZWJDb3Jl
OjpDQ1RocmVhZDo6VGFzaz4pOworICAgIFdURjo6VGhyZWFkSWRlbnRpZmllciB0aHJlYWRJRCgp
IGNvbnN0OworCitwcml2YXRlOgorICAgIENDVGhyZWFkSW1wbCgpOworCisgICAgT3duUHRyPFdl
YlRocmVhZD4gbV90aHJlYWQ7CisgICAgV1RGOjpUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkSUQ7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggODAxMTVkZDY4YTU1ODJhODdkYzczMjJl
MjE0ZTkxZjA4YTc3YjdjZS4uZDEwODI0NzZkYWI0YjlkMTFiMWQxOGJlN2Q4Y2Q3MzQ3YTljNzdh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIkF1dG9maWxsUG9wdXBNZW51Q2xpZW50LmgiCiAjaW5jbHVk
ZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdENocm9taXVtLmgi
CisjaW5jbHVkZSAiQ0NUaHJlYWRJbXBsLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5o
IgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKQEAg
LTI1OTAsNiArMjU5MSwxMSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAKICNlbmRpZgogCitQYXNzT3duUHRyPENDVGhy
ZWFkPiBXZWJWaWV3SW1wbDo6Y3JlYXRlQ29tcG9zaXRvclRocmVhZCgpCit7CisgICAgcmV0dXJu
IENDVGhyZWFkSW1wbDo6Y3JlYXRlKCk7Cit9CisKIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IFdlYlZpZXdJbXBsOjpjcmVhdGVMYXllclRyZWVIb3N0Q29udGV4dDNEKCkKIHsKICAgICBS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBtX3RlbXBvcmFyeU9uc2NyZWVuR3Jh
cGhpY3NDb250ZXh0M0QucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmgKaW5kZXggYzRiNmM2YTA1OGQyYWVlYzMyYTBmN2FjMjY0NzBkM2JhZGQ2ZjdlMi4u
Mzk1MWNkN2IzOWEwZTJmYmU0MWRlODkxZjIzM2Q1NzYxOGQ0ZTQ4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0yMTIsNiArMjEyLDcgQEAgcHVibGljOgog
CiAgICAgLy8gQ0NMYXllclRyZWVIb3N0Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGVB
bmRMYXlvdXQoZG91YmxlIGZyYW1lQmVnaW5UaW1lKTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
V2ViQ29yZTo6Q0NUaHJlYWQ+IGNyZWF0ZUNvbXBvc2l0b3JUaHJlYWQoKTsKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUxheWVyVHJlZUhv
c3RDb250ZXh0M0QoKTsKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6TGF5ZXJQYWlu
dGVyQ2hyb21pdW0+IGNyZWF0ZVJvb3RMYXllclBhaW50ZXIoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjcmVhdGVHcmFwaGljc0NvbnRleHQoYm9vbCBzdWNjZXNzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRUZXN0LmNwcAppbmRleCBlY2NjNzEyZDA5NmI5MTk5
MzRlYWJkMTA2MWJkZTMyM2UyZDI4MWI3Li4xNWJhMTMxYjUyZjY4MTAzNmQzZjBhNGY4OTRhM2Vm
ZTc0ZjBhMWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGhy
ZWFkVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZFRl
c3QuY3BwCkBAIC0yNiwxMCArMjYsMTIgQEAKIAogI2luY2x1ZGUgImNjL0NDVGhyZWFkLmgiCiAK
KyNpbmNsdWRlICJDQ1RocmVhZEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0NvbXBsZXRpb25FdmVu
dC5oIgogI2luY2x1ZGUgImNjL0NDTWFpblRocmVhZFRhc2suaCIKICNpbmNsdWRlICJjYy9DQ1Ro
cmVhZFRhc2suaCIKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCiAjaW5jbHVkZSA8d2Via2l0
L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104685</attachid>
            <date>2011-08-22 09:55:49 -0700</date>
            <delta_ts>2011-08-23 09:29:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66610-20110822095548.patch</filename>
            <type>text/plain</type>
            <size>21116</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM1MDYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ODdkZDBmNDk2MzRlMmMz
MjU2N2MzNGJjZDI1YjgwYTQ4NGYwNWY4Li43OTdmMjUwODNmZDg3ZDYyNGIzNTU0NzBjYjc0N2U4
NTE3MTY3NjhlIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDgtMTkgIE5hdCBE
dWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gSW1wbGVtZW50
IENDVGhyZWFkIGluIHRlcm1zIG9mIFdlYlRocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY2MTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NvbXBsZXRpb25FdmVudC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGxQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsUHJveHk6OkNDTGF5ZXJUcmVlSG9zdEltcGxQ
cm94eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkOjp+Q0NUaHJlYWQpOgorCiAyMDExLTA4LTIy
ICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgogCiAgICAgICAgIENocm9tZTo6
c2V0U2VsZWN0ZWRDb2xvckluQ29sb3JDaG9vc2VyIHNob3VsZG4ndCBiZSBjYWxsZWQgd2hlbiBj
b2xvciBjaG9vc2VyIHNldHMgYSBuZXcgY29sb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA2MzNlNjNh
MjEyNTUxMWMzYWYyNzAzNDBhMmE0MGYyM2Y0NmY3ZDMwLi42NWI5NzMyZjMwODZjMmNhYjE0N2Fl
Y2YyNjMzYjc2MWQyNTQyMWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNTc1LDcgKzM1NzUsNiBA
QAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5
ZXJJbXBsLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyU3VyZmFjZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkVGFzay5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NvbXBsZXRpb25F
dmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0ND
b21wbGV0aW9uRXZlbnQuaAppbmRleCA5OWUzNmU3YWZjOTYzODFjNjNlMDIzNTBjMzQ3MzIzZGEw
ZTkwYWI3Li43OGJjNjgzYTFkMTIzZmMzZTg4MDE4NjRhMDc5YjY2ZGRiMmQ5ZWFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NvbXBs
ZXRpb25FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDQ29tcGxldGlvbkV2ZW50LmgKQEAgLTEsNCArMSwzIEBACi0KIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0z
MCw2ICsyOSwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIFVzZWQgZm9yIG1ha2lu
ZyBibG9ja2luZyBjYWxscyBmcm9tIG9uZSB0aHJlYWQgdG8gYW5vdGhlci4gVXNlIG9ubHkgd2hl
bgorLy8gYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgZG9pbmctc28gd2lsbCBub3QgbGVhZCB0byBh
IGxpdmVsb2NrLgorLy8KKy8vIEl0IGlzIHNhZmUgdG8gZGVzdHJveSB0aGlzIG9iamVjdCBhcyBz
b29uIGFzIHdhaXQoKSByZXR1cm5zLgogY2xhc3MgQ0NDb21wbGV0aW9uRXZlbnQgewogcHVibGlj
OgogICAgIENDQ29tcGxldGlvbkV2ZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5k
ZXggYjA3YTI1ZmNhNjJjYmNiNWFkY2NhOTE4OWNhYmVhZGQzZTVlMGQ5OS4uNTVkNWNiNWZhOTkw
OTZhMDEzYmY2YjZmNjJhMTM1ZGJjNGQxMTQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0xheWVy
VHJlZUhvc3RJbXBsOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudDsKK2NsYXNzIEND
VGhyZWFkOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBMYXllckNocm9taXVtOwog
Y2xhc3MgTGF5ZXJQYWludGVyQ2hyb21pdW07CkBAIC00Nyw2ICs0OCw3IEBAIGNsYXNzIE5vbkNv
bXBvc2l0ZWRDb250ZW50SG9zdDsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdENsaWVudCB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGVBbmRMYXlvdXQoZG91YmxlIGZyYW1lQmVnaW5U
aW1lKSA9IDA7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPENDVGhyZWFkPiBjcmVhdGVDb21wb3Np
dG9yVGhyZWFkKCkgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gY3JlYXRlTGF5ZXJUcmVlSG9zdENvbnRleHQzRCgpID0gMDsKICAgICB2aXJ0dWFsIFBhc3NP
d25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IGNyZWF0ZVJvb3RMYXllclBhaW50ZXIoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlR3JhcGhpY3NDb250ZXh0KGJvb2wgc3VjY2Vz
cykgPSAwOwpAQCAtODUsNiArODcsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBhbmltYXRpbmcoKSBj
b25zdCB7IHJldHVybiBtX2FuaW1hdGluZzsgfQogICAgIHZvaWQgc2V0QW5pbWF0aW5nKGJvb2wg
YW5pbWF0aW5nKSB7IG1fYW5pbWF0aW5nID0gYW5pbWF0aW5nOyB9IC8vIENhbiBiZSByZW1vdmVk
IHdoZW4gbm9uLXRocmVhZGVkIHNjaGVkdWxpbmcgbW92ZXMgaW5zaWRlLgogCisgICAgQ0NMYXll
clRyZWVIb3N0Q2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQorCiAgICAgR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQoKTsKIAogICAgIHZvaWQgY29tcG9zaXRlQW5kUmVhZGJh
Y2sodm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbFByb3h5LmNwcAppbmRleCBiOTlkYjk3N2U5ZmFjMGM4NTM2MTA2NTM1
ZWMwMmE5NDhlMjkwYzUzLi5hNjY5Mjg4NTY0NTk2ZDg3ODI2NzY2MWQzZjk0NjFlYmZiNjYyZTk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGxQcm94eS5jcHAKQEAg
LTQ5LDcgKzQ5LDcgQEAgQ0NMYXllclRyZWVIb3N0SW1wbFByb3h5OjpDQ0xheWVyVHJlZUhvc3RJ
bXBsUHJveHkoQ0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3MKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogICAgIG51bVByb3hpZXMrKzsKICAgICBpZiAoIWNjVGhyZWFkKQotICAgICAg
ICBjY1RocmVhZCA9IENDVGhyZWFkOjpjcmVhdGUoKS5sZWFrUHRyKCk7CisgICAgICAgIGNjVGhy
ZWFkID0gbGF5ZXJUcmVlSG9zdC0+Y2xpZW50KCktPmNyZWF0ZUNvbXBvc2l0b3JUaHJlYWQoKS5s
ZWFrUHRyKCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBkZTE3M2ExMzQ5ODI0YWY5MGZhZGNlNzgxOTBmYmI4M2NjNDBlYjg1Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDgxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lu
Y2x1ZGUgIkNDVGhyZWFkLmgiCi0KLSNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIK
LSNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCi0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0j
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0
aXZlcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci0K
LUNDVGhyZWFkOjpDQ1RocmVhZCgpCi17Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX3RocmVhZENy
ZWF0aW9uTXV0ZXgpOwotICAgIG1fdGhyZWFkSUQgPSBjcmVhdGVUaHJlYWQoQ0NUaHJlYWQ6OmNv
bXBvc2l0b3JUaHJlYWRTdGFydCwgdGhpcywgIkNocm9taXVtIENvbXBvc2l0b3IiKTsKLX0KLQot
Q0NUaHJlYWQ6On5DQ1RocmVhZCgpCi17Ci0gICAgbV9xdWV1ZS5raWxsKCk7Ci0KLSAgICAvLyBT
dG9wIHRocmVhZC4KLSAgICB2b2lkKiBleGl0Q29kZTsKLSAgICB3YWl0Rm9yVGhyZWFkQ29tcGxl
dGlvbihtX3RocmVhZElELCAmZXhpdENvZGUpOwotICAgIG1fdGhyZWFkSUQgPSAwOwotfQotCi12
b2lkIENDVGhyZWFkOjpwb3N0VGFzayhQYXNzT3duUHRyPFRhc2s+IHRhc2spCi17Ci0gICAgbV9x
dWV1ZS5hcHBlbmQodGFzayk7Ci19Ci0KLXZvaWQqIENDVGhyZWFkOjpjb21wb3NpdG9yVGhyZWFk
U3RhcnQodm9pZCogdXNlcmRhdGEpCi17Ci0gICAgQ0NUaHJlYWQqIGNjVGhyZWFkID0gc3RhdGlj
X2Nhc3Q8Q0NUaHJlYWQqPih1c2VyZGF0YSk7Ci0gICAgcmV0dXJuIGNjVGhyZWFkLT5ydW5Mb29w
KCk7Ci19Ci0KLXZvaWQqIENDVGhyZWFkOjpydW5Mb29wKCkKLXsKLSAgICBUUkFDRV9FVkVOVCgi
Q0NUaHJlYWQ6OnJ1bkxvb3AiLCB0aGlzLCAwKTsKLSAgICB7Ci0gICAgICAgIC8vIFdhaXQgZm9y
IENDVGhyZWFkOjpzdGFydCgpIHRvIGNvbXBsZXRlIHRvIGhhdmUgbV90aHJlYWRJRAotICAgICAg
ICAvLyBlc3RhYmxpc2hlZCBiZWZvcmUgc3RhcnRpbmcgdGhlIG1haW4gbG9vcC4KLSAgICAgICAg
TXV0ZXhMb2NrZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgpOwotICAgIH0KLQotICAgIHdo
aWxlIChPd25QdHI8VGFzaz4gdGFzayA9IG1fcXVldWUud2FpdEZvck1lc3NhZ2UoKSkKLSAgICAg
ICAgdGFzay0+cGVyZm9ybVRhc2soKTsKLQotICAgIHJldHVybiAwOwotfQotCi19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWQuaAppbmRleCAxNzdkM2YzOGFiYzQyM2NkNjlmODcwNTljZTdiNmE3YTk1ZjAzMTE2Li5hMmYy
Y2Y0ZGNlOTFkNGUzYWMxNzliMjg4YmY1ODNiMDVmMTFjYTU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkLmgKQEAg
LTI1LDIzICsyNSwxNiBAQAogI2lmbmRlZiBDQ1RocmVhZF9oCiAjZGVmaW5lIENDVGhyZWFkX2gK
IAotI2luY2x1ZGUgPHd0Zi9NZXNzYWdlUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIFRoZSBDQ1RocmVhZCBzaW5nbGV0b24g
b3ducyB0aGUgY29tcG9zaXRvciB0aHJlYWQgYW5kIHByb3ZpZGVzCi0vLyBiYXNpYyBpbmZyYXN0
cnVjdHVyZSBmb3IgbWVzc2FnaW5nIGJldHdlZW4gdGhlIHR3byB0aHJlYWRzLgorLy8gQ0NUaHJl
YWQgcHJvdmlkZXMgYmFzaWMgaW5mcmFzdHJ1Y3R1cmUgZm9yIG1lc3NhZ2luZyB3aXRoIHRoZSBj
b21wb3NpdG9yIGluIGEKKy8vIHBsYXRmb3JtLW5ldXRyYWwgd2F5LgogY2xhc3MgQ0NUaHJlYWQg
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDVGhyZWFkPiBjcmVhdGUoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RocmVhZCgpKTsKLSAgICB9Ci0KLSAg
ICB2aXJ0dWFsIH5DQ1RocmVhZCgpOworICAgIHZpcnR1YWwgfkNDVGhyZWFkKCkgeyB9CiAKICAg
ICBjbGFzcyBUYXNrIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGFzayk7CkBAIC01
NCwyMCArNDcsOSBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQqIG1faW5zdGFuY2U7CiAgICAgfTsK
IAotICAgIHZvaWQgcG9zdFRhc2soUGFzc093blB0cjxUYXNrPik7IC8vIEV4ZWN1dGVzIHRoZSB0
YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5bmNocm9ub3VzbHkuCi0KLSAgICBXVEY6OlRocmVh
ZElkZW50aWZpZXIgdGhyZWFkSUQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZElEOyB9Ci0KLXBy
b3RlY3RlZDoKLSAgICBleHBsaWNpdCBDQ1RocmVhZCgpOwotCi0gICAgc3RhdGljIHZvaWQqIGNv
bXBvc2l0b3JUaHJlYWRTdGFydCh2b2lkKik7Ci0gICAgdm9pZCogcnVuTG9vcCgpOwotCi0gICAg
V1RGOjpUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkSUQ7Ci0gICAgTWVzc2FnZVF1ZXVlPFRhc2s+
IG1fcXVldWU7CisgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrKFBhc3NPd25QdHI8VGFzaz4pID0g
MDsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gY29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNs
eS4KIAotICAgIE11dGV4IG1fdGhyZWFkQ3JlYXRpb25NdXRleDsKKyAgICB2aXJ0dWFsIFdURjo6
VGhyZWFkSWRlbnRpZmllciB0aHJlYWRJRCgpIGNvbnN0ID0gMDsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggODQ4MGY1NGIwNTZiZjk2ZWNmYjkyMzA1NWFjZjExMGJjMjRm
MzRlNi4uNmQxMzVjMmMyZTA0MzllZGY1NmYwMGQ1NTQxZmMwNjFiY2I0YTc3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMS0wOC0xOSAgTmF0IER1Y2Eg
IDxuZHVjYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBJbXBsZW1lbnQgQ0NU
aHJlYWQgaW4gdGVybXMgb2YgV2ViVGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NjYxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViVGhy
ZWFkLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlRocmVhZDo6fldlYlRocmVhZCk6CisgICAgICAg
ICogc3JjL0NDVGhyZWFkSW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpHZXRUaHJl
YWRJRFRhc2s6OkdldFRocmVhZElEVGFzayk6CisgICAgICAgIChXZWJLaXQ6OkdldFRocmVhZElE
VGFzazo6fkdldFRocmVhZElEVGFzayk6CisgICAgICAgIChXZWJLaXQ6OkdldFRocmVhZElEVGFz
azo6cnVuKToKKyAgICAgICAgKFdlYktpdDo6Q0NUaHJlYWRUYXNrQWRhcHRlcjo6Q0NUaHJlYWRU
YXNrQWRhcHRlcik6CisgICAgICAgIChXZWJLaXQ6OkNDVGhyZWFkVGFza0FkYXB0ZXI6On5DQ1Ro
cmVhZFRhc2tBZGFwdGVyKToKKyAgICAgICAgKFdlYktpdDo6Q0NUaHJlYWRUYXNrQWRhcHRlcjo6
cnVuKToKKyAgICAgICAgKFdlYktpdDo6Q0NUaHJlYWRJbXBsOjpjcmVhdGUpOgorICAgICAgICAo
V2ViS2l0OjpDQ1RocmVhZEltcGw6On5DQ1RocmVhZEltcGwpOgorICAgICAgICAoV2ViS2l0OjpD
Q1RocmVhZEltcGw6OnBvc3RUYXNrKToKKyAgICAgICAgKFdlYktpdDo6Q0NUaHJlYWRJbXBsOjp0
aHJlYWRJRCk6CisgICAgICAgIChXZWJLaXQ6OkNDVGhyZWFkSW1wbDo6Q0NUaHJlYWRJbXBsKToK
KyAgICAgICAgKiBzcmMvQ0NUaHJlYWRJbXBsLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZC5jcHAuCisgICAgICAgICog
c3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNyZWF0
ZUNvbXBvc2l0b3JUaHJlYWQpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAg
ICAqIHRlc3RzL0NDVGhyZWFkVGVzdC5jcHA6CisKIDIwMTEtMDgtMjAgIE5lYm9qc2EgQ2lyaWMg
IDxjaXJhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgZGVwZW5kZW5jeSBvbiB2OC1pMThu
IGxpYnJhcnkuIFdlIHVzZWQgdjggcmVwb3NpdG9yeSBiZWZvcmUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXAKaW5kZXggOTRhZDFmYzE5YTdlZDAwODNlZmFkM2I5M2VlZjNiZWIxODAyOWM5MC4u
MmFjYjI0YjIwZjAwN2EzMDI1ZGJjZGUyYzVkNTRkYmI3OTlhNGQzNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cApAQCAtMzI0LDYgKzMyNCw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9C
bG9iUmVnaXN0cnlQcm94eS5oJywKICAgICAgICAgICAgICAgICAnc3JjL0JvdW5kT2JqZWN0LmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9Cb3VuZE9iamVjdC5oJywKKyAgICAgICAgICAgICAg
ICAnc3JjL0NDVGhyZWFkSW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvQ0NUaHJlYWRJ
bXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvQ2hyb21lQ2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAn
c3JjL0Nocm9taXVtQ3VycmVudFRpbWUuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlRocmVhZC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVGhyZWFkLmgKaW5kZXggY2FhYzk1YzYyNmNjN2FmZTFhZjcwMzFmMzJmY2JhNThkNzNh
Yzc4Zi4uZGIyNTU1NmY5ZmVjZTY4ZTZiZTZlZDM4ZjBkYTgyMjljMGY3ZWUyYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGhyZWFkLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGhyZWFkLmgKQEAgLTI5LDYgKzI5LDggQEAKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKKyNkZWZpbmUgV0VCVEhSRUFEX0hBU19MT05HTE9OR19DSEFO
R0UKKwogLy8gUHJvdmlkZXMgYW4gaW50ZXJmYWNlIHRvIGFuIGVtYmVkZGVyLWRlZmluZWQgdGhy
ZWFkIGltcGxlbWVudGF0aW9uLgogLy8KIC8vIERlbGV0aW5nIHRoZSB0aHJlYWQgYmxvY2tzIHVu
dGlsIGFsbCBwZW5kaW5nLCBub24tZGVsYXllZCB0YXNrcyBoYXZlIGJlZW4KQEAgLTQyLDEwICs0
NCw5IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrKFRhc2sq
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvc3REZWxheWVkVGFzayhUYXNrKiwgaW50NjQgZGVs
YXlNcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwb3N0RGVsYXllZFRhc2soVGFzayosIGxvbmcg
bG9uZyBkZWxheU1zKSA9IDA7CiAKLXByb3RlY3RlZDoKLSAgICB+V2ViVGhyZWFkKCkgeyB9Cisg
ICAgdmlydHVhbCB+V2ViVGhyZWFkKCkgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NDVGhyZWFkSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DQ1RocmVhZEltcGwuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ4Y2JhOGMxNzE1YmE3NGUyM2UwYmJkNmQxOGVkNmNjYTNmZTI4YTQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DQ1RocmVhZEltcGwuY3BwCkBAIC0wLDAg
KzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
Q0NUaHJlYWRJbXBsLmgiCisKKyNpbmNsdWRlICJXZWJLaXQuaCIKKyNpbmNsdWRlICJXZWJLaXRD
bGllbnQuaCIKKyNpbmNsdWRlICJXZWJUaHJlYWQuaCIKKyNpbmNsdWRlICJjYy9DQ0NvbXBsZXRp
b25FdmVudC5oIgorI2luY2x1ZGUgPHN0ZGludC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIFRhc2sgdGhhdCwgd2hlbiBydW5zLCBwbGFj
ZXMgdGhlIGN1cnJlbnQgdGhyZWFkIElEIGludG8gdGhlIHByb3ZpZGVkCisvLyBwb2ludGVyIGFu
ZCBzaWduYWxzIGEgY29tcGxldGlvbiBldmVudC4KKy8vCisvLyBEb2VzIG5vdCBwcm92aWRlIGEg
UGFzc093blB0cjxHZXRUaHJlYWRJRFRhc2s+OjpjcmVhdGUgbWV0aG9kIGJlY2F1c2UKKy8vIHRo
ZSByZXN1bHRpbmcgb2JqZWN0IGlzIGFsd2F5cyBoYW5kZWQgaW50byBhIFdlYlRocmVhZCwgd2hp
Y2ggZG9lcyBub3QgdW5kZXJzdGFuZAorLy8gUGFzc093blB0cnMuCitjbGFzcyBHZXRUaHJlYWRJ
RFRhc2sgOiBwdWJsaWMgV2ViVGhyZWFkOjpUYXNrIHsKK3B1YmxpYzoKKyAgICBHZXRUaHJlYWRJ
RFRhc2soVGhyZWFkSWRlbnRpZmllciogcmVzdWx0LCBDQ0NvbXBsZXRpb25FdmVudCogY29tcGxl
dGlvbikKKyAgICAgICAgIDogbV9jb21wbGV0aW9uKGNvbXBsZXRpb24pCisgICAgICAgICAsIG1f
cmVzdWx0KHJlc3VsdCkgeyB9CisKKyAgICB2aXJ0dWFsIH5HZXRUaHJlYWRJRFRhc2soKSB7IH0K
KworICAgIHZpcnR1YWwgdm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgKm1fcmVzdWx0ID0gY3Vy
cmVudFRocmVhZCgpOworICAgICAgICBtX2NvbXBsZXRpb24tPnNpZ25hbCgpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBXZWJDb3JlOjpDQ0NvbXBsZXRpb25FdmVudCogbV9jb21wbGV0aW9uOwor
ICAgIFRocmVhZElkZW50aWZpZXIqIG1fcmVzdWx0OworfTsKKworLy8gR2VuZXJhbCBhZGFwdGVy
IGZyb20gYSBDQ1RocmVhZDo6VGFzayB0byBhIFdlYlRocmVhZDo6VGFzay4KK2NsYXNzIENDVGhy
ZWFkVGFza0FkYXB0ZXIgOiBwdWJsaWMgV2ViVGhyZWFkOjpUYXNrIHsKK3B1YmxpYzoKKyAgICBD
Q1RocmVhZFRhc2tBZGFwdGVyKFBhc3NPd25QdHI8Q0NUaHJlYWQ6OlRhc2s+IHRhc2spIDogbV90
YXNrKHRhc2spIHsgfQorCisgICAgdmlydHVhbCB+Q0NUaHJlYWRUYXNrQWRhcHRlcigpIHsgfQor
CisgICAgdmlydHVhbCB2b2lkIHJ1bigpCisgICAgeworICAgICAgICBtX3Rhc2stPnBlcmZvcm1U
YXNrKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIE93blB0cjxDQ1RocmVhZDo6VGFzaz4gbV90
YXNrOworfTsKKworUGFzc093blB0cjxDQ1RocmVhZD4gQ0NUaHJlYWRJbXBsOjpjcmVhdGUoKQor
eworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NUaHJlYWRJbXBsKCkpOworfQorCitDQ1RocmVh
ZEltcGw6On5DQ1RocmVhZEltcGwoKQoreworfQorCit2b2lkIENDVGhyZWFkSW1wbDo6cG9zdFRh
c2soUGFzc093blB0cjxDQ1RocmVhZDo6VGFzaz4gdGFzaykKK3sKKyAgICBtX3RocmVhZC0+cG9z
dFRhc2sobmV3IENDVGhyZWFkVGFza0FkYXB0ZXIodGFzaykpOworfQorCitUaHJlYWRJZGVudGlm
aWVyIENDVGhyZWFkSW1wbDo6dGhyZWFkSUQoKSBjb25zdAoreworICAgIHJldHVybiBtX3RocmVh
ZElEOworfQorCitDQ1RocmVhZEltcGw6OkNDVGhyZWFkSW1wbCgpCisgICAgOiBtX3RocmVhZChh
ZG9wdFB0cih3ZWJLaXRDbGllbnQoKS0+Y3JlYXRlVGhyZWFkKCJDQ1RocmVhZCIpKSkKK3sKKyAg
ICAvLyBHZXQgdGhlIHRocmVhZElkIGZvciB0aGUgbmV3bHktY3JlYXRlZCB0aHJlYWQgYnkgcnVu
bmluZyBhIHRhc2sKKyAgICAvLyBvbiB0aGF0IHRocmVhZCwgYmxvY2tpbmcgb24gdGhlIHJlc3Vs
dC4KKyAgICBtX3RocmVhZElEID0gY3VycmVudFRocmVhZCgpOworICAgIENDQ29tcGxldGlvbkV2
ZW50IGNvbXBsZXRpb247CisgICAgbV90aHJlYWQtPnBvc3RUYXNrKG5ldyBHZXRUaHJlYWRJRFRh
c2soJm1fdGhyZWFkSUQsICZjb21wbGV0aW9uKSk7CisgICAgY29tcGxldGlvbi53YWl0KCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQ0NUaHJlYWRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DQ1Ro
cmVhZEltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzkyOWFiMTA5YzUzZTNiMTY3MjMyODE3ZDk5OGE4Y2Zl
MGI1MjE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ0NU
aHJlYWRJbXBsLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNj
L0NDVGhyZWFkLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmcuaD4KKworCisjaWZuZGVmIENDVGhyZWFkSW1wbF9oCisjZGVmaW5lIENDVGhyZWFkSW1w
bF9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJUaHJlYWQ7CisKKy8vIEltcGxl
bWVudHMgQ0NUaHJlYWQgaW4gdGVybXMgb2YgV2ViVGhyZWFkLgorY2xhc3MgQ0NUaHJlYWRJbXBs
IDogcHVibGljIFdlYkNvcmU6OkNDVGhyZWFkIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093
blB0cjxXZWJDb3JlOjpDQ1RocmVhZD4gY3JlYXRlKCk7CisgICAgdmlydHVhbCB+Q0NUaHJlYWRJ
bXBsKCk7CisgICAgdm9pZCBwb3N0VGFzayhQYXNzT3duUHRyPFdlYkNvcmU6OkNDVGhyZWFkOjpU
YXNrPik7CisgICAgV1RGOjpUaHJlYWRJZGVudGlmaWVyIHRocmVhZElEKCkgY29uc3Q7CisKK3By
aXZhdGU6CisgICAgQ0NUaHJlYWRJbXBsKCk7CisKKyAgICBPd25QdHI8V2ViVGhyZWFkPiBtX3Ro
cmVhZDsKKyAgICBXVEY6OlRocmVhZElkZW50aWZpZXIgbV90aHJlYWRJRDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmNwcAppbmRleCA3YjJiNGU0MTljZTAwNTZjYWNlZjZiMzdlZDRkNjJmNTdjZDM1
NmYwLi41MjllNjFkZWViNzQ0NzU2YWZhN2NkYjE4ZWRlMGYwNjIwMmZhZDcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJBWE9iamVjdENh
Y2hlLmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRMaXN0Q2hyb21pdW0uaCIKKyNpbmNsdWRlICJD
Q1RocmVhZEltcGwuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAi
Q1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgpAQCAtMjYzOCw2ICsyNjM5
LDExIEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2
ZShib29sIGFjdGl2ZSkKIAogI2VuZGlmCiAKK1Bhc3NPd25QdHI8Q0NUaHJlYWQ+IFdlYlZpZXdJ
bXBsOjpjcmVhdGVDb21wb3NpdG9yVGhyZWFkKCkKK3sKKyAgICByZXR1cm4gQ0NUaHJlYWRJbXBs
OjpjcmVhdGUoKTsKK30KKwogUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gV2ViVmlld0lt
cGw6OmNyZWF0ZUxheWVyVHJlZUhvc3RDb250ZXh0M0QoKQogewogICAgIFJlZlB0cjxHcmFwaGlj
c0NvbnRleHQzRD4gY29udGV4dCA9IG1fdGVtcG9yYXJ5T25zY3JlZW5HcmFwaGljc0NvbnRleHQz
RC5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRl
eCBjN2NkMTJiNjcwNGRjOTU2MjA0YjEwNDc1MzZjYmRhMWJiMTY2NDljLi5kMjY2NzEyNzUzZmZk
ZWJiZjQ1NTI5ZGM5ZWRlM2Q4ODZiMDUyMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmgKQEAgLTIxNiw2ICsyMTYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDQ0xh
eWVyVHJlZUhvc3RDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUFuZExheW91dChkb3Vi
bGUgZnJhbWVCZWdpblRpbWUpOworICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpDQ1Ro
cmVhZD4gY3JlYXRlQ29tcG9zaXRvclRocmVhZCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlTGF5ZXJUcmVlSG9zdENvbnRleHQzRCgp
OwogICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpMYXllclBhaW50ZXJDaHJvbWl1bT4g
Y3JlYXRlUm9vdExheWVyUGFpbnRlcigpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZUdy
YXBoaWNzQ29udGV4dChib29sIHN1Y2Nlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1RocmVhZFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1RocmVhZFRlc3QuY3BwCmluZGV4IGVjY2M3MTJkMDk2YjkxOTkzNGVhYmQxMDYxYmRl
MzIzZTJkMjgxYjcuLmM2OTU2YjA2ODAzNjYwMzE1YmVmNDY4YTllMTkzZWNlOTk1ZGRjYWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRUZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGhyZWFkVGVzdC5jcHAKQEAgLTI2
LDEwICsyNiwxMiBAQAogCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWQuaCIKIAorI2luY2x1ZGUgIkND
VGhyZWFkSW1wbC5oIgogI2luY2x1ZGUgImNjL0NDQ29tcGxldGlvbkV2ZW50LmgiCiAjaW5jbHVk
ZSAiY2MvQ0NNYWluVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkVGFzay5oIgog
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKICNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJr
aXRfc3VwcG9ydC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKQEAgLTUxLDcgKzUz
LDcgQEAgcHVibGljOgogCiBURVNUKENDVGhyZWFkVGVzdCwgcGluZ1BvbmdVc2luZ0NvbmRpdGlv
bikKIHsKLSAgICBPd25QdHI8Q0NUaHJlYWQ+IHRocmVhZCA9IENDVGhyZWFkOjpjcmVhdGUoKTsK
KyAgICBPd25QdHI8Q0NUaHJlYWQ+IHRocmVhZCA9IFdlYktpdDo6Q0NUaHJlYWRJbXBsOjpjcmVh
dGUoKTsKICAgICBQaW5nUG9uZ1VzaW5nQ29uZGl0aW9uIHRhcmdldDsKICAgICBDQ0NvbXBsZXRp
b25FdmVudCBjb21wbGV0aW9uOwogICAgIHRocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRU
YXNrKCZ0YXJnZXQsICZQaW5nUG9uZ1VzaW5nQ29uZGl0aW9uOjpwaW5nLApAQCAtODAsNyArODIs
NyBAQCBwdWJsaWM6CiAKIFRFU1QoQ0NUaHJlYWRUZXN0LCBESVNBQkxFRF9zdGFydFBvc3RBbmRX
YWl0T25Db25kaXRpb24pCiB7Ci0gICAgT3duUHRyPENDVGhyZWFkPiB0aHJlYWQgPSBDQ1RocmVh
ZDo6Y3JlYXRlKCk7CisgICAgT3duUHRyPENDVGhyZWFkPiB0aHJlYWQgPSBXZWJLaXQ6OkNDVGhy
ZWFkSW1wbDo6Y3JlYXRlKCk7CiAKICAgICBQaW5nUG9uZ1Rlc3RVc2luZ1Rhc2tzIHRhcmdldDsK
ICAgICB0aHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzaygmdGFyZ2V0LCAmUGluZ1Bv
bmdUZXN0VXNpbmdUYXNrczo6cGluZykpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104858</attachid>
            <date>2011-08-23 09:29:10 -0700</date>
            <delta_ts>2011-08-23 17:19:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66610-20110823092909.patch</filename>
            <type>text/plain</type>
            <size>21012</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM2MDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjY2VlMDNlY2FjNDMxYmQ3
NGRlZjA3YTU1Y2QzZDJjNTU4N2I3Y2M0Li42NGFjYWQ0MjJiYzVmNDUzNDdkYWUxODVjZGM2ZTUz
ZmYyZDkxZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDgtMTkgIE5hdCBE
dWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gSW1wbGVtZW50
IENDVGhyZWFkIGluIHRlcm1zIG9mIFdlYlRocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY2MTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NvbXBsZXRpb25FdmVudC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGxQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsUHJveHk6OkNDTGF5ZXJUcmVlSG9zdEltcGxQ
cm94eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkOjp+Q0NUaHJlYWQpOgorCiAyMDExLTA4LTIz
ICBKZXNzaWUgQmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCmluZGV4IDVhYmZkYmI0YmE5YWZhMDUzNGQ5MWNmN2Q2OTViZWYwM2E4
YmQ3YjUuLjViYmM4YWI0YjM5Y2U1NGZkY2JlMDNmOTFiMjkxMDhhOGM0NDBlNDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTM1NDIsNyArMzU0Miw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgnLAot
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWQuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRUYXNr
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRM
YXllckltcGwuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDQ29tcGxldGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NvbXBsZXRpb25FdmVudC5oCmluZGV4IDk5ZTM2
ZTdhZmM5NjM4MWM2M2UwMjM1MGMzNDczMjNkYTBlOTBhYjcuLjc4YmM2ODNhMWQxMjNmYzNlODgw
MTg2NGEwNzliNjZkZGIyZDllYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ29tcGxldGlvbkV2ZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDb21wbGV0aW9uRXZlbnQuaApA
QCAtMSw0ICsxLDMgQEAKLQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTMwLDYgKzI5LDEwIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorLy8gVXNlZCBmb3IgbWFraW5nIGJsb2NraW5nIGNhbGxzIGZyb20gb25lIHRo
cmVhZCB0byBhbm90aGVyLiBVc2Ugb25seSB3aGVuCisvLyBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhh
dCBkb2luZy1zbyB3aWxsIG5vdCBsZWFkIHRvIGEgbGl2ZWxvY2suCisvLworLy8gSXQgaXMgc2Fm
ZSB0byBkZXN0cm95IHRoaXMgb2JqZWN0IGFzIHNvb24gYXMgd2FpdCgpIHJldHVybnMuCiBjbGFz
cyBDQ0NvbXBsZXRpb25FdmVudCB7CiBwdWJsaWM6CiAgICAgQ0NDb21wbGV0aW9uRXZlbnQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCBiMDdhMjVmY2E2MmNiY2I1YWRjY2E5MTg5
Y2FiZWFkZDNlNWUwZDk5Li41NWQ1Y2I1ZmE5OTA5NmEwMTNiZjZiNmY2MmExMzVkYmM0ZDExNDRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGw7CiBjbGFzcyBDQ0xheWVy
VHJlZUhvc3RJbXBsQ2xpZW50OworY2xhc3MgQ0NUaHJlYWQ7CiBjbGFzcyBHcmFwaGljc0NvbnRl
eHQzRDsKIGNsYXNzIExheWVyQ2hyb21pdW07CiBjbGFzcyBMYXllclBhaW50ZXJDaHJvbWl1bTsK
QEAgLTQ3LDYgKzQ4LDcgQEAgY2xhc3MgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OwogY2xhc3Mg
Q0NMYXllclRyZWVIb3N0Q2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0
ZUFuZExheW91dChkb3VibGUgZnJhbWVCZWdpblRpbWUpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NP
d25QdHI8Q0NUaHJlYWQ+IGNyZWF0ZUNvbXBvc2l0b3JUaHJlYWQoKSA9IDA7CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVMYXllclRyZWVIb3N0Q29udGV4
dDNEKCkgPSAwOwogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4g
Y3JlYXRlUm9vdExheWVyUGFpbnRlcigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVh
dGVHcmFwaGljc0NvbnRleHQoYm9vbCBzdWNjZXNzKSA9IDA7CkBAIC04NSw2ICs4Nyw4IEBAIHB1
YmxpYzoKICAgICBib29sIGFuaW1hdGluZygpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW5nOyB9
CiAgICAgdm9pZCBzZXRBbmltYXRpbmcoYm9vbCBhbmltYXRpbmcpIHsgbV9hbmltYXRpbmcgPSBh
bmltYXRpbmc7IH0gLy8gQ2FuIGJlIHJlbW92ZWQgd2hlbiBub24tdGhyZWFkZWQgc2NoZWR1bGlu
ZyBtb3ZlcyBpbnNpZGUuCiAKKyAgICBDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCgpIHsg
cmV0dXJuIG1fY2xpZW50OyB9CisKICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpOwog
CiAgICAgdm9pZCBjb21wb3NpdGVBbmRSZWFkYmFjayh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJl
Y3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGxQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsUHJveHkuY3BwCmlu
ZGV4IGI5OWRiOTc3ZTlmYWMwYzg1MzYxMDY1MzVlYzAyYTk0OGUyOTBjNTMuLmE2NjkyODg1NjQ1
OTZkODc4MjY3NjYxZDNmOTQ2MWViZmI2NjJlOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGxQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbFByb3h5LmNwcApAQCAtNDksNyArNDksNyBAQCBDQ0xheWVyVHJlZUhv
c3RJbXBsUHJveHk6OkNDTGF5ZXJUcmVlSG9zdEltcGxQcm94eShDQ0xheWVyVHJlZUhvc3QqIGxh
eWVyVHJlZUhvcwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbnVtUHJveGllcysr
OwogICAgIGlmICghY2NUaHJlYWQpCi0gICAgICAgIGNjVGhyZWFkID0gQ0NUaHJlYWQ6OmNyZWF0
ZSgpLmxlYWtQdHIoKTsKKyAgICAgICAgY2NUaHJlYWQgPSBsYXllclRyZWVIb3N0LT5jbGllbnQo
KS0+Y3JlYXRlQ29tcG9zaXRvclRocmVhZCgpLmxlYWtQdHIoKTsKIH0KIAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlMTczYTEzNDk4MjRhZjkwZmFk
Y2U3ODE5MGZiYjgzY2M0MGViODUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
LSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiQ0NUaHJlYWQuaCIKLQotI2luY2x1
ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKLSNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotdXNpbmcgbmFtZXNwYWNlIFdURjsKLQotQ0NUaHJlYWQ6OkNDVGhyZWFkKCkKLXsKLSAg
ICBNdXRleExvY2tlciBsb2NrKG1fdGhyZWFkQ3JlYXRpb25NdXRleCk7Ci0gICAgbV90aHJlYWRJ
RCA9IGNyZWF0ZVRocmVhZChDQ1RocmVhZDo6Y29tcG9zaXRvclRocmVhZFN0YXJ0LCB0aGlzLCAi
Q2hyb21pdW0gQ29tcG9zaXRvciIpOwotfQotCi1DQ1RocmVhZDo6fkNDVGhyZWFkKCkKLXsKLSAg
ICBtX3F1ZXVlLmtpbGwoKTsKLQotICAgIC8vIFN0b3AgdGhyZWFkLgotICAgIHZvaWQqIGV4aXRD
b2RlOwotICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKG1fdGhyZWFkSUQsICZleGl0Q29kZSk7
Ci0gICAgbV90aHJlYWRJRCA9IDA7Ci19Ci0KLXZvaWQgQ0NUaHJlYWQ6OnBvc3RUYXNrKFBhc3NP
d25QdHI8VGFzaz4gdGFzaykKLXsKLSAgICBtX3F1ZXVlLmFwcGVuZCh0YXNrKTsKLX0KLQotdm9p
ZCogQ0NUaHJlYWQ6OmNvbXBvc2l0b3JUaHJlYWRTdGFydCh2b2lkKiB1c2VyZGF0YSkKLXsKLSAg
ICBDQ1RocmVhZCogY2NUaHJlYWQgPSBzdGF0aWNfY2FzdDxDQ1RocmVhZCo+KHVzZXJkYXRhKTsK
LSAgICByZXR1cm4gY2NUaHJlYWQtPnJ1bkxvb3AoKTsKLX0KLQotdm9pZCogQ0NUaHJlYWQ6OnJ1
bkxvb3AoKQotewotICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZDo6cnVuTG9vcCIsIHRoaXMsIDAp
OwotICAgIHsKLSAgICAgICAgLy8gV2FpdCBmb3IgQ0NUaHJlYWQ6OnN0YXJ0KCkgdG8gY29tcGxl
dGUgdG8gaGF2ZSBtX3RocmVhZElECi0gICAgICAgIC8vIGVzdGFibGlzaGVkIGJlZm9yZSBzdGFy
dGluZyB0aGUgbWFpbiBsb29wLgotICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fdGhyZWFkQ3Jl
YXRpb25NdXRleCk7Ci0gICAgfQotCi0gICAgd2hpbGUgKE93blB0cjxUYXNrPiB0YXNrID0gbV9x
dWV1ZS53YWl0Rm9yTWVzc2FnZSgpKQotICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygpOwotCi0g
ICAgcmV0dXJuIDA7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZC5oCmluZGV4IDE3N2QzZjM4YWJjNDIzY2Q2
OWY4NzA1OWNlN2I2YTdhOTVmMDMxMTYuLmEyZjJjZjRkY2U5MWQ0ZTNhYzE3OWIyODhiZjU4M2Iw
NWYxMWNhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWQuaApAQCAtMjUsMjMgKzI1LDE2IEBACiAjaWZuZGVmIEND
VGhyZWFkX2gKICNkZWZpbmUgQ0NUaHJlYWRfaAogCi0jaW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1
ZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotLy8gVGhlIENDVGhyZWFkIHNpbmdsZXRvbiBvd25zIHRoZSBjb21wb3NpdG9yIHRocmVhZCBh
bmQgcHJvdmlkZXMKLS8vIGJhc2ljIGluZnJhc3RydWN0dXJlIGZvciBtZXNzYWdpbmcgYmV0d2Vl
biB0aGUgdHdvIHRocmVhZHMuCisvLyBDQ1RocmVhZCBwcm92aWRlcyBiYXNpYyBpbmZyYXN0cnVj
dHVyZSBmb3IgbWVzc2FnaW5nIHdpdGggdGhlIGNvbXBvc2l0b3IgaW4gYQorLy8gcGxhdGZvcm0t
bmV1dHJhbCB3YXkuCiBjbGFzcyBDQ1RocmVhZCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NP
d25QdHI8Q0NUaHJlYWQ+IGNyZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IENDVGhyZWFkKCkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgfkNDVGhyZWFkKCk7CisgICAg
dmlydHVhbCB+Q0NUaHJlYWQoKSB7IH0KIAogICAgIGNsYXNzIFRhc2sgewogICAgICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShUYXNrKTsKQEAgLTU0LDIwICs0Nyw5IEBAIHB1YmxpYzoKICAgICAg
ICAgdm9pZCogbV9pbnN0YW5jZTsKICAgICB9OwogCi0gICAgdm9pZCBwb3N0VGFzayhQYXNzT3du
UHRyPFRhc2s+KTsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gY29udGV4dCdzIHRocmVhZCBhc3lu
Y2hyb25vdXNseS4KLQotICAgIFdURjo6VGhyZWFkSWRlbnRpZmllciB0aHJlYWRJRCgpIGNvbnN0
IHsgcmV0dXJuIG1fdGhyZWFkSUQ7IH0KLQotcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IENDVGhy
ZWFkKCk7Ci0KLSAgICBzdGF0aWMgdm9pZCogY29tcG9zaXRvclRocmVhZFN0YXJ0KHZvaWQqKTsK
LSAgICB2b2lkKiBydW5Mb29wKCk7Ci0KLSAgICBXVEY6OlRocmVhZElkZW50aWZpZXIgbV90aHJl
YWRJRDsKLSAgICBNZXNzYWdlUXVldWU8VGFzaz4gbV9xdWV1ZTsKKyAgICB2aXJ0dWFsIHZvaWQg
cG9zdFRhc2soUGFzc093blB0cjxUYXNrPikgPSAwOyAvLyBFeGVjdXRlcyB0aGUgdGFzayBvbiBj
b250ZXh0J3MgdGhyZWFkIGFzeW5jaHJvbm91c2x5LgogCi0gICAgTXV0ZXggbV90aHJlYWRDcmVh
dGlvbk11dGV4OworICAgIHZpcnR1YWwgV1RGOjpUaHJlYWRJZGVudGlmaWVyIHRocmVhZElEKCkg
Y29uc3QgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4ZjM2MDNk
YTdmMjM5N2NjZDljY2U0MzI3OGNkMjMzNjJiODc2MjQ4Li5lN2FlZmJiMGQwMWQ5MGZiNjgwMDE1
ZTZjNzkyZGI4MjAxZjIyZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMxIEBACisyMDExLTA4LTE5ICBOYXQgRHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbY2hyb21pdW1dIEltcGxlbWVudCBDQ1RocmVhZCBpbiB0ZXJtcyBvZiBXZWJUaHJlYWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2NjEwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQu
Z3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJUaHJlYWQuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
VGhyZWFkOjp+V2ViVGhyZWFkKToKKyAgICAgICAgKiBzcmMvQ0NUaHJlYWRJbXBsLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OkdldFRocmVhZElEVGFzazo6R2V0VGhyZWFkSURUYXNrKToK
KyAgICAgICAgKFdlYktpdDo6R2V0VGhyZWFkSURUYXNrOjp+R2V0VGhyZWFkSURUYXNrKToKKyAg
ICAgICAgKFdlYktpdDo6R2V0VGhyZWFkSURUYXNrOjpydW4pOgorICAgICAgICAoV2ViS2l0OjpD
Q1RocmVhZFRhc2tBZGFwdGVyOjpDQ1RocmVhZFRhc2tBZGFwdGVyKToKKyAgICAgICAgKFdlYktp
dDo6Q0NUaHJlYWRUYXNrQWRhcHRlcjo6fkNDVGhyZWFkVGFza0FkYXB0ZXIpOgorICAgICAgICAo
V2ViS2l0OjpDQ1RocmVhZFRhc2tBZGFwdGVyOjpydW4pOgorICAgICAgICAoV2ViS2l0OjpDQ1Ro
cmVhZEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkNDVGhyZWFkSW1wbDo6fkNDVGhy
ZWFkSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OkNDVGhyZWFkSW1wbDo6cG9zdFRhc2spOgorICAg
ICAgICAoV2ViS2l0OjpDQ1RocmVhZEltcGw6OnRocmVhZElEKToKKyAgICAgICAgKFdlYktpdDo6
Q0NUaHJlYWRJbXBsOjpDQ1RocmVhZEltcGwpOgorICAgICAgICAqIHNyYy9DQ1RocmVhZEltcGwu
aDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkLmNwcC4KKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y3JlYXRlQ29tcG9zaXRvclRocmVhZCk6CisgICAgICAg
ICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgICogdGVzdHMvQ0NUaHJlYWRUZXN0LmNwcDoK
KwogMjAxMS0wOC0yMyAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdkLCByb2xsIGNocm9taXVtIHJldmVyc2UgREVQUyA5NzY5ODo5NzgzNApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDk0YWQxZmMxOWE3ZWQwMDgzZWZhZDNiOTNlZWYzYmVi
MTgwMjljOTAuLjJhY2IyNGIyMGYwMDdhMzAyNWRiY2RlMmM1ZDU0ZGJiNzk5YTRkMzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTMyNCw2ICszMjQsOCBAQAogICAgICAgICAgICAg
ICAgICdzcmMvQmxvYlJlZ2lzdHJ5UHJveHkuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9Cb3Vu
ZE9iamVjdC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvQm91bmRPYmplY3QuaCcsCisgICAg
ICAgICAgICAgICAgJ3NyYy9DQ1RocmVhZEltcGwuY3BwJywKKyAgICAgICAgICAgICAgICAnc3Jj
L0NDVGhyZWFkSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL0Nocm9tZUNsaWVudEltcGwu
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0Nocm9tZUNsaWVudEltcGwuaCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9DaHJvbWl1bUN1cnJlbnRUaW1lLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUaHJlYWQuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlRocmVhZC5oCmluZGV4IGNhYWM5NWM2MjZjYzdhZmUxYWY3MDMxZjMy
ZmNiYTU4ZDczYWM3OGYuLmRiMjU1NTZmOWZlY2U2OGU2YmU2ZWQzOGYwZGE4MjI5YzBmN2VlMmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRocmVhZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRocmVhZC5oCkBAIC0yOSw2ICsy
OSw4IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCisjZGVmaW5lIFdFQlRIUkVBRF9IQVNfTE9O
R0xPTkdfQ0hBTkdFCisKIC8vIFByb3ZpZGVzIGFuIGludGVyZmFjZSB0byBhbiBlbWJlZGRlci1k
ZWZpbmVkIHRocmVhZCBpbXBsZW1lbnRhdGlvbi4KIC8vCiAvLyBEZWxldGluZyB0aGUgdGhyZWFk
IGJsb2NrcyB1bnRpbCBhbGwgcGVuZGluZywgbm9uLWRlbGF5ZWQgdGFza3MgaGF2ZSBiZWVuCkBA
IC00MiwxMCArNDQsOSBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHZpcnR1YWwgdm9pZCBwb3N0
VGFzayhUYXNrKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwb3N0RGVsYXllZFRhc2soVGFzayos
IGludDY0IGRlbGF5TXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdERlbGF5ZWRUYXNrKFRh
c2sqLCBsb25nIGxvbmcgZGVsYXlNcykgPSAwOwogCi1wcm90ZWN0ZWQ6Ci0gICAgfldlYlRocmVh
ZCgpIHsgfQorICAgIHZpcnR1YWwgfldlYlRocmVhZCgpIHsgfQogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DQ1RocmVh
ZEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ0NUaHJlYWRJbXBsLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40OGNiYThjMTcxNWJhNzRlMjNlMGJiZDZkMThlZDZjY2EzZmUyOGE0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ0NUaHJlYWRJbXBsLmNw
cApAQCAtMCwwICsxLDEwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkNDVGhyZWFkSW1wbC5oIgorCisjaW5jbHVkZSAiV2ViS2l0LmgiCisjaW5jbHVk
ZSAiV2ViS2l0Q2xpZW50LmgiCisjaW5jbHVkZSAiV2ViVGhyZWFkLmgiCisjaW5jbHVkZSAiY2Mv
Q0NDb21wbGV0aW9uRXZlbnQuaCIKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBUYXNrIHRoYXQsIHdoZW4g
cnVucywgcGxhY2VzIHRoZSBjdXJyZW50IHRocmVhZCBJRCBpbnRvIHRoZSBwcm92aWRlZAorLy8g
cG9pbnRlciBhbmQgc2lnbmFscyBhIGNvbXBsZXRpb24gZXZlbnQuCisvLworLy8gRG9lcyBub3Qg
cHJvdmlkZSBhIFBhc3NPd25QdHI8R2V0VGhyZWFkSURUYXNrPjo6Y3JlYXRlIG1ldGhvZCBiZWNh
dXNlCisvLyB0aGUgcmVzdWx0aW5nIG9iamVjdCBpcyBhbHdheXMgaGFuZGVkIGludG8gYSBXZWJU
aHJlYWQsIHdoaWNoIGRvZXMgbm90IHVuZGVyc3RhbmQKKy8vIFBhc3NPd25QdHJzLgorY2xhc3Mg
R2V0VGhyZWFkSURUYXNrIDogcHVibGljIFdlYlRocmVhZDo6VGFzayB7CitwdWJsaWM6CisgICAg
R2V0VGhyZWFkSURUYXNrKFRocmVhZElkZW50aWZpZXIqIHJlc3VsdCwgQ0NDb21wbGV0aW9uRXZl
bnQqIGNvbXBsZXRpb24pCisgICAgICAgICA6IG1fY29tcGxldGlvbihjb21wbGV0aW9uKQorICAg
ICAgICAgLCBtX3Jlc3VsdChyZXN1bHQpIHsgfQorCisgICAgdmlydHVhbCB+R2V0VGhyZWFkSURU
YXNrKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcnVuKCkKKyAgICB7CisgICAgICAgICptX3Jl
c3VsdCA9IGN1cnJlbnRUaHJlYWQoKTsKKyAgICAgICAgbV9jb21wbGV0aW9uLT5zaWduYWwoKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgV2ViQ29yZTo6Q0NDb21wbGV0aW9uRXZlbnQqIG1fY29t
cGxldGlvbjsKKyAgICBUaHJlYWRJZGVudGlmaWVyKiBtX3Jlc3VsdDsKK307CisKKy8vIEdlbmVy
YWwgYWRhcHRlciBmcm9tIGEgQ0NUaHJlYWQ6OlRhc2sgdG8gYSBXZWJUaHJlYWQ6OlRhc2suCitj
bGFzcyBDQ1RocmVhZFRhc2tBZGFwdGVyIDogcHVibGljIFdlYlRocmVhZDo6VGFzayB7CitwdWJs
aWM6CisgICAgQ0NUaHJlYWRUYXNrQWRhcHRlcihQYXNzT3duUHRyPENDVGhyZWFkOjpUYXNrPiB0
YXNrKSA6IG1fdGFzayh0YXNrKSB7IH0KKworICAgIHZpcnR1YWwgfkNDVGhyZWFkVGFza0FkYXB0
ZXIoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgbV90YXNr
LT5wZXJmb3JtVGFzaygpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBPd25QdHI8Q0NUaHJlYWQ6
OlRhc2s+IG1fdGFzazsKK307CisKK1Bhc3NPd25QdHI8Q0NUaHJlYWQ+IENDVGhyZWFkSW1wbDo6
Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDVGhyZWFkSW1wbCgpKTsKK30K
KworQ0NUaHJlYWRJbXBsOjp+Q0NUaHJlYWRJbXBsKCkKK3sKK30KKwordm9pZCBDQ1RocmVhZElt
cGw6OnBvc3RUYXNrKFBhc3NPd25QdHI8Q0NUaHJlYWQ6OlRhc2s+IHRhc2spCit7CisgICAgbV90
aHJlYWQtPnBvc3RUYXNrKG5ldyBDQ1RocmVhZFRhc2tBZGFwdGVyKHRhc2spKTsKK30KKworVGhy
ZWFkSWRlbnRpZmllciBDQ1RocmVhZEltcGw6OnRocmVhZElEKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV90aHJlYWRJRDsKK30KKworQ0NUaHJlYWRJbXBsOjpDQ1RocmVhZEltcGwoKQorICAgIDog
bV90aHJlYWQoYWRvcHRQdHIod2ViS2l0Q2xpZW50KCktPmNyZWF0ZVRocmVhZCgiQ0NUaHJlYWQi
KSkpCit7CisgICAgLy8gR2V0IHRoZSB0aHJlYWRJZCBmb3IgdGhlIG5ld2x5LWNyZWF0ZWQgdGhy
ZWFkIGJ5IHJ1bm5pbmcgYSB0YXNrCisgICAgLy8gb24gdGhhdCB0aHJlYWQsIGJsb2NraW5nIG9u
IHRoZSByZXN1bHQuCisgICAgbV90aHJlYWRJRCA9IGN1cnJlbnRUaHJlYWQoKTsKKyAgICBDQ0Nv
bXBsZXRpb25FdmVudCBjb21wbGV0aW9uOworICAgIG1fdGhyZWFkLT5wb3N0VGFzayhuZXcgR2V0
VGhyZWFkSURUYXNrKCZtX3RocmVhZElELCAmY29tcGxldGlvbikpOworICAgIGNvbXBsZXRpb24u
d2FpdCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0NDVGhyZWFkSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQ0NUaHJlYWRJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWM5MjlhYjEwOWM1M2UzYjE2NzIzMjgx
N2Q5OThhOGNmZTBiNTIxNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0NDVGhyZWFkSW1wbC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjYy9DQ1RocmVhZC5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+CisKKworI2lmbmRlZiBDQ1RocmVhZEltcGxfaAorI2RlZmluZSBD
Q1RocmVhZEltcGxfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViVGhyZWFkOwor
CisvLyBJbXBsZW1lbnRzIENDVGhyZWFkIGluIHRlcm1zIG9mIFdlYlRocmVhZC4KK2NsYXNzIEND
VGhyZWFkSW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpDQ1RocmVhZCB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8V2ViQ29yZTo6Q0NUaHJlYWQ+IGNyZWF0ZSgpOworICAgIHZpcnR1YWwg
fkNDVGhyZWFkSW1wbCgpOworICAgIHZvaWQgcG9zdFRhc2soUGFzc093blB0cjxXZWJDb3JlOjpD
Q1RocmVhZDo6VGFzaz4pOworICAgIFdURjo6VGhyZWFkSWRlbnRpZmllciB0aHJlYWRJRCgpIGNv
bnN0OworCitwcml2YXRlOgorICAgIENDVGhyZWFkSW1wbCgpOworCisgICAgT3duUHRyPFdlYlRo
cmVhZD4gbV90aHJlYWQ7CisgICAgV1RGOjpUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkSUQ7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggMzdhYWNiODM5Njc5MTM3YmY3MjJiNzM3OGZl
ZTQyNWI2NWU1MTEwNy4uNGU5NjEyZTE1Nzk5N2EzNzQzNTczNDVmY2E5MzRmMGFmZDFmNmFlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIkF1dG9maWxsUG9wdXBNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAi
QVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdENocm9taXVtLmgiCisj
aW5jbHVkZSAiQ0NUaHJlYWRJbXBsLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgog
I2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKQEAgLTI2
MzgsNiArMjYzOSwxMSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAKICNlbmRpZgogCitQYXNzT3duUHRyPENDVGhyZWFk
PiBXZWJWaWV3SW1wbDo6Y3JlYXRlQ29tcG9zaXRvclRocmVhZCgpCit7CisgICAgcmV0dXJuIEND
VGhyZWFkSW1wbDo6Y3JlYXRlKCk7Cit9CisKIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
IFdlYlZpZXdJbXBsOjpjcmVhdGVMYXllclRyZWVIb3N0Q29udGV4dDNEKCkKIHsKICAgICBSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBtX3RlbXBvcmFyeU9uc2NyZWVuR3JhcGhp
Y3NDb250ZXh0M0QucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmgKaW5kZXggYzdjZDEyYjY3MDRkYzk1NjIwNGIxMDQ3NTM2Y2JkYTFiYjE2NjQ5Yy4uZDI2
NjcxMjc1M2ZmZGViYmY0NTUyOWRjOWVkZTNkODg2YjA1MjFmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0yMTYsNiArMjE2LDcgQEAgcHVibGljOgogCiAg
ICAgLy8gQ0NMYXllclRyZWVIb3N0Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGVBbmRM
YXlvdXQoZG91YmxlIGZyYW1lQmVnaW5UaW1lKTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2Vi
Q29yZTo6Q0NUaHJlYWQ+IGNyZWF0ZUNvbXBvc2l0b3JUaHJlYWQoKTsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUxheWVyVHJlZUhvc3RD
b250ZXh0M0QoKTsKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6TGF5ZXJQYWludGVy
Q2hyb21pdW0+IGNyZWF0ZVJvb3RMYXllclBhaW50ZXIoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjcmVhdGVHcmFwaGljc0NvbnRleHQoYm9vbCBzdWNjZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRUZXN0LmNwcAppbmRleCBlY2NjNzEyZDA5NmI5MTk5MzRl
YWJkMTA2MWJkZTMyM2UyZDI4MWI3Li5jNjk1NmIwNjgwMzY2MDMxNWJlZjQ2OGE5ZTE5M2VjZTk5
NWRkY2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGhyZWFk
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZFRlc3Qu
Y3BwCkBAIC0yNiwxMCArMjYsMTIgQEAKIAogI2luY2x1ZGUgImNjL0NDVGhyZWFkLmgiCiAKKyNp
bmNsdWRlICJDQ1RocmVhZEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0NvbXBsZXRpb25FdmVudC5o
IgogI2luY2x1ZGUgImNjL0NDTWFpblRocmVhZFRhc2suaCIKICNpbmNsdWRlICJjYy9DQ1RocmVh
ZFRhc2suaCIKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCiAjaW5jbHVkZSA8d2Via2l0L3N1
cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCkBA
IC01MSw3ICs1Myw3IEBAIHB1YmxpYzoKIAogVEVTVChDQ1RocmVhZFRlc3QsIHBpbmdQb25nVXNp
bmdDb25kaXRpb24pCiB7Ci0gICAgT3duUHRyPENDVGhyZWFkPiB0aHJlYWQgPSBDQ1RocmVhZDo6
Y3JlYXRlKCk7CisgICAgT3duUHRyPENDVGhyZWFkPiB0aHJlYWQgPSBXZWJLaXQ6OkNDVGhyZWFk
SW1wbDo6Y3JlYXRlKCk7CiAgICAgUGluZ1BvbmdVc2luZ0NvbmRpdGlvbiB0YXJnZXQ7CiAgICAg
Q0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsKICAgICB0aHJlYWQtPnBvc3RUYXNrKGNyZWF0
ZUNDVGhyZWFkVGFzaygmdGFyZ2V0LCAmUGluZ1BvbmdVc2luZ0NvbmRpdGlvbjo6cGluZywKQEAg
LTgwLDcgKzgyLDcgQEAgcHVibGljOgogCiBURVNUKENDVGhyZWFkVGVzdCwgRElTQUJMRURfc3Rh
cnRQb3N0QW5kV2FpdE9uQ29uZGl0aW9uKQogewotICAgIE93blB0cjxDQ1RocmVhZD4gdGhyZWFk
ID0gQ0NUaHJlYWQ6OmNyZWF0ZSgpOworICAgIE93blB0cjxDQ1RocmVhZD4gdGhyZWFkID0gV2Vi
S2l0OjpDQ1RocmVhZEltcGw6OmNyZWF0ZSgpOwogCiAgICAgUGluZ1BvbmdUZXN0VXNpbmdUYXNr
cyB0YXJnZXQ7CiAgICAgdGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2soJnRhcmdl
dCwgJlBpbmdQb25nVGVzdFVzaW5nVGFza3M6OnBpbmcpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104940</attachid>
            <date>2011-08-23 17:20:00 -0700</date>
            <delta_ts>2011-08-23 18:22:36 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-66610-20110823171959.patch</filename>
            <type>text/plain</type>
            <size>21018</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM2NjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkMjk5ZjljOGRjYTY5MGEy
MDNlMzlmMDNjZTFmNmU4Y2FjODM0ZTJkLi4xZTM3MTkyNjMxYzY0OTNlNzM5YzgzNjhjNzAyOTY4
ODE2ODUyOWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDgtMTkgIE5hdCBE
dWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gSW1wbGVtZW50
IENDVGhyZWFkIGluIHRlcm1zIG9mIFdlYlRocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY2MTAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBGaXNoZXIuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDb21wbGV0aW9uRXZlbnQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6Y2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsUHJveHkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbFByb3h5OjpDQ0xheWVyVHJlZUhvc3RJbXBsUHJv
eHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkLmg6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZDo6fkNDVGhyZWFkKToKKwogMjAxMS0wOC0yMyAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBidWls
ZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCA1YWJmZGJiNGJhOWFmYTA1MzRkOTFjZjdkNjk1YmVmMDNh
OGJkN2I1Li41YmJjOGFiNGIzOWNlNTRmZGNiZTAzZjkxYjI5MTA4YThjNDQwZTQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCkBAIC0zNTQyLDcgKzM1NDIsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oJywK
LSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZC5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkVGFz
ay5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVk
TGF5ZXJJbXBsLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0NvbXBsZXRpb25FdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDb21wbGV0aW9uRXZlbnQuaAppbmRleCA5OWUz
NmU3YWZjOTYzODFjNjNlMDIzNTBjMzQ3MzIzZGEwZTkwYWI3Li43OGJjNjgzYTFkMTIzZmMzZTg4
MDE4NjRhMDc5YjY2ZGRiMmQ5ZWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NvbXBsZXRpb25FdmVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ29tcGxldGlvbkV2ZW50LmgK
QEAgLTEsNCArMSwzIEBACi0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0zMCw2ICsyOSwxMCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKKy8vIFVzZWQgZm9yIG1ha2luZyBibG9ja2luZyBjYWxscyBmcm9tIG9uZSB0
aHJlYWQgdG8gYW5vdGhlci4gVXNlIG9ubHkgd2hlbgorLy8gYWJzb2x1dGVseSBjZXJ0YWluIHRo
YXQgZG9pbmctc28gd2lsbCBub3QgbGVhZCB0byBhIGxpdmVsb2NrLgorLy8KKy8vIEl0IGlzIHNh
ZmUgdG8gZGVzdHJveSB0aGlzIG9iamVjdCBhcyBzb29uIGFzIHdhaXQoKSByZXR1cm5zLgogY2xh
c3MgQ0NDb21wbGV0aW9uRXZlbnQgewogcHVibGljOgogICAgIENDQ29tcGxldGlvbkV2ZW50KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggOGM0MTk3NmMyODU5ZDdjYTc4ODNmNjli
YWI1ZDdkYzM5NGRlMDMwYS4uZDNjOTFlYmEyZWNhNDI1YjczZTI0ODNhNTVhNzEyNTBlNDgxNTlh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsOwogY2xhc3MgQ0NMYXll
clRyZWVIb3N0SW1wbENsaWVudDsKK2NsYXNzIENDVGhyZWFkOwogY2xhc3MgR3JhcGhpY3NDb250
ZXh0M0Q7CiBjbGFzcyBMYXllckNocm9taXVtOwogY2xhc3MgTGF5ZXJQYWludGVyQ2hyb21pdW07
CkBAIC00OCw2ICs0OSw3IEBAIGNsYXNzIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDsKIGNsYXNz
IENDTGF5ZXJUcmVlSG9zdENsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFuaW1h
dGVBbmRMYXlvdXQoZG91YmxlIGZyYW1lQmVnaW5UaW1lKSA9IDA7CisgICAgdmlydHVhbCBQYXNz
T3duUHRyPENDVGhyZWFkPiBjcmVhdGVDb21wb3NpdG9yVGhyZWFkKCkgPSAwOwogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlTGF5ZXJUcmVlSG9zdENvbnRl
eHQzRCgpID0gMDsKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+
IGNyZWF0ZVJvb3RMYXllclBhaW50ZXIoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY3Jl
YXRlR3JhcGhpY3NDb250ZXh0KGJvb2wgc3VjY2VzcykgPSAwOwpAQCAtODYsNiArODgsOCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBhbmltYXRpbmcoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGluZzsg
fQogICAgIHZvaWQgc2V0QW5pbWF0aW5nKGJvb2wgYW5pbWF0aW5nKSB7IG1fYW5pbWF0aW5nID0g
YW5pbWF0aW5nOyB9IC8vIENhbiBiZSByZW1vdmVkIHdoZW4gbm9uLXRocmVhZGVkIHNjaGVkdWxp
bmcgbW92ZXMgaW5zaWRlLgogCisgICAgQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQoKSB7
IHJldHVybiBtX2NsaWVudDsgfQorCiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQoKTsK
IAogICAgIHZvaWQgY29tcG9zaXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRS
ZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbFByb3h5LmNwcApp
bmRleCBiOTlkYjk3N2U5ZmFjMGM4NTM2MTA2NTM1ZWMwMmE5NDhlMjkwYzUzLi5hNjY5Mjg4NTY0
NTk2ZDg3ODI2NzY2MWQzZjk0NjFlYmZiNjYyZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGxQcm94eS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgQ0NMYXllclRyZWVI
b3N0SW1wbFByb3h5OjpDQ0xheWVyVHJlZUhvc3RJbXBsUHJveHkoQ0NMYXllclRyZWVIb3N0KiBs
YXllclRyZWVIb3MKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIG51bVByb3hpZXMr
KzsKICAgICBpZiAoIWNjVGhyZWFkKQotICAgICAgICBjY1RocmVhZCA9IENDVGhyZWFkOjpjcmVh
dGUoKS5sZWFrUHRyKCk7CisgICAgICAgIGNjVGhyZWFkID0gbGF5ZXJUcmVlSG9zdC0+Y2xpZW50
KCktPmNyZWF0ZUNvbXBvc2l0b3JUaHJlYWQoKS5sZWFrUHRyKCk7CiB9CiAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTE3M2ExMzQ5ODI0YWY5MGZh
ZGNlNzgxOTBmYmI4M2NjNDBlYjg1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
Ci0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgIkNDVGhyZWFkLmgiCi0KLSNpbmNs
dWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCi0j
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
LSNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci0KLUNDVGhyZWFkOjpDQ1RocmVhZCgpCi17Ci0g
ICAgTXV0ZXhMb2NrZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgpOwotICAgIG1fdGhyZWFk
SUQgPSBjcmVhdGVUaHJlYWQoQ0NUaHJlYWQ6OmNvbXBvc2l0b3JUaHJlYWRTdGFydCwgdGhpcywg
IkNocm9taXVtIENvbXBvc2l0b3IiKTsKLX0KLQotQ0NUaHJlYWQ6On5DQ1RocmVhZCgpCi17Ci0g
ICAgbV9xdWV1ZS5raWxsKCk7Ci0KLSAgICAvLyBTdG9wIHRocmVhZC4KLSAgICB2b2lkKiBleGl0
Q29kZTsKLSAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihtX3RocmVhZElELCAmZXhpdENvZGUp
OwotICAgIG1fdGhyZWFkSUQgPSAwOwotfQotCi12b2lkIENDVGhyZWFkOjpwb3N0VGFzayhQYXNz
T3duUHRyPFRhc2s+IHRhc2spCi17Ci0gICAgbV9xdWV1ZS5hcHBlbmQodGFzayk7Ci19Ci0KLXZv
aWQqIENDVGhyZWFkOjpjb21wb3NpdG9yVGhyZWFkU3RhcnQodm9pZCogdXNlcmRhdGEpCi17Ci0g
ICAgQ0NUaHJlYWQqIGNjVGhyZWFkID0gc3RhdGljX2Nhc3Q8Q0NUaHJlYWQqPih1c2VyZGF0YSk7
Ci0gICAgcmV0dXJuIGNjVGhyZWFkLT5ydW5Mb29wKCk7Ci19Ci0KLXZvaWQqIENDVGhyZWFkOjpy
dW5Mb29wKCkKLXsKLSAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWQ6OnJ1bkxvb3AiLCB0aGlzLCAw
KTsKLSAgICB7Ci0gICAgICAgIC8vIFdhaXQgZm9yIENDVGhyZWFkOjpzdGFydCgpIHRvIGNvbXBs
ZXRlIHRvIGhhdmUgbV90aHJlYWRJRAotICAgICAgICAvLyBlc3RhYmxpc2hlZCBiZWZvcmUgc3Rh
cnRpbmcgdGhlIG1haW4gbG9vcC4KLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX3RocmVhZENy
ZWF0aW9uTXV0ZXgpOwotICAgIH0KLQotICAgIHdoaWxlIChPd25QdHI8VGFzaz4gdGFzayA9IG1f
cXVldWUud2FpdEZvck1lc3NhZ2UoKSkKLSAgICAgICAgdGFzay0+cGVyZm9ybVRhc2soKTsKLQot
ICAgIHJldHVybiAwOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWQuaAppbmRleCAxNzdkM2YzOGFiYzQyM2Nk
NjlmODcwNTljZTdiNmE3YTk1ZjAzMTE2Li5hMmYyY2Y0ZGNlOTFkNGUzYWMxNzliMjg4YmY1ODNi
MDVmMTFjYTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkLmgKQEAgLTI1LDIzICsyNSwxNiBAQAogI2lmbmRlZiBD
Q1RocmVhZF9oCiAjZGVmaW5lIENDVGhyZWFkX2gKIAotI2luY2x1ZGUgPHd0Zi9NZXNzYWdlUXVl
dWUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLS8vIFRoZSBDQ1RocmVhZCBzaW5nbGV0b24gb3ducyB0aGUgY29tcG9zaXRvciB0aHJlYWQg
YW5kIHByb3ZpZGVzCi0vLyBiYXNpYyBpbmZyYXN0cnVjdHVyZSBmb3IgbWVzc2FnaW5nIGJldHdl
ZW4gdGhlIHR3byB0aHJlYWRzLgorLy8gQ0NUaHJlYWQgcHJvdmlkZXMgYmFzaWMgaW5mcmFzdHJ1
Y3R1cmUgZm9yIG1lc3NhZ2luZyB3aXRoIHRoZSBjb21wb3NpdG9yIGluIGEKKy8vIHBsYXRmb3Jt
LW5ldXRyYWwgd2F5LgogY2xhc3MgQ0NUaHJlYWQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
T3duUHRyPENDVGhyZWFkPiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBDQ1RocmVhZCgpKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5DQ1RocmVhZCgpOworICAg
IHZpcnR1YWwgfkNDVGhyZWFkKCkgeyB9CiAKICAgICBjbGFzcyBUYXNrIHsKICAgICAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoVGFzayk7CkBAIC01NCwyMCArNDcsOSBAQCBwdWJsaWM6CiAgICAg
ICAgIHZvaWQqIG1faW5zdGFuY2U7CiAgICAgfTsKIAotICAgIHZvaWQgcG9zdFRhc2soUGFzc093
blB0cjxUYXNrPik7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5
bmNocm9ub3VzbHkuCi0KLSAgICBXVEY6OlRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQoKSBjb25z
dCB7IHJldHVybiBtX3RocmVhZElEOyB9Ci0KLXByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBDQ1Ro
cmVhZCgpOwotCi0gICAgc3RhdGljIHZvaWQqIGNvbXBvc2l0b3JUaHJlYWRTdGFydCh2b2lkKik7
Ci0gICAgdm9pZCogcnVuTG9vcCgpOwotCi0gICAgV1RGOjpUaHJlYWRJZGVudGlmaWVyIG1fdGhy
ZWFkSUQ7Ci0gICAgTWVzc2FnZVF1ZXVlPFRhc2s+IG1fcXVldWU7CisgICAgdmlydHVhbCB2b2lk
IHBvc3RUYXNrKFBhc3NPd25QdHI8VGFzaz4pID0gMDsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24g
Y29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KIAotICAgIE11dGV4IG1fdGhyZWFkQ3Jl
YXRpb25NdXRleDsKKyAgICB2aXJ0dWFsIFdURjo6VGhyZWFkSWRlbnRpZmllciB0aHJlYWRJRCgp
IGNvbnN0ID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYjM2OWI2
MWU5YzBhZDU0MjMxNGZmMjMxMTY2YTJhOTcwZTY1M2E0Mi4uZWEwZTQwZjE2ZDhlYTY4YTQ5OTE3
NTY1OWRlZDI0ZmZjYzA1NDIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzMSBAQAorMjAxMS0wOC0xOSAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW2Nocm9taXVtXSBJbXBsZW1lbnQgQ0NUaHJlYWQgaW4gdGVybXMgb2YgV2ViVGhyZWFk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjYxMAor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KKworICAgICAgICAqIFdlYktpdC5n
eXA6CisgICAgICAgICogcHVibGljL1dlYlRocmVhZC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJU
aHJlYWQ6On5XZWJUaHJlYWQpOgorICAgICAgICAqIHNyYy9DQ1RocmVhZEltcGwuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6R2V0VGhyZWFkSURUYXNrOjpHZXRUaHJlYWRJRFRhc2spOgor
ICAgICAgICAoV2ViS2l0OjpHZXRUaHJlYWRJRFRhc2s6On5HZXRUaHJlYWRJRFRhc2spOgorICAg
ICAgICAoV2ViS2l0OjpHZXRUaHJlYWRJRFRhc2s6OnJ1bik6CisgICAgICAgIChXZWJLaXQ6OkND
VGhyZWFkVGFza0FkYXB0ZXI6OkNDVGhyZWFkVGFza0FkYXB0ZXIpOgorICAgICAgICAoV2ViS2l0
OjpDQ1RocmVhZFRhc2tBZGFwdGVyOjp+Q0NUaHJlYWRUYXNrQWRhcHRlcik6CisgICAgICAgIChX
ZWJLaXQ6OkNDVGhyZWFkVGFza0FkYXB0ZXI6OnJ1bik6CisgICAgICAgIChXZWJLaXQ6OkNDVGhy
ZWFkSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6Q0NUaHJlYWRJbXBsOjp+Q0NUaHJl
YWRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6Q0NUaHJlYWRJbXBsOjpwb3N0VGFzayk6CisgICAg
ICAgIChXZWJLaXQ6OkNDVGhyZWFkSW1wbDo6dGhyZWFkSUQpOgorICAgICAgICAoV2ViS2l0OjpD
Q1RocmVhZEltcGw6OkNDVGhyZWFkSW1wbCk6CisgICAgICAgICogc3JjL0NDVGhyZWFkSW1wbC5o
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWQuY3BwLgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjcmVhdGVDb21wb3NpdG9yVGhyZWFkKToKKyAgICAgICAg
KiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKiB0ZXN0cy9DQ1RocmVhZFRlc3QuY3BwOgor
CiAyMDExLTA4LTIzICBEbWl0cnkgTG9tb3YgIDxEbWl0cnkgTG9tb3YgKGRzbG9tb3ZAZ29vZ2xl
LmNvbSk+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY2NzUxIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGU3YWEzY2ExNmQ1Nzc1ODE2
MzBmMzMxYjA2MTFlOTdjMGYxYTJjZTkuLmJkNzJhMDU0ZjZlODA4MjAxNTBmNzUzMjE0NDg0ZGM1
ODVkZDhlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTMyNiw2ICszMjYsOCBA
QAogICAgICAgICAgICAgICAgICdzcmMvQmxvYlJlZ2lzdHJ5UHJveHkuaCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9Cb3VuZE9iamVjdC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvQm91bmRP
YmplY3QuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9DQ1RocmVhZEltcGwuY3BwJywKKyAgICAg
ICAgICAgICAgICAnc3JjL0NDVGhyZWFkSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL0No
cm9tZUNsaWVudEltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0Nocm9tZUNsaWVudElt
cGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9DaHJvbWl1bUN1cnJlbnRUaW1lLmNwcCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUaHJlYWQuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRocmVhZC5oCmluZGV4IGNhYWM5NWM2MjZj
YzdhZmUxYWY3MDMxZjMyZmNiYTU4ZDczYWM3OGYuLmRiMjU1NTZmOWZlY2U2OGU2YmU2ZWQzOGYw
ZGE4MjI5YzBmN2VlMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRocmVh
ZC5oCkBAIC0yOSw2ICsyOSw4IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCisjZGVmaW5lIFdF
QlRIUkVBRF9IQVNfTE9OR0xPTkdfQ0hBTkdFCisKIC8vIFByb3ZpZGVzIGFuIGludGVyZmFjZSB0
byBhbiBlbWJlZGRlci1kZWZpbmVkIHRocmVhZCBpbXBsZW1lbnRhdGlvbi4KIC8vCiAvLyBEZWxl
dGluZyB0aGUgdGhyZWFkIGJsb2NrcyB1bnRpbCBhbGwgcGVuZGluZywgbm9uLWRlbGF5ZWQgdGFz
a3MgaGF2ZSBiZWVuCkBAIC00MiwxMCArNDQsOSBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHZp
cnR1YWwgdm9pZCBwb3N0VGFzayhUYXNrKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwb3N0RGVs
YXllZFRhc2soVGFzayosIGludDY0IGRlbGF5TXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9z
dERlbGF5ZWRUYXNrKFRhc2sqLCBsb25nIGxvbmcgZGVsYXlNcykgPSAwOwogCi1wcm90ZWN0ZWQ6
Ci0gICAgfldlYlRocmVhZCgpIHsgfQorICAgIHZpcnR1YWwgfldlYlRocmVhZCgpIHsgfQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9DQ1RocmVhZEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ0NU
aHJlYWRJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YWQ3OWE3ZDQxZWJiYjhkMjVmYWJhZGIwODhkYThh
OGYyOTNmM2RmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q0NUaHJlYWRJbXBsLmNwcApAQCAtMCwwICsxLDEwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNDVGhyZWFkSW1wbC5oIgorCisjaW5jbHVkZSAiV2Vi
S2l0LmgiCisjaW5jbHVkZSAiV2ViS2l0Q2xpZW50LmgiCisjaW5jbHVkZSAiV2ViVGhyZWFkLmgi
CisjaW5jbHVkZSAiY2MvQ0NDb21wbGV0aW9uRXZlbnQuaCIKKyNpbmNsdWRlIDxzdGRpbnQuaD4K
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBU
YXNrIHRoYXQsIHdoZW4gcnVucywgcGxhY2VzIHRoZSBjdXJyZW50IHRocmVhZCBJRCBpbnRvIHRo
ZSBwcm92aWRlZAorLy8gcG9pbnRlciBhbmQgc2lnbmFscyBhIGNvbXBsZXRpb24gZXZlbnQuCisv
LworLy8gRG9lcyBub3QgcHJvdmlkZSBhIFBhc3NPd25QdHI8R2V0VGhyZWFkSURUYXNrPjo6Y3Jl
YXRlIG1ldGhvZCBiZWNhdXNlCisvLyB0aGUgcmVzdWx0aW5nIG9iamVjdCBpcyBhbHdheXMgaGFu
ZGVkIGludG8gYSBXZWJUaHJlYWQsIHdoaWNoIGRvZXMgbm90IHVuZGVyc3RhbmQKKy8vIFBhc3NP
d25QdHJzLgorY2xhc3MgR2V0VGhyZWFkSURUYXNrIDogcHVibGljIFdlYlRocmVhZDo6VGFzayB7
CitwdWJsaWM6CisgICAgR2V0VGhyZWFkSURUYXNrKFRocmVhZElkZW50aWZpZXIqIHJlc3VsdCwg
Q0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCisgICAgICAgICA6IG1fY29tcGxldGlvbihj
b21wbGV0aW9uKQorICAgICAgICAgLCBtX3Jlc3VsdChyZXN1bHQpIHsgfQorCisgICAgdmlydHVh
bCB+R2V0VGhyZWFkSURUYXNrKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcnVuKCkKKyAgICB7
CisgICAgICAgICptX3Jlc3VsdCA9IGN1cnJlbnRUaHJlYWQoKTsKKyAgICAgICAgbV9jb21wbGV0
aW9uLT5zaWduYWwoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ0NDb21wbGV0aW9uRXZlbnQq
IG1fY29tcGxldGlvbjsKKyAgICBUaHJlYWRJZGVudGlmaWVyKiBtX3Jlc3VsdDsKK307CisKKy8v
IEdlbmVyYWwgYWRhcHRlciBmcm9tIGEgQ0NUaHJlYWQ6OlRhc2sgdG8gYSBXZWJUaHJlYWQ6OlRh
c2suCitjbGFzcyBDQ1RocmVhZFRhc2tBZGFwdGVyIDogcHVibGljIFdlYlRocmVhZDo6VGFzayB7
CitwdWJsaWM6CisgICAgQ0NUaHJlYWRUYXNrQWRhcHRlcihQYXNzT3duUHRyPENDVGhyZWFkOjpU
YXNrPiB0YXNrKSA6IG1fdGFzayh0YXNrKSB7IH0KKworICAgIHZpcnR1YWwgfkNDVGhyZWFkVGFz
a0FkYXB0ZXIoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBydW4oKQorICAgIHsKKyAgICAgICAg
bV90YXNrLT5wZXJmb3JtVGFzaygpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBPd25QdHI8Q0NU
aHJlYWQ6OlRhc2s+IG1fdGFzazsKK307CisKK1Bhc3NPd25QdHI8Q0NUaHJlYWQ+IENDVGhyZWFk
SW1wbDo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDVGhyZWFkSW1wbCgp
KTsKK30KKworQ0NUaHJlYWRJbXBsOjp+Q0NUaHJlYWRJbXBsKCkKK3sKK30KKwordm9pZCBDQ1Ro
cmVhZEltcGw6OnBvc3RUYXNrKFBhc3NPd25QdHI8Q0NUaHJlYWQ6OlRhc2s+IHRhc2spCit7Cisg
ICAgbV90aHJlYWQtPnBvc3RUYXNrKG5ldyBDQ1RocmVhZFRhc2tBZGFwdGVyKHRhc2spKTsKK30K
KworVGhyZWFkSWRlbnRpZmllciBDQ1RocmVhZEltcGw6OnRocmVhZElEKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV90aHJlYWRJRDsKK30KKworQ0NUaHJlYWRJbXBsOjpDQ1RocmVhZEltcGwoKQor
ICAgIDogbV90aHJlYWQoYWRvcHRQdHIod2ViS2l0Q2xpZW50KCktPmNyZWF0ZVRocmVhZCgiQ0NU
aHJlYWQiKSkpCit7CisgICAgLy8gR2V0IHRoZSB0aHJlYWRJZCBmb3IgdGhlIG5ld2x5LWNyZWF0
ZWQgdGhyZWFkIGJ5IHJ1bm5pbmcgYSB0YXNrCisgICAgLy8gb24gdGhhdCB0aHJlYWQsIGJsb2Nr
aW5nIG9uIHRoZSByZXN1bHQuCisgICAgbV90aHJlYWRJRCA9IGN1cnJlbnRUaHJlYWQoKTsKKyAg
ICBDQ0NvbXBsZXRpb25FdmVudCBjb21wbGV0aW9uOworICAgIG1fdGhyZWFkLT5wb3N0VGFzayhu
ZXcgR2V0VGhyZWFkSURUYXNrKCZtX3RocmVhZElELCAmY29tcGxldGlvbikpOworICAgIGNvbXBs
ZXRpb24ud2FpdCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NDVGhyZWFkSW1wbC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvQ0NUaHJlYWRJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWM5MjlhYjEwOWM1M2UzYjE2
NzIzMjgxN2Q5OThhOGNmZTBiNTIxNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0NDVGhyZWFkSW1wbC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjYy9DQ1RocmVhZC5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKKworI2lmbmRlZiBDQ1RocmVhZEltcGxfaAorI2Rl
ZmluZSBDQ1RocmVhZEltcGxfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViVGhy
ZWFkOworCisvLyBJbXBsZW1lbnRzIENDVGhyZWFkIGluIHRlcm1zIG9mIFdlYlRocmVhZC4KK2Ns
YXNzIENDVGhyZWFkSW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpDQ1RocmVhZCB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQ29yZTo6Q0NUaHJlYWQ+IGNyZWF0ZSgpOworICAgIHZp
cnR1YWwgfkNDVGhyZWFkSW1wbCgpOworICAgIHZvaWQgcG9zdFRhc2soUGFzc093blB0cjxXZWJD
b3JlOjpDQ1RocmVhZDo6VGFzaz4pOworICAgIFdURjo6VGhyZWFkSWRlbnRpZmllciB0aHJlYWRJ
RCgpIGNvbnN0OworCitwcml2YXRlOgorICAgIENDVGhyZWFkSW1wbCgpOworCisgICAgT3duUHRy
PFdlYlRocmVhZD4gbV90aHJlYWQ7CisgICAgV1RGOjpUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFk
SUQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNmNjOTEwMDNiOWYzYmNmZTdhYWQ0
YTkxMjE5NjI3NGM5NjhhN2FhNC4uYmMxNDJkODc2NDUzMDdhNjg2ZWI4Y2VhMWMzNTMxZDk5MmY1
ZjBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkF1dG9maWxsUG9wdXBNZW51Q2xpZW50LmgiCiAjaW5j
bHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdENocm9taXVt
LmgiCisjaW5jbHVkZSAiQ0NUaHJlYWRJbXBsLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rv
ci5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIK
QEAgLTI2MzksNiArMjY0MCwxMSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAKICNlbmRpZgogCitQYXNzT3duUHRyPEND
VGhyZWFkPiBXZWJWaWV3SW1wbDo6Y3JlYXRlQ29tcG9zaXRvclRocmVhZCgpCit7CisgICAgcmV0
dXJuIENDVGhyZWFkSW1wbDo6Y3JlYXRlKCk7Cit9CisKIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IFdlYlZpZXdJbXBsOjpjcmVhdGVMYXllclRyZWVIb3N0Q29udGV4dDNEKCkKIHsKICAg
ICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBtX3RlbXBvcmFyeU9uc2NyZWVu
R3JhcGhpY3NDb250ZXh0M0QucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmgKaW5kZXggYzdjZDEyYjY3MDRkYzk1NjIwNGIxMDQ3NTM2Y2JkYTFiYjE2NjQ5
Yy4uZDI2NjcxMjc1M2ZmZGViYmY0NTUyOWRjOWVkZTNkODg2YjA1MjFmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0yMTYsNiArMjE2LDcgQEAgcHVibGlj
OgogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGFuaW1h
dGVBbmRMYXlvdXQoZG91YmxlIGZyYW1lQmVnaW5UaW1lKTsKKyAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8V2ViQ29yZTo6Q0NUaHJlYWQ+IGNyZWF0ZUNvbXBvc2l0b3JUaHJlYWQoKTsKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUxheWVyVHJl
ZUhvc3RDb250ZXh0M0QoKTsKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6TGF5ZXJQ
YWludGVyQ2hyb21pdW0+IGNyZWF0ZVJvb3RMYXllclBhaW50ZXIoKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjcmVhdGVHcmFwaGljc0NvbnRleHQoYm9vbCBzdWNjZXNzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRUZXN0LmNwcAppbmRleCBlY2NjNzEyZDA5NmI5
MTk5MzRlYWJkMTA2MWJkZTMyM2UyZDI4MWI3Li5jNjk1NmIwNjgwMzY2MDMxNWJlZjQ2OGE5ZTE5
M2VjZTk5NWRkY2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
VGhyZWFkVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVh
ZFRlc3QuY3BwCkBAIC0yNiwxMCArMjYsMTIgQEAKIAogI2luY2x1ZGUgImNjL0NDVGhyZWFkLmgi
CiAKKyNpbmNsdWRlICJDQ1RocmVhZEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0NvbXBsZXRpb25F
dmVudC5oIgogI2luY2x1ZGUgImNjL0NDTWFpblRocmVhZFRhc2suaCIKICNpbmNsdWRlICJjYy9D
Q1RocmVhZFRhc2suaCIKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCiAjaW5jbHVkZSA8d2Vi
a2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogCkBAIC01MSw3ICs1Myw3IEBAIHB1YmxpYzoKIAogVEVTVChDQ1RocmVhZFRlc3QsIHBpbmdQ
b25nVXNpbmdDb25kaXRpb24pCiB7Ci0gICAgT3duUHRyPENDVGhyZWFkPiB0aHJlYWQgPSBDQ1Ro
cmVhZDo6Y3JlYXRlKCk7CisgICAgT3duUHRyPENDVGhyZWFkPiB0aHJlYWQgPSBXZWJLaXQ6OkND
VGhyZWFkSW1wbDo6Y3JlYXRlKCk7CiAgICAgUGluZ1BvbmdVc2luZ0NvbmRpdGlvbiB0YXJnZXQ7
CiAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsKICAgICB0aHJlYWQtPnBvc3RUYXNr
KGNyZWF0ZUNDVGhyZWFkVGFzaygmdGFyZ2V0LCAmUGluZ1BvbmdVc2luZ0NvbmRpdGlvbjo6cGlu
ZywKQEAgLTgwLDcgKzgyLDcgQEAgcHVibGljOgogCiBURVNUKENDVGhyZWFkVGVzdCwgRElTQUJM
RURfc3RhcnRQb3N0QW5kV2FpdE9uQ29uZGl0aW9uKQogewotICAgIE93blB0cjxDQ1RocmVhZD4g
dGhyZWFkID0gQ0NUaHJlYWQ6OmNyZWF0ZSgpOworICAgIE93blB0cjxDQ1RocmVhZD4gdGhyZWFk
ID0gV2ViS2l0OjpDQ1RocmVhZEltcGw6OmNyZWF0ZSgpOwogCiAgICAgUGluZ1BvbmdUZXN0VXNp
bmdUYXNrcyB0YXJnZXQ7CiAgICAgdGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2so
JnRhcmdldCwgJlBpbmdQb25nVGVzdFVzaW5nVGFza3M6OnBpbmcpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>