<?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>72400</bug_id>
          
          <creation_ts>2011-11-15 11:01:24 -0800</creation_ts>
          <short_desc>Scrollbar uiStateTransitionProgress requires tracking the mouse all the time</short_desc>
          <delta_ts>2011-11-18 11:21:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Beth Dakin">bdakin</assigned_to>
          <cc>bdakin</cc>
    
    <cc>gustavo</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>503061</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-11-15 11:01:24 -0800</bug_when>
    <thetext>With https://bugs.webkit.org/show_bug.cgi?id=71490 and http://trac.webkit.org/changeset/99493 I added support for uiStateTransitionProgress on scrollbars. To properly animate uiStateTransitionProgress, we keep track of whenever the mouse enters or exits a scrollbar. However, to fully support the feature, we have to keep track of that information even when the window is not key. Currently, we only track mouseMoved events when the window is key, so this needs to change to fully support uiStateTransitionProgress.

&lt;rdar://problem/10409328&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503097</commentid>
    <comment_count>1</comment_count>
      <attachid>115209</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-11-15 11:35:39 -0800</bug_when>
    <thetext>Created attachment 115209
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503115</commentid>
    <comment_count>2</comment_count>
      <attachid>115209</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-11-15 11:52:16 -0800</bug_when>
    <thetext>Comment on attachment 115209
Patch

Attachment 115209 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10372632</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503221</commentid>
    <comment_count>3</comment_count>
      <attachid>115235</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-11-15 13:45:04 -0800</bug_when>
    <thetext>Created attachment 115235
Patch that probably won&apos;t break builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503436</commentid>
    <comment_count>4</comment_count>
      <attachid>115279</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-11-15 16:42:32 -0800</bug_when>
    <thetext>Created attachment 115279
Smaller patch that does less

I decided to break this up into two bugs so that the patches will be less intimidating. This patch makes is so we track the mouse all of the time when (at the time the WKView is constructed) the recommended scrollbar style is the legacy style. The rest of the work in my initial patch was to update this dynamically whenever the scrollbar style changes, but I will do that in a second patch instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503441</commentid>
    <comment_count>5</comment_count>
      <attachid>115280</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-11-15 16:46:02 -0800</bug_when>
    <thetext>Created attachment 115280
Now with WebCore

Oops, forgot to include WebCore changes in that one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503612</commentid>
    <comment_count>6</comment_count>
      <attachid>115280</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-15 22:54:16 -0800</bug_when>
    <thetext>Comment on attachment 115280
Now with WebCore

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

&gt; Source/WebCore/platform/Scrollbar.h:97
&gt; +    bool mouseEntered();

Why does this have a return value? The only caller doesn’t use it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504096</commentid>
    <comment_count>7</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-11-16 11:36:43 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 115280 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=115280&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/Scrollbar.h:97
&gt; &gt; +    bool mouseEntered();
&gt; 
&gt; Why does this have a return value? The only caller doesn’t use it.

Thanks for the review! I gave it a return value so that it would be like mouseExited() which has a return value. But ultimately, I think that you are right; it&apos;s silly to give something a totally unused return value. I&apos;ll remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504111</commentid>
    <comment_count>8</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-11-16 11:53:33 -0800</bug_when>
    <thetext>Committed change with revision 100483.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505933</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-11-18 11:21:49 -0800</bug_when>
    <thetext>This is in the blame list for this API test failure:
http://build.webkit.org/builders/SnowLeopard%20Intel%20Release%20%28Tests%29/builds/34756/steps/run-api-tests/logs/stdio</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115209</attachid>
            <date>2011-11-15 11:35:39 -0800</date>
            <delta_ts>2011-11-15 13:45:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>29432</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDI5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY5IEBACisyMDExLTExLTE1ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzI0MDAKKyAgICAgICAgU2Nyb2xsYmFyIHVpU3RhdGVUcmFuc2l0
aW9uUHJvZ3Jlc3MgcmVxdWlyZXMgdHJhY2tpbmcgdGhlIG1vdXNlIGFsbCB0aGUgdGltZQorICAg
ICAgICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDQwOTMy
OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IGZpcnN0IHBhcnQgb2YgdGhlIHBhdGNoIGRlYWxzIHdpdGggd2hlbiB3ZSBhcmUgaW4gdGhlIG1v
ZGUgb2YgdHJhY2tpbmcgdGhlIAorICAgICAgICBtb3VzZSBhbGwgdGhlIHRpbWUuIFdoZW4gd2Un
cmUgaW4gdGhhdCBtb2RlLCB3ZSB3YW50IHRvIGRvIGFzIGxpdHRsZSB3b3JrIGFzIAorICAgICAg
ICBwb3NzaWJsZSBzbyB0aGF0IHRoaXMgZXh0cmEgdHJhY2tpbmcgaGFzIGxpdHRsZSB0byBubyBw
ZXJmb3JtYW5jZSBpbXBhY3QuIEFsc28sIHdlIAorICAgICAgICBkb24ndCB3YW50IHRvIGNoYW5n
ZSBiYXNpYyBiZWhhdmlvcnMgYnkgaGF2aW5nIG5vcm1hbCB3ZWIgY29udGVudCBob3ZlciBlZmZl
Y3RzIAorICAgICAgICBzdGFydCBoYXBwZW5pbmcgd2hlbiBhIHdpbmRvdyBpcyBpbiB0aGUgYmFj
a2dyb3VuZC4gU28gdGhpcyBwYXJ0IG9mIHRoZSBwYXRjaCAKKyAgICAgICAgaW50cm9kdWNlcyBh
IHdheSB0byBoYW5kbGUgYSBtb3VzZU1vdmVkIGV2ZW50IHRoYXQgd2lsbCBvbmx5IGFmZmVjdCBz
Y3JvbGxiYXJzLgorCisgICAgICAgIEV2ZW50SGFuZGxlcjo6bW91c2VNb3ZlZCgpIGFuZCBFdmVu
dEhhbmRsZXI6OmhhbmRsZU1vdXNlRXZlbnQoKSBib3RoIG5vdyB0YWtlIGEgCisgICAgICAgIGJv
b2xlYW4gcGFyYW1ldGVyIHRoYXQgaW5kaWNhdGVzIGlmIHdlIGFyZSBvbmx5IHVwZGF0aW5nIHNj
cm9sbGJhcnMuIElmIHRoYXQgaXMgCisgICAgICAgIHRoZSBjYXNlLCB0aGVuIHdlIG1ha2Ugb3Vy
IEhpdFRlc3RSZXF1ZXN0IFJlYWRPbmx5LCBhbmQgd2UgcmV0dXJuIGVhcmx5IG9uY2UgCisgICAg
ICAgIHVwZGF0ZUxhc3RTY3JvbGxiYXJVbmRlck1vdXNlKCkgaXMgY2FsbGVkLgorICAgICAgICAq
IFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAg
ICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
Ojptb3VzZU1vdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91
c2VNb3ZlRXZlbnQpOgorCisgICAgICAgIEluIGFkZGl0aW9uIHRvIGNhbGxpbmcgU2Nyb2xsYmFy
Ojptb3VzZUV4aXRlZCgpIHdoZW4gYXBwcm9wcmlhdGUsIHRoaXMgZnVuY3Rpb24gCisgICAgICAg
IG5vdyBjYWxscyBhIG5ldyBmdW5jdGlvbiwgU2Nyb2xsYmFyOjptb3VzZUVudGVyZWQoKSB3aGVu
IGFwcHJvcHJpYXRlLiAKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlTGFz
dFNjcm9sbGJhclVuZGVyTW91c2UpOgorCisgICAgICAgIFNjcm9sbGJhcjo6bW91c2VNb3ZlZCgp
IHVzZWQgdG8gYmUgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgCisgICAgICAgIFNjcm9sbEFuaW1h
dG9yOjptb3VzZUVudGVyZWRTY3JvbGxiYXIoKSwgYnV0IG5vdyBTY3JvbGxiYXI6Om1vdXNlRW50
ZXJlZCgpIHRha2VzIAorICAgICAgICBjYXJlIG9mIHRoYXQgaW5zdGVhZCwgbXVjaCBsaWtlIGhv
dyBTY3JvbGxiYXI6Om1vdXNlRXhpdGVkKCkgdGFrZXMgY2FyZSBvZiBjYWxsaW5nIAorICAgICAg
ICB0aGUgYW5pbWF0b3IncyBleGl0IGZ1bmN0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bGJhci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6Om1vdXNlTW92ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjptb3VzZUVudGVyZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbGJhci5oOgorCisgICAgICAgIFRoaXMgc2Vjb25kIHBhcnQgb2YgdGhlIHBhdGNo
IGRlYWxzIHdpdGggYWRqdXN0aW5nIHRoZSBtb3VzZSB0cmFja2luZyBzZXR0aW5ncyAKKyAgICAg
ICAgd2hlbiB0aGUgc2Nyb2xsYmFyIHN0eWxlIGNoYW5nZXMgZHluYW1pY2FsbHkuIAorCisgICAg
ICAgIFRoaXMgbmV3IENocm9tZUNsaWVudCBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgcmVj
b21tZW5kZWQgc2Nyb2xsYmFyIHN0eWxlIAorICAgICAgICBjaGFuZ2VzLiBUaGlzIHdheSwgV2Vi
S2l0IGNhbiByZXNwb25kIHRvIHRoZSBjaGFuZ2UgYnkgYWRqdXN0aW5nIGl0cyBtb3VzZSAKKyAg
ICAgICAgdHJhY2tpbmcuCisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudDo6cmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURpZENoYW5n
ZSk6CisKKyAgICAgICAgRXhpc3RpbmcgU2Nyb2xsYWJsZUFyZWEgZnVuY3Rpb24gc2Nyb2xsYmFy
U3R5bGVDaGFuZ2VkKCkgbm93IHRha2VzIGFuIGludCAKKyAgICAgICAgaW5kaWNhdGluZyB0aGUg
bmV3IHNjcm9sbGJhciBzdHlsZSBhbmQgYSBib29sIGluZGljYXRpbmcgd2hldGhlciBpdCBpcyBu
ZWNlc3NhcnkgCisgICAgICAgIHRvIGZvcmNlIGFuIHVwZGF0ZS4gSXQgdXNlZCB0byBiZSB0aGUg
Y2FzZSB0aGF0IHRoaXMgZnVuY3Rpb24gd2FzIG9ubHkgdXNlZCB0byAKKyAgICAgICAgZm9yY2Ug
YW4gdXBkYXRlLCBidXQgbm93IHRoYXQgaXQgbXVzdCBhbHNvIGNhbGwgaW50byB0aGUgQ2hyb21l
Q2xpZW50LCBpdCBpcyAKKyAgICAgICAgbmVjZXNzYXJ5IHRvIGluY2x1ZGUgYSBib29sIHRyYWNr
aW5nIHdoZXRoZXIgd2UgbmVlZCB0byBmb3JjZSBhbiB1cGRhdGUuIE5ldyAKKyAgICAgICAgaW1w
bGVtZW50YXRpb24gb24gRnJhbWVWaWV3IGlzIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIENocm9t
ZUNsaWVudCwgYW5kIHRoZW4gdGhhdCAKKyAgICAgICAgY2FsbHMgaW50byB0aGUgcHJlLWV4aXN0
aW5nIFNjcm9sbFZpZXcgZnVuY3Rpb24gZm9yIHRoZSBmb3JjZVVwZGF0ZSBwYXJ0LgorICAgICAg
ICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Ny
b2xsYmFyU3R5bGVDaGFuZ2VkKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmll
dzo6c2Nyb2xsYmFyU3R5bGVDaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3
Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGFibGVBcmVhOjpzY3JvbGxiYXJTdHlsZUNoYW5nZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdG9yTWFjOjp1cGRhdGVTY3JvbGxlclN0eWxlKToKKwogMjAxMS0xMS0xNCAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEhvc3RXaW5kb3cgaW52
YWxpZGF0aW9uIGZ1bmN0aW9ucyBzaG91bGQgdXNlIHJvb3QgdmlldyBjb29yZGluYXRlcwpJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDk5OTEwKQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIyNSw3ICsyMjUsNyBAQCBfX1pON1dl
YkNvcmUxMXdyaXRlVG9GaWxlRWlQS2NpCiBfX1pON1dlYkNvcmUxMkNocm9tZUNsaWVudDIzcGFp
bnRDdXN0b21PdmVyaGFuZ0FyZWFFUE5TXzE1R3JhcGhpY3NDb250ZXh0RVJLTlNfN0ludFJlY3RF
UzVfUzVfCiBfX1pON1dlYkNvcmUxMkVkaXRpbmdTdHlsZUQxRXYKIF9fWk43V2ViQ29yZTEyRXZl
bnRIYW5kbGVyMTBtb3VzZU1vdmVkRVA3TlNFdmVudAotX19aTjdXZWJDb3JlMTJFdmVudEhhbmRs
ZXIxMG1vdXNlTW92ZWRFUktOU18xOFBsYXRmb3JtTW91c2VFdmVudEUKK19fWk43V2ViQ29yZTEy
RXZlbnRIYW5kbGVyMTBtb3VzZU1vdmVkRVJLTlNfMThQbGF0Zm9ybU1vdXNlRXZlbnRFYgogX19a
TjdXZWJDb3JlMTJFdmVudEhhbmRsZXIxMHdoZWVsRXZlbnRFUDdOU0V2ZW50CiBfX1pON1dlYkNv
cmUxMkV2ZW50SGFuZGxlcjEybW91c2VEcmFnZ2VkRVA3TlNFdmVudAogX19aTjdXZWJDb3JlMTJF
dmVudEhhbmRsZXIxNGN1cnJlbnROU0V2ZW50RXYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaAkocmV2aXNpb24gOTk5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNiArMzI1LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVBbmltYXRlZFNjcm9sbCgpIGNv
bnN0IHsgfQogICAgICAgICAKICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeVNjcm9sbGVyVGh1
bWJJc1Zpc2libGVJblJlY3QoY29uc3QgSW50UmVjdCYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZv
aWQgcmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURpZENoYW5nZShpbnQgLypuZXdTdHlsZSovKSB7
IH0KIAogICAgICAgICBlbnVtIERpYWxvZ1R5cGUgewogICAgICAgICAgICAgQWxlcnREaWFsb2cg
PSAwLApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkocmV2aXNpb24gOTk5
MTApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE1NTQsMTAgKzE1NTQsMTMgQEAgc3RhdGljIFJlbmRlckxheWVyKiBsYXllckZvck5v
ZGUoTm9kZSogbgogICAgIHJldHVybiBsYXllcjsKIH0KIAotYm9vbCBFdmVudEhhbmRsZXI6Om1v
dXNlTW92ZWQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKK2Jvb2wgRXZlbnRIYW5k
bGVyOjptb3VzZU1vdmVkKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIGJvb2wgb25s
eVVwZGF0ZVNjcm9sbGJhcnMpCiB7CiAgICAgSGl0VGVzdFJlc3VsdCBob3ZlcmVkTm9kZSA9IEhp
dFRlc3RSZXN1bHQoTGF5b3V0UG9pbnQoKSk7Ci0gICAgYm9vbCByZXN1bHQgPSBoYW5kbGVNb3Vz
ZU1vdmVFdmVudChldmVudCwgJmhvdmVyZWROb2RlKTsKKyAgICBib29sIHJlc3VsdCA9IGhhbmRs
ZU1vdXNlTW92ZUV2ZW50KGV2ZW50LCAmaG92ZXJlZE5vZGUsIG9ubHlVcGRhdGVTY3JvbGxiYXJz
KTsKKworICAgIGlmIChvbmx5VXBkYXRlU2Nyb2xsYmFycykKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKIAogICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQpA
QCAtMTU3Nyw3ICsxNTgwLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6Om1vdXNlTW92ZWQoY29uc3Qg
UGxhdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVN
b3VzZU1vdmVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQsIEhpdFRl
c3RSZXN1bHQqIGhvdmVyZWROb2RlKQorYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92
ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCwgSGl0VGVzdFJlc3Vs
dCogaG92ZXJlZE5vZGUsIGJvb2wgb25seVVwZGF0ZVNjcm9sbGJhcnMpCiB7CiAgICAgLy8gaW4g
UmFkYXIgMzcwMzc2OCB3ZSBzYXcgZnJlcXVlbnQgY3Jhc2hlcyBhcHBhcmVudGx5IGR1ZSB0byB0
aGUKICAgICAvLyBwYXJ0IGJlaW5nIG51bGwgaGVyZSwgd2hpY2ggc2VlbXMgaW1wb3NzaWJsZSwg
c28gY2hlY2sgZm9yIG5pbApAQCAtMTYwOSwxMiArMTYxMiwxMyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoCiAgICAgaWYgKG1fbGFzdFNjcm9sbGJhclVuZGVyTW91
c2UgJiYgbV9tb3VzZVByZXNzZWQpCiAgICAgICAgIHJldHVybiBtX2xhc3RTY3JvbGxiYXJVbmRl
ck1vdXNlLT5tb3VzZU1vdmVkKG1vdXNlRXZlbnQpOwogCi0gICAgLy8gVHJlYXQgbW91c2UgbW92
ZSBldmVudHMgd2hpbGUgdGhlIG1vdXNlIGlzIHByZXNzZWQgYXMgInJlYWQtb25seSIgaW4gcHJl
cGFyZU1vdXNlRXZlbnQKLSAgICAvLyBpZiB3ZSBhcmUgYWxsb3dlZCB0byBzZWxlY3QuCi0gICAg
Ly8gVGhpcyBtZWFucyB0aGF0IDpob3ZlciBhbmQgOmFjdGl2ZSBmcmVlemUgaW4gdGhlIHN0YXRl
IHRoZXkgd2VyZSBpbiB3aGVuIHRoZSBtb3VzZQotICAgIC8vIHdhcyBwcmVzc2VkLCByYXRoZXIg
dGhhbiB1cGRhdGluZyBmb3Igbm9kZXMgdGhlIG1vdXNlIG1vdmVzIG92ZXIgYXMgeW91IGhvbGQg
dGhlIG1vdXNlIGRvd24uCisgICAgLy8gTW91c2UgZXZlbnRzIHNob3VsZCBiZSB0cmVhdGVkIGFz
ICJyZWFkLW9ubHkiIGluIHByZXBhcmVNb3VzZUV2ZW50IGlmIHRoZSBtb3VzZSBpcyAKKyAgICAv
LyBwcmVzc2VkIGFuZCB3ZSBhcmUgYWxsb3dlZCB0byBzZWxlY3QgT1IgaWYgd2UncmUgdXBkYXRp
bmcgb25seSBzY3JvbGxiYXJzLiBUaGlzIAorICAgIC8vIG1lYW5zIHRoYXQgOmhvdmVyIGFuZCA6
YWN0aXZlIGZyZWV6ZSBpbiB0aGUgc3RhdGUgdGhleSB3ZXJlIGluLCByYXRoZXIgdGhhbiB1cGRh
dGluZyAKKyAgICAvLyBmb3Igbm9kZXMgdGhlIG1vdXNlIG1vdmVzIG92ZXIgd2hpbGUgeW91IGhv
bGQgdGhlIG1vdXNlIGRvd24gKGluIHRoZSBtb3VzZSBwcmVzc2VkIGNhc2UpCisgICAgLy8gb3Ig
d2hpbGUgdGhlIHdpbmRvdyBpcyBub3Qga2V5IChhcyBpbiB0aGUgb25seVVwZGF0ZVNjcm9sbGJh
cnMgY2FzZSkuCiAgICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBl
ID0gSGl0VGVzdFJlcXVlc3Q6Ok1vdXNlTW92ZTsKLSAgICBpZiAobV9tb3VzZVByZXNzZWQgJiYg
bV9tb3VzZURvd25NYXlTdGFydFNlbGVjdCkKKyAgICBpZiAoKG1fbW91c2VQcmVzc2VkICYmIG1f
bW91c2VEb3duTWF5U3RhcnRTZWxlY3QpIHx8IG9ubHlVcGRhdGVTY3JvbGxiYXJzKQogICAgICAg
ICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seTsKICAgICBpZiAobV9tb3VzZVBy
ZXNzZWQpCiAgICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZTsKQEAgLTE2
NDEsNiArMTY0NSw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudCgK
ICAgICAgICAgICAgIHNjcm9sbGJhciA9IG1ldi5zY3JvbGxiYXIoKTsKIAogICAgICAgICB1cGRh
dGVMYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZShzY3JvbGxiYXIsICFtX21vdXNlUHJlc3NlZCk7Cisg
ICAgICAgIGlmIChvbmx5VXBkYXRlU2Nyb2xsYmFycykKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAogICAgIGJvb2wgc3dhbGxvd0V2ZW50ID0gZmFsc2U7CkBAIC0zMTQxLDYgKzMx
NDcsMTEgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZUxhc3RTY3JvbGxiYXJVbgogICAgICAg
ICAvLyBTZW5kIG1vdXNlIGV4aXRlZCB0byB0aGUgb2xkIHNjcm9sbGJhci4KICAgICAgICAgaWYg
KG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2UpCiAgICAgICAgICAgICBtX2xhc3RTY3JvbGxiYXJV
bmRlck1vdXNlLT5tb3VzZUV4aXRlZCgpOworCisgICAgICAgIC8vIFNlbmQgbW91c2UgZW50ZXJl
ZCBpZiB3ZSdyZSBzZXR0aW5nIGEgbmV3IHNjcm9sbGJhci4KKyAgICAgICAgaWYgKHNjcm9sbGJh
ciAmJiBzZXRMYXN0KQorICAgICAgICAgICAgc2Nyb2xsYmFyLT5tb3VzZUVudGVyZWQoKTsKKwog
ICAgICAgICBtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlID0gc2V0TGFzdCA/IHNjcm9sbGJhciA6
IDA7CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCShyZXZpc2lv
biA5OTkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE0OCwxMiArMTQ4LDEyIEBAIHB1YmxpYzoKICAgICBib29sIHRhYnNUb0xpbmtz
KEtleWJvYXJkRXZlbnQqKSBjb25zdDsKICAgICBib29sIHRhYnNUb0FsbEZvcm1Db250cm9scyhL
ZXlib2FyZEV2ZW50KikgY29uc3Q7CiAKLSAgICBib29sIG1vdXNlTW92ZWQoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50Jik7CisgICAgYm9vbCBtb3VzZU1vdmVkKGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYsIGJvb2wgb25seVVwZGF0ZVNjcm9sbGJhcnMgPSBmYWxzZSk7CiAKICAgICB2b2lkIGxv
c3RNb3VzZUNhcHR1cmUoKTsKIAogICAgIGJvb2wgaGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYpOwotICAgIGJvb2wgaGFuZGxlTW91c2VNb3ZlRXZlbnQoY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgSGl0VGVzdFJlc3VsdCogaG92ZXJlZE5vZGUgPSAwKTsK
KyAgICBib29sIGhhbmRsZU1vdXNlTW92ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYs
IEhpdFRlc3RSZXN1bHQqIGhvdmVyZWROb2RlID0gMCwgYm9vbCBvbmx5VXBkYXRlU2Nyb2xsYmFy
cyA9IGZhbHNlKTsKICAgICBib29sIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYpOwogICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudChQbGF0Zm9ybVdoZWVs
RXZlbnQmKTsKICAgICB2b2lkIGRlZmF1bHRXaGVlbEV2ZW50SGFuZGxlcihOb2RlKiwgV2hlZWxF
dmVudCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gOTk5MTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0NDksNiArMjQ0OSwxOSBAQCBib29sIEZyYW1lVmlldzo6c2hvdWxkU3VzcGVuZFNjcm9sbEFu
aW1hCiAgICAgcmV0dXJuIG1fZnJhbWUtPmxvYWRlcigpLT5zdGF0ZSgpICE9IEZyYW1lU3RhdGVD
b21wbGV0ZTsKIH0KIAordm9pZCBGcmFtZVZpZXc6OnNjcm9sbGJhclN0eWxlQ2hhbmdlZChpbnQg
bmV3U3R5bGUsIGJvb2wgZm9yY2VVcGRhdGUpCit7CisgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUt
PnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAocGFnZS0+
bWFpbkZyYW1lKCkgIT0gbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIHBhZ2UtPmNocm9t
ZSgpLT5jbGllbnQoKS0+cmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURpZENoYW5nZShuZXdTdHls
ZSk7CisKKyAgICBpZiAoZm9yY2VVcGRhdGUpCisgICAgICAgIFNjcm9sbFZpZXc6OnNjcm9sbGJh
clN0eWxlQ2hhbmdlZChuZXdTdHlsZSwgZm9yY2VVcGRhdGUpOworfQorCiB2b2lkIEZyYW1lVmll
dzo6c2V0QW5pbWF0b3JzQXJlQWN0aXZlKCkKIHsKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+
cGFnZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCShyZXZpc2lvbiA5OTkxMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5Miw2
ICsyOTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmbHVzaEFueVBlbmRpbmdQb3N0TGF5b3V0VGFz
a3MoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygp
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJTdHlsZUNoYW5nZWQoaW50IG5ld1N0
eWxlLCBib29sIGZvcmNlVXBkYXRlKTsKIAogICAgIHZvaWQgc2V0QW5pbWF0b3JzQXJlQWN0aXZl
KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCShyZXZpc2lv
biA5OTkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NjEsOCArOTYxLDEyIEBAIGJvb2wgU2Nyb2xsVmlldzo6aXNTY3JvbGxD
b3JuZXJWaXNpYmxlKCkKICAgICByZXR1cm4gIXNjcm9sbENvcm5lclJlY3QoKS5pc0VtcHR5KCk7
CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsYmFyU3R5bGVDaGFuZ2VkKCkKK3ZvaWQgU2Ny
b2xsVmlldzo6c2Nyb2xsYmFyU3R5bGVDaGFuZ2VkKGludCBuZXdTdHlsZSwgYm9vbCBmb3JjZVVw
ZGF0ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0obmV3U3R5bGUpOworICAgIGlmICghZm9yY2VVcGRh
dGUpCisgICAgICAgIHJldHVybjsKKwogICAgIGNvbnRlbnRzUmVzaXplZCgpOwogICAgIHVwZGF0
ZVNjcm9sbGJhcnMoc2Nyb2xsT2Zmc2V0KCkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuaAkocmV2aXNpb24gOTk5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVJ1YmJlckJhbmQoY29uc3QgSW50U2l6ZSYpIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlQYWdlVGhhdENvbnRlbnRBcmVhV2lsbFBhaW50
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsQ29ybmVyVmlzaWJsZSgpIGNvbnN0
OwotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJTdHlsZUNoYW5nZWQoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2Nyb2xsYmFyU3R5bGVDaGFuZ2VkKGludCBuZXdTdHlsZSwgYm9vbCBmb3JjZVVwZGF0
ZSk7CiAKICAgICAvLyBOT1RFOiBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSB0aGUgb3Zl
cnJpZGVuIHNldFNjcm9sbE9mZnNldCBmcm9tIFNjcm9sbGFibGVBcmVhLgogICAgIHZpcnR1YWwg
dm9pZCBzY3JvbGxUbyhjb25zdCBJbnRTaXplJiBuZXdPZmZzZXQpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCShyZXZpc2lvbiA5OTkxMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgJKHdvcmtpbmcgY29weSkKQEAgLTEz
OSw3ICsxMzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlQW5pbWF0
ZWRTY3JvbGwoKSBjb25zdCB7IH0KICAgICAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VzcGVu
ZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2
b2lkIHNjcm9sbGJhclN0eWxlQ2hhbmdlZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxi
YXJTdHlsZUNoYW5nZWQoaW50IC8qbmV3U3R5bGUqLywgYm9vbCAvKmZvcmNlVXBkYXRlKi8pIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QoY29uc3QgSW50
UmVjdCYpIHsgfQogCiAgICAgdmlydHVhbCBib29sIGlzT25BY3RpdmVQYWdlKCkgY29uc3QgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIHRydWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYmFyLmNwcAkocmV2aXNpb24gOTk5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxiYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDYsMTEgKzM0Niw2IEBA
IGJvb2wgU2Nyb2xsYmFyOjptb3VzZU1vdmVkKGNvbnN0IFBsYXRmb3IKICAgICBpZiAobV9wcmVz
c2VkUGFydCAhPSBOb1BhcnQpCiAgICAgICAgIG1fcHJlc3NlZFBvcyA9IChvcmllbnRhdGlvbigp
ID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coZXZ0
LnBvcygpKS54KCkgOiBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coZXZ0LnBvcygpKS55KCkp
OwogCi0gICAgaWYgKG1faG92ZXJlZFBhcnQgPT0gTm9QYXJ0KSB7Ci0gICAgICAgIGlmIChtX3Nj
cm9sbGFibGVBcmVhKQotICAgICAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS0+c2Nyb2xsQW5pbWF0
b3IoKS0+bW91c2VFbnRlcmVkU2Nyb2xsYmFyKHRoaXMpOwotICAgIH0KLQogICAgIFNjcm9sbGJh
clBhcnQgcGFydCA9IHRoZW1lKCktPmhpdFRlc3QodGhpcywgZXZ0KTsKICAgICBpZiAocGFydCAh
PSBtX2hvdmVyZWRQYXJ0KSB7CiAgICAgICAgIGlmIChtX3ByZXNzZWRQYXJ0ICE9IE5vUGFydCkg
ewpAQCAtMzczLDYgKzM2OCwxMyBAQCBib29sIFNjcm9sbGJhcjo6bW91c2VNb3ZlZChjb25zdCBQ
bGF0Zm9yCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgU2Nyb2xsYmFyOjptb3VzZUVudGVy
ZWQoKQoreworICAgIGlmIChtX3Njcm9sbGFibGVBcmVhKQorICAgICAgICBtX3Njcm9sbGFibGVB
cmVhLT5zY3JvbGxBbmltYXRvcigpLT5tb3VzZUVudGVyZWRTY3JvbGxiYXIodGhpcyk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKIGJvb2wgU2Nyb2xsYmFyOjptb3VzZUV4aXRlZCgpCiB7CiAgICAg
aWYgKG1fc2Nyb2xsYWJsZUFyZWEpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxiYXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIu
aAkocmV2aXNpb24gOTk5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIu
aAkod29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsNyBAQCBwdWJsaWM6CiAgICAgLy8gd2hlbiB0
aGUgbW91c2Ugd2VudCBkb3duIGluIGEgc2Nyb2xsYmFyLCBzaW5jZSBpdCBpcyBhc3N1bWVkIHRo
ZSBzY3JvbGxiYXIgd2lsbCBzdGFydAogICAgIC8vIGdyYWJiaW5nIGFsbCBldmVudHMgaW4gdGhh
dCBjYXNlIGFueXdheS4KICAgICBib29sIG1vdXNlTW92ZWQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50Jik7CisgICAgYm9vbCBtb3VzZUVudGVyZWQoKTsKICAgICBib29sIG1vdXNlRXhpdGVkKCk7
CiAgICAgCiAgICAgLy8gVXNlZCBieSBzb21lIHBsYXRmb3JtIHNjcm9sbGJhcnMgdG8ga25vdyB3
aGVuIHRoZXkndmUgYmVlbiByZWxlYXNlZCBmcm9tIGNhcHR1cmUuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCShyZXZpc2lvbiAx
MDAwMjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTE0NjQsOCArMTQ2NCw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0
b3JNYWM6OnVwZGF0ZVNjcm9sbGVyU3QKIAogICAgIC8vIElmIG5lZWRzU2Nyb2xsZXJTdHlsZVVw
ZGF0ZSgpIGlzIHRydWUsIHRoZW4gdGhlIHBhZ2UgaXMgcmVzdG9yaW5nIGZyb20gdGhlIHBhZ2Ug
Y2FjaGUsIGFuZCAKICAgICAvLyBhIHJlbGF5b3V0IHdpbGwgaGFwcGVuIG9uIGl0cyBvd24uIE90
aGVyd2lzZSwgd2UgbXVzdCBpbml0aWF0ZSBhIHJlLWxheW91dCBvdXJzZWx2ZXMuCi0gICAgaWYg
KCFuZWVkc1Njcm9sbGVyU3R5bGVVcGRhdGUoKSkKLSAgICAgICAgc2Nyb2xsYWJsZUFyZWEoKS0+
c2Nyb2xsYmFyU3R5bGVDaGFuZ2VkKCk7CisgICAgc2Nyb2xsYWJsZUFyZWEoKS0+c2Nyb2xsYmFy
U3R5bGVDaGFuZ2VkKG5ld1N0eWxlLCAhbmVlZHNTY3JvbGxlclN0eWxlVXBkYXRlKCkpOwogCiAg
ICAgc2V0TmVlZHNTY3JvbGxlclN0eWxlVXBkYXRlKGZhbHNlKTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDEwMDI5OCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDExLTExLTE1ICBCZXRoIERha2luICA8YmRha2luQGFw
cGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzI0MDAKKyAgICAgICAgU2Nyb2xsYmFyIHVpU3RhdGVUcmFuc2l0aW9uUHJvZ3Jlc3MgcmVx
dWlyZXMgdHJhY2tpbmcgdGhlIG1vdXNlIGFsbCB0aGUgdGltZQorICAgICAgICAtYW5kIGNvcnJl
c3BvbmRpbmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDQwOTMyOD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXQgdXAgb3VyIGluaXRpYWwg
dHJhY2tpbmcgYXJlYSBiYXNlZCBvbiB0aGUgY3VycmVudGx5IHJlY29tbWVuZGVkIHNjcm9sbGJh
ciAKKyAgICAgICAgc3R5bGUuIFRyYWNrIHRoZSBtb3VzZSBhbGwgdGhlIHRpbWUgaWYgdGhlIHN0
eWxlIGlzIGxlZ2FjeS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06Cisg
ICAgICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbnRleHRSZWY6cGFnZUdyb3VwUmVmOl0p
OgorCisgICAgICAgIE5vdyB0aGF0IHdlIG1pZ2h0IGJlIGdldHRpbmcgbW91c2VNb3ZlZCBldmVu
dHMgYWxsIHRoZSB0aW1lIGV2ZW4gd2hlbiB0aGUgd2luZG93IAorICAgICAgICBpcyBub3Qga2V5
LCBtYWtlIHN1cmUgd2Ugb3B0IGludG8gdGhlIG5ldyAnb25seVVwZGF0ZVNjcm9sbGJhcnMnIG1v
ZGUgZm9yIAorICAgICAgICBFdmVudEhhbmRsZXI6Om1vdXNlTW92ZWQoKSB3aGVuIHRoZSB3aW5k
b3cgaXMgbm90IGZvY3VzZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpoYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6bW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1vdXNl
RXZlbnRTeW5jRm9yVGVzdGluZyk6CisKKyAgICAgICAgVGhlc2UgbmV3IGZ1bmN0aW9ucyB0YWtl
IGNhcmUgb2YgcGFzc2luZyBhbG9uZyB0aGUgCisgICAgICAgIHJlY29tbWVuZGVkU2Nyb2xsYmFy
U3R5bGVEaWRDaGFuZ2UoKSBtZXNzYWdlIHRoYXQgb3JpZ2luYXRlcyBpbiB0aGUgQ2hyb21lQ2xp
ZW50LiAKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjb21tZW5kZWRT
Y3JvbGxiYXJTdHlsZURpZENoYW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJlY29tbWVuZGVkU2Nyb2xsYmFyU3R5bGVE
aWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lmg6CisKKyAgICAgICAgVGhpcyBpcyB3aGVyZSB3ZSBhY3R1YWxseSByZXNwb25kIHRv
IHRoZSByZWNvbW1lbmRlZFNjcm9sbGJhclN0eWxlRGlkQ2hhbmdlIAorICAgICAgICBtZXNzYWdl
LiBXZSByZW1vdmUgdGhlIGV4aXN0aW5nIHRyYWNraW5nIGFyZWEgYW5kIGNyZWF0ZSBhIG5ldyB0
cmFja2luZyBhcmVhIHdpdGggCisgICAgICAgIHRoZSBhcHByb3ByaWF0ZSB0cmFja2luZyBvcHRp
b25zLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURp
ZENoYW5nZSk6CisKKyAgICAgICAgQnVpbHRJblBERlZpZXcgaW5oZXJpdHMgZnJvbSBTY3JvbGxh
YmxlQXJlYSwgc28gc2Nyb2xsYmFyU3R5bGVDaGFuZ2VkKCkgbXVzdCBub3cgCisgICAgICAgIHRh
a2UgdHdvIHBhcmFtZXRlcnMgbGlrZSB0aGUgb25lIGluIFNjcm9sbGFibGVBcmVhLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuY3BwOgorICAgICAgICAo
V2ViS2l0OjpCdWlsdEluUERGVmlldzo6c2Nyb2xsYmFyU3R5bGVDaGFuZ2VkKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3Lmg6CisKIDIwMTEtMTEtMTQg
IEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBIb3N0V2lu
ZG93IGludmFsaWRhdGlvbiBmdW5jdGlvbnMgc2hvdWxkIHVzZSByb290IHZpZXcgY29vcmRpbmF0
ZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkocmV2aXNpb24gOTk5
MTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzcsNiArMTc3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNz
Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFu
ZWwpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihX
ZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50OjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0
cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgPSAwOworICAgIHZpcnR1YWwg
dm9pZCByZWNvbW1lbmRlZFNjcm9sbGJhclN0eWxlRGlkQ2hhbmdlKGludDMyX3QgbmV3U3R5bGUp
ID0gMDsKICAgICAKICAgICB2aXJ0dWFsIFdLVmlldyogd2tWaWV3KCkgY29uc3QgPSAwOwogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2
aXNpb24gOTk5MTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzI2Myw2ICszMjYzLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojpub3RpZnlTY3JvbGxlclRodW1iSXMKICAgICBtX3Zpc2libGVTY3JvbGxlclRodW1iUmVjdCA9
IHNjcm9sbGVyVGh1bWI7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWNvbW1lbmRlZFNjcm9s
bGJhclN0eWxlRGlkQ2hhbmdlKGludDMyX3QgbmV3U3R5bGUpCit7CisgICAgbV9wYWdlQ2xpZW50
LT5yZWNvbW1lbmRlZFNjcm9sbGJhclN0eWxlRGlkQ2hhbmdlKG5ld1N0eWxlKTsKK30KKwogdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVNjcm9sbGJhcnNGb3JNYWluRnJhbWUoYm9vbCBoYXNI
b3Jpem9udGFsU2Nyb2xsYmFyLCBib29sIGhhc1ZlcnRpY2FsU2Nyb2xsYmFyKQogewogICAgIG1f
bWFpbkZyYW1lSGFzSG9yaXpvbnRhbFNjcm9sbGJhciA9IGhhc0hvcml6b250YWxTY3JvbGxiYXI7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiA5
OTkxMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjYwLDYgKzY2MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgZ2VvbG9jYXRpb25JRCwgdWludDY0
X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIpOwogICAgIHZvaWQgcnVuTW9kYWwo
KTsKICAgICB2b2lkIG5vdGlmeVNjcm9sbGVyVGh1bWJJc1Zpc2libGVJblJlY3QoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpOworICAgIHZvaWQgcmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURpZENo
YW5nZShpbnQzMl90IG5ld1N0eWxlKTsKICAgICB2b2lkIGRpZENoYW5nZVNjcm9sbGJhcnNGb3JN
YWluRnJhbWUoYm9vbCBoYXNIb3Jpem9udGFsU2Nyb2xsYmFyLCBib29sIGhhc1ZlcnRpY2FsU2Ny
b2xsYmFyKTsKICAgICB2b2lkIGRpZENoYW5nZVNjcm9sbE9mZnNldFBpbm5pbmdGb3JNYWluRnJh
bWUoYm9vbCBwaW5uZWRUb0xlZnRTaWRlLCBib29sIHBpbm5lZFRvUmlnaHRTaWRlKTsKICAgICB2
b2lkIGRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4JKHJldmlzaW9uIDk5OTExKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsNyBAQCBtZXNz
YWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIFByaW50RnJhbWUodWludDY0X3QgZnJhbWVJRCkg
LT4gKCkKICAgICBSdW5Nb2RhbCgpCiAgICAgTm90aWZ5U2Nyb2xsZXJUaHVtYklzVmlzaWJsZUlu
UmVjdChXZWJDb3JlOjpJbnRSZWN0IHNjcm9sbGVyVGh1bWIpCisgICAgUmVjb21tZW5kZWRTY3Jv
bGxiYXJTdHlsZURpZENoYW5nZShpbnQzMl90IG5ld1N0eWxlKQogICAgIERpZENoYW5nZVNjcm9s
bGJhcnNGb3JNYWluRnJhbWUoYm9vbCBoYXNIb3Jpem9udGFsU2Nyb2xsYmFyLCBib29sIGhhc1Zl
cnRpY2FsU2Nyb2xsYmFyKQogICAgIERpZENoYW5nZVNjcm9sbE9mZnNldFBpbm5pbmdGb3JNYWlu
RnJhbWUoYm9vbCBoYXNIb3Jpem9udGFsU2Nyb2xsYmFyLCBib29sIGhhc1ZlcnRpY2FsU2Nyb2xs
YmFyKQogICAgIERpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4oV1RGOjpTdHJpbmcgbWltZVR5cGUp
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGll
bnRJbXBsLmgJKHJldmlzaW9uIDk5OTExKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvUGFnZUNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDYgKzEyMiw4IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24o
V2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCk7CiAgICAgdmlydHVh
bCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6RWRpdG9yQ2xpZW50
OjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmlu
ZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZyk7CiAKKyAgICB2aXJ0dWFsIHZvaWQg
cmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURpZENoYW5nZShpbnQzMl90IG5ld1N0eWxlKTsKKwog
ICAgIHZpcnR1YWwgV0tWaWV3KiB3a1ZpZXcoKSBjb25zdCB7IHJldHVybiBtX3drVmlldzsgfQog
CiAgICAgV0tWaWV3KiBtX3drVmlldzsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCShyZXZpc2lvbiA5OTkxMSkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00NjEsNiArNDYxLDM0IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnJlY29yZEF1
dG9jb3JyZWN0aW8KICNlbmRpZgogfQogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpyZWNvbW1lbmRl
ZFNjcm9sbGJhclN0eWxlRGlkQ2hhbmdlKGludDMyX3QgbmV3U3R5bGUpCit7CisjaWYgIWRlZmlu
ZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorICAgIE5TQXJyYXkgKnRyYWNraW5nQXJlYXMg
PSBbbV93a1ZpZXcgdHJhY2tpbmdBcmVhc107CisgICAgTlNVSW50ZWdlciBjb3VudCA9IFt0cmFj
a2luZ0FyZWFzIGNvdW50XTsKKyAgICBBU1NFUlQoY291bnQgPT0gMSk7CisgICAgCisgICAgZm9y
IChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgW21fd2tWaWV3IHJl
bW92ZVRyYWNraW5nQXJlYTpbdHJhY2tpbmdBcmVhcyBvYmplY3RBdEluZGV4OmldXTsKKworICAg
IC8vIE5vdyByZS1jcmVhdGUgYSB0cmFja2luZyBhcmVhIHdpdGggdGhlIGFwcHJvcHJpYXRlIG9w
dGlvbnMgZ2l2ZW4gdGhlIG5ldyBzY3JvbGxiYXIgc3R5bGUKKyAgICBOU1RyYWNraW5nQXJlYU9w
dGlvbnMgb3B0aW9ucyA9IE5TVHJhY2tpbmdNb3VzZU1vdmVkIHwgTlNUcmFja2luZ01vdXNlRW50
ZXJlZEFuZEV4aXRlZCB8IE5TVHJhY2tpbmdJblZpc2libGVSZWN0OworICAgIGlmIChuZXdTdHls
ZSA9PSBOU1Njcm9sbGVyU3R5bGVMZWdhY3kpCisgICAgICAgIG9wdGlvbnMgfD0gTlNUcmFja2lu
Z0FjdGl2ZUFsd2F5czsKKyAgICBlbHNlCisgICAgICAgIG9wdGlvbnMgfD0gTlNUcmFja2luZ0Fj
dGl2ZUluS2V5V2luZG93OworCisgICAgTlNUcmFja2luZ0FyZWEgKnRyYWNraW5nQXJlYSA9IFtb
TlNUcmFja2luZ0FyZWEgYWxsb2NdIGluaXRXaXRoUmVjdDpbbV93a1ZpZXcgZnJhbWVdCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3B0aW9uczpvcHRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvd25lcjptX3drVmlldworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcklu
Zm86bmlsXTsKKyAgICBbbV93a1ZpZXcgYWRkVHJhY2tpbmdBcmVhOnRyYWNraW5nQXJlYV07Cisg
ICAgW3RyYWNraW5nQXJlYSByZWxlYXNlXTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG5ld1N0
eWxlKTsKKyNlbmRpZgorfQorCiBib29sIFBhZ2VDbGllbnRJbXBsOjpleGVjdXRlU2F2ZWRDb21t
YW5kQnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yU3RyaW5nKQogewogICAgIHJldHVy
biBbbV93a1ZpZXcgX2V4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yOk5TU2VsZWN0b3JGcm9t
U3RyaW5nKHNlbGVjdG9yU3RyaW5nKV07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tWaWV3Lm1tCShyZXZpc2lvbiA5OTkxMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjY0MCw4ICsyNjQw
LDE5IEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBjb250ZXgKICAgICBJbml0
V2ViQ29yZVN5c3RlbUludGVyZmFjZSgpOwogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVu
TG9vcCgpOwogCisgICAgLy8gTGVnYWN5IHN0eWxlIHNjcm9sbGJhcnMgaGF2ZSBkZXNpZ24gZGV0
YWlscyB0aGF0IHJlbHkgb24gdHJhY2tpbmcgdGhlIG1vdXNlIGFsbCB0aGUgdGltZS4KKyAgICBO
U1RyYWNraW5nQXJlYU9wdGlvbnMgb3B0aW9ucyA9IE5TVHJhY2tpbmdNb3VzZU1vdmVkIHwgTlNU
cmFja2luZ01vdXNlRW50ZXJlZEFuZEV4aXRlZCB8IE5TVHJhY2tpbmdJblZpc2libGVSZWN0Owor
I2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyAgICBpZiAoV0tSZWNvbW1l
bmRlZFNjcm9sbGVyU3R5bGUoKSA9PSBOU1Njcm9sbGVyU3R5bGVMZWdhY3kpCisgICAgICAgIG9w
dGlvbnMgfD0gTlNUcmFja2luZ0FjdGl2ZUFsd2F5czsKKyAgICBlbHNlCisgICAgICAgIG9wdGlv
bnMgfD0gTlNUcmFja2luZ0FjdGl2ZUluS2V5V2luZG93OworI2Vsc2UKKyAgICBvcHRpb25zIHw9
IE5TVHJhY2tpbmdBY3RpdmVJbktleVdpbmRvdzsKKyNlbmRpZgorCiAgICAgTlNUcmFja2luZ0Fy
ZWEgKnRyYWNraW5nQXJlYSA9IFtbTlNUcmFja2luZ0FyZWEgYWxsb2NdIGluaXRXaXRoUmVjdDpm
cmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wdGlvbnM6KE5TVHJhY2tpbmdNb3VzZU1vdmVkIHwgTlNUcmFja2luZ01v
dXNlRW50ZXJlZEFuZEV4aXRlZCB8IE5TVHJhY2tpbmdBY3RpdmVJbktleVdpbmRvdyB8IE5TVHJh
Y2tpbmdJblZpc2libGVSZWN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6b3B0aW9ucwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3du
ZXI6c2VsZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdXNlckluZm86bmlsXTsKICAgICBbc2VsZiBhZGRUcmFja2luZ0FyZWE6
dHJhY2tpbmdBcmVhXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvQnVpbHRJblBERlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuY3BwCShyZXZpc2lvbiA5OTkxMCkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NzIsOCArNjcyLDEyIEBAIGJvb2wgQnVpbHRJblBERlZpZXc6
OmlzT25BY3RpdmVQYWdlKCkgY28KICAgICByZXR1cm4gIXBsdWdpblZpZXcoKS0+ZnJhbWUoKS0+
ZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUoKTsKIH0KIAotdm9pZCBCdWlsdEluUERGVmlldzo6c2Ny
b2xsYmFyU3R5bGVDaGFuZ2VkKCkKK3ZvaWQgQnVpbHRJblBERlZpZXc6OnNjcm9sbGJhclN0eWxl
Q2hhbmdlZChpbnQgbmV3U3R5bGUsIGJvb2wgZm9yY2VVcGRhdGUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKG5ld1N0eWxlKTsKKyAgICBpZiAoIWZvcmNlVXBkYXRlKQorICAgICAgICByZXR1cm47CisK
ICAgICAvLyBJZiB0aGUgUERGIHdhcyBzY3JvbGxlZCBhbGwgdGhlIHdheSB0byBib3R0b20gcmln
aHQgYW5kIHNjcm9sbGJhcnMgY2hhbmdlIHRvIG92ZXJsYXkgc3R5bGUsIHdlIGRvbid0IHdhbnQg
dG8gZGlzcGxheSB3aGl0ZSByZWN0YW5nbGVzIHdoZXJlIHNjcm9sbGJhcnMgd2VyZS4KICAgICBJ
bnRQb2ludCBuZXdTY3JvbGxPZmZzZXQgPSBJbnRQb2ludChtX3Njcm9sbE9mZnNldCkuc2hydW5r
VG8obWF4aW11bVNjcm9sbFBvc2l0aW9uKCkpOwogICAgIHNldFNjcm9sbE9mZnNldChuZXdTY3Jv
bGxPZmZzZXQpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9C
dWlsdEluUERGVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaAkocmV2aXNpb24gOTk5MTApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNCw3ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc09u
QWN0aXZlUGFnZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJvbVBhZ2Uo
KSB7IG1fcGFnZSA9IDA7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VzcGVuZFNjcm9sbEFu
aW1hdGlvbnMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfSAvLyBJZiB3ZSByZXR1cm4gdHJ1ZSwg
U2Nyb2xsQW5pbWF0b3JNYWMgd2lsbCBrZWVwIGN5Y2xpbmcgYSB0aW1lciBmb3JldmVyLCB3YWl0
aW5nIGZvciBhIGdvb2QgdGltZSB0byBhbmltYXRlLgotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxi
YXJTdHlsZUNoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsYmFyU3R5bGVDaGFuZ2Vk
KGludCBuZXdTdHlsZSwgYm9vbCBmb3JjZVVwZGF0ZSk7CiAgICAgdmlydHVhbCB2b2lkIHpvb21B
bmltYXRvclRyYW5zZm9ybUNoYW5nZWQoZmxvYXQsIGZsb2F0LCBmbG9hdCwgWm9vbUFuaW1hdGlv
blN0YXRlKSB7IH0KIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhlIG90aGVyIGNvbnZlcnNp
b24gZnVuY3Rpb25zOyB0aGlzIG9uZSBpcyBlbm91Z2ggdG8gZ2V0IHNjcm9sbGJhciBoaXQgdGVz
dGluZyB3b3JraW5nLgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gOTk5
MTApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4NSw2ICs3ODUsMTEgQEAgdm9pZCBXZWJD
aHJvbWVDbGllbnQ6Om5vdGlmeVNjcm9sbGVyVGh1bQogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpOb3RpZnlTY3JvbGxlclRodW1iSXNWaXNpYmxlSW5SZWN0KHNjcm9s
bGVyVGh1bWIpKTsKIH0KIAordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlY29tbWVuZGVkU2Nyb2xs
YmFyU3R5bGVEaWRDaGFuZ2UoaW50MzJfdCBuZXdTdHlsZSkKK3sKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURpZENoYW5n
ZShuZXdTdHlsZSkpOworfQorCiBib29sIFdlYkNocm9tZUNsaWVudDo6c2hvdWxkUnViYmVyQmFu
ZEluRGlyZWN0aW9uKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CiB7
CiAgICAgQVNTRVJUKGRpcmVjdGlvbiAhPSBXZWJDb3JlOjpTY3JvbGxVcCAmJiBkaXJlY3Rpb24g
IT0gV2ViQ29yZTo6U2Nyb2xsRG93bik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlz
aW9uIDk5OTEwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjE0LDYgKzIxNCw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlQW5pbWF0ZWRTY3JvbGwoKSBjb25zdCBP
VkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlTY3JvbGxlclRodW1iSXNWaXNpYmxl
SW5SZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURpZENoYW5nZShpbnQzMl90IG5ld1N0eWxlKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKFdl
YkNvcmU6OlNjcm9sbERpcmVjdGlvbikgY29uc3QgT1ZFUlJJREU7CiAgICAgCiAgICAgdmlydHVh
bCB2b2lkIG51bVdoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQodW5zaWduZWQpIE9WRVJSSURFOwpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAko
cmV2aXNpb24gOTk5MTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMDUsNyArMTEwNSw3IEBAIHN0YXRpYyBib29s
IGhhbmRsZUNvbnRleHRNZW51RXZlbnQoY29uc3QKICAgICByZXR1cm4gaGFuZGxlZDsKIH0KIAot
c3RhdGljIGJvb2wgaGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBtb3VzZUV2
ZW50LCBQYWdlKiBwYWdlKQorc3RhdGljIGJvb2wgaGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJN
b3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBQYWdlKiBwYWdlLCBib29sIG9ubHlVcGRhdGVTY3JvbGxi
YXJzKQogewogICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOwogICAgIGlmICgh
ZnJhbWUtPnZpZXcoKSkKQEAgLTExMjgsNyArMTEyOCw3IEBAIHN0YXRpYyBib29sIGhhbmRsZU1v
dXNlRXZlbnQoY29uc3QgV2ViTW8KICAgICAgICAgY2FzZSBXZWJDb3JlOjpNb3VzZUV2ZW50UmVs
ZWFzZWQ6CiAgICAgICAgICAgICByZXR1cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVN
b3VzZVJlbGVhc2VFdmVudChwbGF0Zm9ybU1vdXNlRXZlbnQpOwogICAgICAgICBjYXNlIFdlYkNv
cmU6Ok1vdXNlRXZlbnRNb3ZlZDoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPm1vdXNlTW92ZWQocGxhdGZvcm1Nb3VzZUV2ZW50KTsKKyAgICAgICAgICAgIHJldHVy
biBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPm1vdXNlTW92ZWQocGxhdGZvcm1Nb3VzZUV2ZW50LCBv
bmx5VXBkYXRlU2Nyb2xsYmFycyk7CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTE1NCw3ICsxMTU0LDcgQEAgdm9pZCBXZWJQYWdlOjpt
b3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRQogICAgIGlmICghaGFuZGxlZCkgewogICAgICAgICBD
dXJyZW50RXZlbnQgY3VycmVudEV2ZW50KG1vdXNlRXZlbnQpOwogCi0gICAgICAgIGhhbmRsZWQg
PSBoYW5kbGVNb3VzZUV2ZW50KG1vdXNlRXZlbnQsIG1fcGFnZS5nZXQoKSk7CisgICAgICAgIGhh
bmRsZWQgPSBoYW5kbGVNb3VzZUV2ZW50KG1vdXNlRXZlbnQsIG1fcGFnZS5nZXQoKSwgIXdpbmRv
d0lzRm9jdXNlZCgpKTsKICAgICB9CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZFJlY2VpdmVFdmVudChzdGF0aWNfY2FzdDx1aW50MzJfdD4obW91c2VFdmVudC50eXBlKCkp
LCBoYW5kbGVkKSk7CkBAIC0xMTcyLDcgKzExNzIsNyBAQCB2b2lkIFdlYlBhZ2U6Om1vdXNlRXZl
bnRTeW5jRm9yVGVzdGluZyhjCiAKICAgICBpZiAoIWhhbmRsZWQpIHsKICAgICAgICAgQ3VycmVu
dEV2ZW50IGN1cnJlbnRFdmVudChtb3VzZUV2ZW50KTsKLSAgICAgICAgaGFuZGxlZCA9IGhhbmRs
ZU1vdXNlRXZlbnQobW91c2VFdmVudCwgbV9wYWdlLmdldCgpKTsKKyAgICAgICAgaGFuZGxlZCA9
IGhhbmRsZU1vdXNlRXZlbnQobW91c2VFdmVudCwgbV9wYWdlLmdldCgpLCAhd2luZG93SXNGb2N1
c2VkKCkpOwogICAgIH0KIH0KIAo=
</data>
<flag name="commit-queue"
          id="114066"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115235</attachid>
            <date>2011-11-15 13:45:04 -0800</date>
            <delta_ts>2011-11-15 16:42:32 -0800</delta_ts>
            <desc>Patch that probably won&apos;t break builds</desc>
            <filename>for-review-2.txt</filename>
            <type>text/plain</type>
            <size>29458</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDMwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY5IEBACisyMDExLTExLTE1ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzI0MDAKKyAgICAgICAgU2Nyb2xsYmFyIHVpU3RhdGVUcmFuc2l0
aW9uUHJvZ3Jlc3MgcmVxdWlyZXMgdHJhY2tpbmcgdGhlIG1vdXNlIGFsbCB0aGUgdGltZQorICAg
ICAgICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDQwOTMy
OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IGZpcnN0IHBhcnQgb2YgdGhlIHBhdGNoIGRlYWxzIHdpdGggd2hlbiB3ZSBhcmUgaW4gdGhlIG1v
ZGUgb2YgdHJhY2tpbmcgdGhlIAorICAgICAgICBtb3VzZSBhbGwgdGhlIHRpbWUuIFdoZW4gd2Un
cmUgaW4gdGhhdCBtb2RlLCB3ZSB3YW50IHRvIGRvIGFzIGxpdHRsZSB3b3JrIGFzIAorICAgICAg
ICBwb3NzaWJsZSBzbyB0aGF0IHRoaXMgZXh0cmEgdHJhY2tpbmcgaGFzIGxpdHRsZSB0byBubyBw
ZXJmb3JtYW5jZSBpbXBhY3QuIEFsc28sIHdlIAorICAgICAgICBkb24ndCB3YW50IHRvIGNoYW5n
ZSBiYXNpYyBiZWhhdmlvcnMgYnkgaGF2aW5nIG5vcm1hbCB3ZWIgY29udGVudCBob3ZlciBlZmZl
Y3RzIAorICAgICAgICBzdGFydCBoYXBwZW5pbmcgd2hlbiBhIHdpbmRvdyBpcyBpbiB0aGUgYmFj
a2dyb3VuZC4gU28gdGhpcyBwYXJ0IG9mIHRoZSBwYXRjaCAKKyAgICAgICAgaW50cm9kdWNlcyBh
IHdheSB0byBoYW5kbGUgYSBtb3VzZU1vdmVkIGV2ZW50IHRoYXQgd2lsbCBvbmx5IGFmZmVjdCBz
Y3JvbGxiYXJzLgorCisgICAgICAgIEV2ZW50SGFuZGxlcjo6bW91c2VNb3ZlZCgpIGFuZCBFdmVu
dEhhbmRsZXI6OmhhbmRsZU1vdXNlRXZlbnQoKSBib3RoIG5vdyB0YWtlIGEgCisgICAgICAgIGJv
b2xlYW4gcGFyYW1ldGVyIHRoYXQgaW5kaWNhdGVzIGlmIHdlIGFyZSBvbmx5IHVwZGF0aW5nIHNj
cm9sbGJhcnMuIElmIHRoYXQgaXMgCisgICAgICAgIHRoZSBjYXNlLCB0aGVuIHdlIG1ha2Ugb3Vy
IEhpdFRlc3RSZXF1ZXN0IFJlYWRPbmx5LCBhbmQgd2UgcmV0dXJuIGVhcmx5IG9uY2UgCisgICAg
ICAgIHVwZGF0ZUxhc3RTY3JvbGxiYXJVbmRlck1vdXNlKCkgaXMgY2FsbGVkLgorICAgICAgICAq
IFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAg
ICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
Ojptb3VzZU1vdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91
c2VNb3ZlRXZlbnQpOgorCisgICAgICAgIEluIGFkZGl0aW9uIHRvIGNhbGxpbmcgU2Nyb2xsYmFy
Ojptb3VzZUV4aXRlZCgpIHdoZW4gYXBwcm9wcmlhdGUsIHRoaXMgZnVuY3Rpb24gCisgICAgICAg
IG5vdyBjYWxscyBhIG5ldyBmdW5jdGlvbiwgU2Nyb2xsYmFyOjptb3VzZUVudGVyZWQoKSB3aGVu
IGFwcHJvcHJpYXRlLiAKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlTGFz
dFNjcm9sbGJhclVuZGVyTW91c2UpOgorCisgICAgICAgIFNjcm9sbGJhcjo6bW91c2VNb3ZlZCgp
IHVzZWQgdG8gYmUgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgCisgICAgICAgIFNjcm9sbEFuaW1h
dG9yOjptb3VzZUVudGVyZWRTY3JvbGxiYXIoKSwgYnV0IG5vdyBTY3JvbGxiYXI6Om1vdXNlRW50
ZXJlZCgpIHRha2VzIAorICAgICAgICBjYXJlIG9mIHRoYXQgaW5zdGVhZCwgbXVjaCBsaWtlIGhv
dyBTY3JvbGxiYXI6Om1vdXNlRXhpdGVkKCkgdGFrZXMgY2FyZSBvZiBjYWxsaW5nIAorICAgICAg
ICB0aGUgYW5pbWF0b3IncyBleGl0IGZ1bmN0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bGJhci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6Om1vdXNlTW92ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjptb3VzZUVudGVyZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbGJhci5oOgorCisgICAgICAgIFRoaXMgc2Vjb25kIHBhcnQgb2YgdGhlIHBhdGNo
IGRlYWxzIHdpdGggYWRqdXN0aW5nIHRoZSBtb3VzZSB0cmFja2luZyBzZXR0aW5ncyAKKyAgICAg
ICAgd2hlbiB0aGUgc2Nyb2xsYmFyIHN0eWxlIGNoYW5nZXMgZHluYW1pY2FsbHkuIAorCisgICAg
ICAgIFRoaXMgbmV3IENocm9tZUNsaWVudCBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgcmVj
b21tZW5kZWQgc2Nyb2xsYmFyIHN0eWxlIAorICAgICAgICBjaGFuZ2VzLiBUaGlzIHdheSwgV2Vi
S2l0IGNhbiByZXNwb25kIHRvIHRoZSBjaGFuZ2UgYnkgYWRqdXN0aW5nIGl0cyBtb3VzZSAKKyAg
ICAgICAgdHJhY2tpbmcuCisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudDo6cmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURpZENoYW5n
ZSk6CisKKyAgICAgICAgRXhpc3RpbmcgU2Nyb2xsYWJsZUFyZWEgZnVuY3Rpb24gc2Nyb2xsYmFy
U3R5bGVDaGFuZ2VkKCkgbm93IHRha2VzIGFuIGludCAKKyAgICAgICAgaW5kaWNhdGluZyB0aGUg
bmV3IHNjcm9sbGJhciBzdHlsZSBhbmQgYSBib29sIGluZGljYXRpbmcgd2hldGhlciBpdCBpcyBu
ZWNlc3NhcnkgCisgICAgICAgIHRvIGZvcmNlIGFuIHVwZGF0ZS4gSXQgdXNlZCB0byBiZSB0aGUg
Y2FzZSB0aGF0IHRoaXMgZnVuY3Rpb24gd2FzIG9ubHkgdXNlZCB0byAKKyAgICAgICAgZm9yY2Ug
YW4gdXBkYXRlLCBidXQgbm93IHRoYXQgaXQgbXVzdCBhbHNvIGNhbGwgaW50byB0aGUgQ2hyb21l
Q2xpZW50LCBpdCBpcyAKKyAgICAgICAgbmVjZXNzYXJ5IHRvIGluY2x1ZGUgYSBib29sIHRyYWNr
aW5nIHdoZXRoZXIgd2UgbmVlZCB0byBmb3JjZSBhbiB1cGRhdGUuIE5ldyAKKyAgICAgICAgaW1w
bGVtZW50YXRpb24gb24gRnJhbWVWaWV3IGlzIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIENocm9t
ZUNsaWVudCwgYW5kIHRoZW4gdGhhdCAKKyAgICAgICAgY2FsbHMgaW50byB0aGUgcHJlLWV4aXN0
aW5nIFNjcm9sbFZpZXcgZnVuY3Rpb24gZm9yIHRoZSBmb3JjZVVwZGF0ZSBwYXJ0LgorICAgICAg
ICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Ny
b2xsYmFyU3R5bGVDaGFuZ2VkKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmll
dzo6c2Nyb2xsYmFyU3R5bGVDaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3
Lmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGFibGVBcmVhOjpzY3JvbGxiYXJTdHlsZUNoYW5nZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdG9yTWFjOjp1cGRhdGVTY3JvbGxlclN0eWxlKToKKwogMjAxMS0xMS0xNSAgRGF2aWQg
S2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1c2VsZXNzIGNv
bnN0IG1vZGlmaWVyIGZyb20gS1VSTDo6aW5pdApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJl
dmlzaW9uIDEwMDMwNSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjUsNyArMjI1LDcgQEAgX19aTjdXZWJDb3JlMTF3cml0ZVRvRmlsZUVpUEtj
aQogX19aTjdXZWJDb3JlMTJDaHJvbWVDbGllbnQyM3BhaW50Q3VzdG9tT3ZlcmhhbmdBcmVhRVBO
U18xNUdyYXBoaWNzQ29udGV4dEVSS05TXzdJbnRSZWN0RVM1X1M1XwogX19aTjdXZWJDb3JlMTJF
ZGl0aW5nU3R5bGVEMUV2CiBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjEwbW91c2VNb3ZlZEVQ
N05TRXZlbnQKLV9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyMTBtb3VzZU1vdmVkRVJLTlNfMThQ
bGF0Zm9ybU1vdXNlRXZlbnRFCitfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjEwbW91c2VNb3Zl
ZEVSS05TXzE4UGxhdGZvcm1Nb3VzZUV2ZW50RWIKIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVy
MTB3aGVlbEV2ZW50RVA3TlNFdmVudAogX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIxMm1vdXNl
RHJhZ2dlZEVQN05TRXZlbnQKIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyMTRjdXJyZW50TlNF
dmVudEV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDEwMDMw
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTMyNSw2ICszMjUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRDb21wbGV0ZUFuaW1hdGVkU2Nyb2xsKCkgY29uc3QgeyB9CiAgICAgICAgIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5U2Nyb2xsZXJUaHVtYklzVmlzaWJsZUluUmVjdChjb25z
dCBJbnRSZWN0JikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWNvbW1lbmRlZFNjcm9sbGJh
clN0eWxlRGlkQ2hhbmdlKGludCAvKm5ld1N0eWxlKi8pIHsgfQogCiAgICAgICAgIGVudW0gRGlh
bG9nVHlwZSB7CiAgICAgICAgICAgICBBbGVydERpYWxvZyA9IDAsCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAxMDAzMDUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NTQsMTAgKzE1NTQs
MTMgQEAgc3RhdGljIFJlbmRlckxheWVyKiBsYXllckZvck5vZGUoTm9kZSogbgogICAgIHJldHVy
biBsYXllcjsKIH0KIAotYm9vbCBFdmVudEhhbmRsZXI6Om1vdXNlTW92ZWQoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldmVudCkKK2Jvb2wgRXZlbnRIYW5kbGVyOjptb3VzZU1vdmVkKGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIGJvb2wgb25seVVwZGF0ZVNjcm9sbGJhcnMpCiB7
CiAgICAgSGl0VGVzdFJlc3VsdCBob3ZlcmVkTm9kZSA9IEhpdFRlc3RSZXN1bHQoTGF5b3V0UG9p
bnQoKSk7Ci0gICAgYm9vbCByZXN1bHQgPSBoYW5kbGVNb3VzZU1vdmVFdmVudChldmVudCwgJmhv
dmVyZWROb2RlKTsKKyAgICBib29sIHJlc3VsdCA9IGhhbmRsZU1vdXNlTW92ZUV2ZW50KGV2ZW50
LCAmaG92ZXJlZE5vZGUsIG9ubHlVcGRhdGVTY3JvbGxiYXJzKTsKKworICAgIGlmIChvbmx5VXBk
YXRlU2Nyb2xsYmFycykKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgIFBhZ2UqIHBhZ2Ug
PSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQpAQCAtMTU3Nyw3ICsxNTgwLDcgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6Om1vdXNlTW92ZWQoY29uc3QgUGxhdAogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudChjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQsIEhpdFRlc3RSZXN1bHQqIGhvdmVyZWROb2Rl
KQorYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYgbW91c2VFdmVudCwgSGl0VGVzdFJlc3VsdCogaG92ZXJlZE5vZGUsIGJvb2wg
b25seVVwZGF0ZVNjcm9sbGJhcnMpCiB7CiAgICAgLy8gaW4gUmFkYXIgMzcwMzc2OCB3ZSBzYXcg
ZnJlcXVlbnQgY3Jhc2hlcyBhcHBhcmVudGx5IGR1ZSB0byB0aGUKICAgICAvLyBwYXJ0IGJlaW5n
IG51bGwgaGVyZSwgd2hpY2ggc2VlbXMgaW1wb3NzaWJsZSwgc28gY2hlY2sgZm9yIG5pbApAQCAt
MTYwOSwxMiArMTYxMiwxMyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZl
bnQoCiAgICAgaWYgKG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2UgJiYgbV9tb3VzZVByZXNzZWQp
CiAgICAgICAgIHJldHVybiBtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlLT5tb3VzZU1vdmVkKG1v
dXNlRXZlbnQpOwogCi0gICAgLy8gVHJlYXQgbW91c2UgbW92ZSBldmVudHMgd2hpbGUgdGhlIG1v
dXNlIGlzIHByZXNzZWQgYXMgInJlYWQtb25seSIgaW4gcHJlcGFyZU1vdXNlRXZlbnQKLSAgICAv
LyBpZiB3ZSBhcmUgYWxsb3dlZCB0byBzZWxlY3QuCi0gICAgLy8gVGhpcyBtZWFucyB0aGF0IDpo
b3ZlciBhbmQgOmFjdGl2ZSBmcmVlemUgaW4gdGhlIHN0YXRlIHRoZXkgd2VyZSBpbiB3aGVuIHRo
ZSBtb3VzZQotICAgIC8vIHdhcyBwcmVzc2VkLCByYXRoZXIgdGhhbiB1cGRhdGluZyBmb3Igbm9k
ZXMgdGhlIG1vdXNlIG1vdmVzIG92ZXIgYXMgeW91IGhvbGQgdGhlIG1vdXNlIGRvd24uCisgICAg
Ly8gTW91c2UgZXZlbnRzIHNob3VsZCBiZSB0cmVhdGVkIGFzICJyZWFkLW9ubHkiIGluIHByZXBh
cmVNb3VzZUV2ZW50IGlmIHRoZSBtb3VzZSBpcyAKKyAgICAvLyBwcmVzc2VkIGFuZCB3ZSBhcmUg
YWxsb3dlZCB0byBzZWxlY3QgT1IgaWYgd2UncmUgdXBkYXRpbmcgb25seSBzY3JvbGxiYXJzLiBU
aGlzIAorICAgIC8vIG1lYW5zIHRoYXQgOmhvdmVyIGFuZCA6YWN0aXZlIGZyZWV6ZSBpbiB0aGUg
c3RhdGUgdGhleSB3ZXJlIGluLCByYXRoZXIgdGhhbiB1cGRhdGluZyAKKyAgICAvLyBmb3Igbm9k
ZXMgdGhlIG1vdXNlIG1vdmVzIG92ZXIgd2hpbGUgeW91IGhvbGQgdGhlIG1vdXNlIGRvd24gKGlu
IHRoZSBtb3VzZSBwcmVzc2VkIGNhc2UpCisgICAgLy8gb3Igd2hpbGUgdGhlIHdpbmRvdyBpcyBu
b3Qga2V5IChhcyBpbiB0aGUgb25seVVwZGF0ZVNjcm9sbGJhcnMgY2FzZSkuCiAgICAgSGl0VGVz
dFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6Ok1v
dXNlTW92ZTsKLSAgICBpZiAobV9tb3VzZVByZXNzZWQgJiYgbV9tb3VzZURvd25NYXlTdGFydFNl
bGVjdCkKKyAgICBpZiAoKG1fbW91c2VQcmVzc2VkICYmIG1fbW91c2VEb3duTWF5U3RhcnRTZWxl
Y3QpIHx8IG9ubHlVcGRhdGVTY3JvbGxiYXJzKQogICAgICAgICBoaXRUeXBlIHw9IEhpdFRlc3RS
ZXF1ZXN0OjpSZWFkT25seTsKICAgICBpZiAobV9tb3VzZVByZXNzZWQpCiAgICAgICAgIGhpdFR5
cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZTsKQEAgLTE2NDEsNiArMTY0NSw4IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudCgKICAgICAgICAgICAgIHNjcm9sbGJh
ciA9IG1ldi5zY3JvbGxiYXIoKTsKIAogICAgICAgICB1cGRhdGVMYXN0U2Nyb2xsYmFyVW5kZXJN
b3VzZShzY3JvbGxiYXIsICFtX21vdXNlUHJlc3NlZCk7CisgICAgICAgIGlmIChvbmx5VXBkYXRl
U2Nyb2xsYmFycykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGJvb2wg
c3dhbGxvd0V2ZW50ID0gZmFsc2U7CkBAIC0zMTQxLDYgKzMxNDcsMTEgQEAgdm9pZCBFdmVudEhh
bmRsZXI6OnVwZGF0ZUxhc3RTY3JvbGxiYXJVbgogICAgICAgICAvLyBTZW5kIG1vdXNlIGV4aXRl
ZCB0byB0aGUgb2xkIHNjcm9sbGJhci4KICAgICAgICAgaWYgKG1fbGFzdFNjcm9sbGJhclVuZGVy
TW91c2UpCiAgICAgICAgICAgICBtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlLT5tb3VzZUV4aXRl
ZCgpOworCisgICAgICAgIC8vIFNlbmQgbW91c2UgZW50ZXJlZCBpZiB3ZSdyZSBzZXR0aW5nIGEg
bmV3IHNjcm9sbGJhci4KKyAgICAgICAgaWYgKHNjcm9sbGJhciAmJiBzZXRMYXN0KQorICAgICAg
ICAgICAgc2Nyb2xsYmFyLT5tb3VzZUVudGVyZWQoKTsKKwogICAgICAgICBtX2xhc3RTY3JvbGxi
YXJVbmRlck1vdXNlID0gc2V0TGFzdCA/IHNjcm9sbGJhciA6IDA7CiAgICAgfQogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCShyZXZpc2lvbiAxMDAzMDUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsMTIgKzE0
OCwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCB0YWJzVG9MaW5rcyhLZXlib2FyZEV2ZW50KikgY29u
c3Q7CiAgICAgYm9vbCB0YWJzVG9BbGxGb3JtQ29udHJvbHMoS2V5Ym9hcmRFdmVudCopIGNvbnN0
OwogCi0gICAgYm9vbCBtb3VzZU1vdmVkKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAg
IGJvb2wgbW91c2VNb3ZlZChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBib29sIG9ubHlVcGRh
dGVTY3JvbGxiYXJzID0gZmFsc2UpOwogCiAgICAgdm9pZCBsb3N0TW91c2VDYXB0dXJlKCk7CiAK
ICAgICBib29sIGhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
KTsKLSAgICBib29sIGhhbmRsZU1vdXNlTW92ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYsIEhpdFRlc3RSZXN1bHQqIGhvdmVyZWROb2RlID0gMCk7CisgICAgYm9vbCBoYW5kbGVNb3Vz
ZU1vdmVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBIaXRUZXN0UmVzdWx0KiBob3Zl
cmVkTm9kZSA9IDAsIGJvb2wgb25seVVwZGF0ZVNjcm9sbGJhcnMgPSBmYWxzZSk7CiAgICAgYm9v
bCBoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKICAg
ICBib29sIGhhbmRsZVdoZWVsRXZlbnQoUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAgICAgdm9pZCBk
ZWZhdWx0V2hlZWxFdmVudEhhbmRsZXIoTm9kZSosIFdoZWVsRXZlbnQqKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDEwMDMwNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ0NCw2ICsyNDQ0LDE5IEBA
IGJvb2wgRnJhbWVWaWV3OjpzaG91bGRTdXNwZW5kU2Nyb2xsQW5pbWEKICAgICByZXR1cm4gbV9m
cmFtZS0+bG9hZGVyKCktPnN0YXRlKCkgIT0gRnJhbWVTdGF0ZUNvbXBsZXRlOwogfQogCit2b2lk
IEZyYW1lVmlldzo6c2Nyb2xsYmFyU3R5bGVDaGFuZ2VkKGludCBuZXdTdHlsZSwgYm9vbCBmb3Jj
ZVVwZGF0ZSkKK3sKKyAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGlmICgh
cGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChwYWdlLT5tYWluRnJhbWUoKSAhPSBtX2Zy
YW1lKQorICAgICAgICByZXR1cm47CisgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5yZWNv
bW1lbmRlZFNjcm9sbGJhclN0eWxlRGlkQ2hhbmdlKG5ld1N0eWxlKTsKKworICAgIGlmIChmb3Jj
ZVVwZGF0ZSkKKyAgICAgICAgU2Nyb2xsVmlldzo6c2Nyb2xsYmFyU3R5bGVDaGFuZ2VkKG5ld1N0
eWxlLCBmb3JjZVVwZGF0ZSk7Cit9CisKIHZvaWQgRnJhbWVWaWV3OjpzZXRBbmltYXRvcnNBcmVB
Y3RpdmUoKQogewogICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmgJKHJldmlzaW9uIDEwMDMwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5Miw2ICsyOTIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBmbHVzaEFueVBlbmRpbmdQb3N0TGF5b3V0VGFza3MoKTsKIAogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygpIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCBzY3JvbGxiYXJTdHlsZUNoYW5nZWQoaW50IG5ld1N0eWxlLCBib29sIGZvcmNlVXBk
YXRlKTsKIAogICAgIHZvaWQgc2V0QW5pbWF0b3JzQXJlQWN0aXZlKCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCShyZXZpc2lvbiAxMDAzMDUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYx
LDggKzk2MSwxMiBAQCBib29sIFNjcm9sbFZpZXc6OmlzU2Nyb2xsQ29ybmVyVmlzaWJsZSgpCiAg
ICAgcmV0dXJuICFzY3JvbGxDb3JuZXJSZWN0KCkuaXNFbXB0eSgpOwogfQogCi12b2lkIFNjcm9s
bFZpZXc6OnNjcm9sbGJhclN0eWxlQ2hhbmdlZCgpCit2b2lkIFNjcm9sbFZpZXc6OnNjcm9sbGJh
clN0eWxlQ2hhbmdlZChpbnQgbmV3U3R5bGUsIGJvb2wgZm9yY2VVcGRhdGUpCiB7CisgICAgVU5V
U0VEX1BBUkFNKG5ld1N0eWxlKTsKKyAgICBpZiAoIWZvcmNlVXBkYXRlKQorICAgICAgICByZXR1
cm47CisKICAgICBjb250ZW50c1Jlc2l6ZWQoKTsKICAgICB1cGRhdGVTY3JvbGxiYXJzKHNjcm9s
bE9mZnNldCgpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgJKHJl
dmlzaW9uIDEwMDMwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAko
d29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpZENvbXBsZXRlUnViYmVyQmFuZChjb25zdCBJbnRTaXplJikgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIG5vdGlmeVBhZ2VUaGF0Q29udGVudEFyZWFXaWxsUGFpbnQoKSBjb25zdDsKICAgICB2
aXJ0dWFsIGJvb2wgaXNTY3JvbGxDb3JuZXJWaXNpYmxlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2
b2lkIHNjcm9sbGJhclN0eWxlQ2hhbmdlZCgpOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJT
dHlsZUNoYW5nZWQoaW50IG5ld1N0eWxlLCBib29sIGZvcmNlVXBkYXRlKTsKIAogICAgIC8vIE5P
VEU6IFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBvdmVycmlkZW4gc2V0U2Nyb2xs
T2Zmc2V0IGZyb20gU2Nyb2xsYWJsZUFyZWEuCiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvKGNv
bnN0IEludFNpemUmIG5ld09mZnNldCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGFibGVBcmVhLmgJKHJldmlzaW9uIDEwMDMwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlQW5pbWF0ZWRTY3JvbGwoKSBjb25z
dCB7IH0KICAgICAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlv
bnMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNjcm9sbGJhclN0
eWxlQ2hhbmdlZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJTdHlsZUNoYW5nZWQo
aW50IC8qbmV3U3R5bGUqLywgYm9vbCAvKmZvcmNlVXBkYXRlKi8pIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRWaXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QoY29uc3QgSW50UmVjdCYpIHsgfQogCiAg
ICAgdmlydHVhbCBib29sIGlzT25BY3RpdmVQYWdlKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgcmV0dXJuIHRydWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGJhci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFy
LmNwcAkocmV2aXNpb24gMTAwMzA1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YmFyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ2LDExICszNDYsNiBAQCBib29sIFNjcm9sbGJh
cjo6bW91c2VNb3ZlZChjb25zdCBQbGF0Zm9yCiAgICAgaWYgKG1fcHJlc3NlZFBhcnQgIT0gTm9Q
YXJ0KQogICAgICAgICBtX3ByZXNzZWRQb3MgPSAob3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFs
U2Nyb2xsYmFyID8gY29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3MoKSkueCgpIDog
Y29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3MoKSkueSgpKTsKIAotICAgIGlmICht
X2hvdmVyZWRQYXJ0ID09IE5vUGFydCkgewotICAgICAgICBpZiAobV9zY3JvbGxhYmxlQXJlYSkK
LSAgICAgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbEFuaW1hdG9yKCktPm1vdXNlRW50
ZXJlZFNjcm9sbGJhcih0aGlzKTsKLSAgICB9Ci0KICAgICBTY3JvbGxiYXJQYXJ0IHBhcnQgPSB0
aGVtZSgpLT5oaXRUZXN0KHRoaXMsIGV2dCk7CiAgICAgaWYgKHBhcnQgIT0gbV9ob3ZlcmVkUGFy
dCkgewogICAgICAgICBpZiAobV9wcmVzc2VkUGFydCAhPSBOb1BhcnQpIHsKQEAgLTM3Myw2ICsz
NjgsMTMgQEAgYm9vbCBTY3JvbGxiYXI6Om1vdXNlTW92ZWQoY29uc3QgUGxhdGZvcgogICAgIHJl
dHVybiB0cnVlOwogfQogCitib29sIFNjcm9sbGJhcjo6bW91c2VFbnRlcmVkKCkKK3sKKyAgICBp
ZiAobV9zY3JvbGxhYmxlQXJlYSkKKyAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS0+c2Nyb2xsQW5p
bWF0b3IoKS0+bW91c2VFbnRlcmVkU2Nyb2xsYmFyKHRoaXMpOworICAgIHJldHVybiB0cnVlOwor
fQorCiBib29sIFNjcm9sbGJhcjo6bW91c2VFeGl0ZWQoKQogewogICAgIGlmIChtX3Njcm9sbGFi
bGVBcmVhKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgJKHJldmlzaW9uIDEw
MDMwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCSh3b3JraW5nIGNv
cHkpCkBAIC05NCw2ICs5NCw3IEBAIHB1YmxpYzoKICAgICAvLyB3aGVuIHRoZSBtb3VzZSB3ZW50
IGRvd24gaW4gYSBzY3JvbGxiYXIsIHNpbmNlIGl0IGlzIGFzc3VtZWQgdGhlIHNjcm9sbGJhciB3
aWxsIHN0YXJ0CiAgICAgLy8gZ3JhYmJpbmcgYWxsIGV2ZW50cyBpbiB0aGF0IGNhc2UgYW55d2F5
LgogICAgIGJvb2wgbW91c2VNb3ZlZChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICBi
b29sIG1vdXNlRW50ZXJlZCgpOwogICAgIGJvb2wgbW91c2VFeGl0ZWQoKTsKICAgICAKICAgICAv
LyBVc2VkIGJ5IHNvbWUgcGxhdGZvcm0gc2Nyb2xsYmFycyB0byBrbm93IHdoZW4gdGhleSd2ZSBi
ZWVuIHJlbGVhc2VkIGZyb20gY2FwdHVyZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0JKHJldmlzaW9uIDEwMDMwNSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTQ2NCw4ICsxNDY0LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6dXBkYXRl
U2Nyb2xsZXJTdAogCiAgICAgLy8gSWYgbmVlZHNTY3JvbGxlclN0eWxlVXBkYXRlKCkgaXMgdHJ1
ZSwgdGhlbiB0aGUgcGFnZSBpcyByZXN0b3JpbmcgZnJvbSB0aGUgcGFnZSBjYWNoZSwgYW5kIAog
ICAgIC8vIGEgcmVsYXlvdXQgd2lsbCBoYXBwZW4gb24gaXRzIG93bi4gT3RoZXJ3aXNlLCB3ZSBt
dXN0IGluaXRpYXRlIGEgcmUtbGF5b3V0IG91cnNlbHZlcy4KLSAgICBpZiAoIW5lZWRzU2Nyb2xs
ZXJTdHlsZVVwZGF0ZSgpKQotICAgICAgICBzY3JvbGxhYmxlQXJlYSgpLT5zY3JvbGxiYXJTdHls
ZUNoYW5nZWQoKTsKKyAgICBzY3JvbGxhYmxlQXJlYSgpLT5zY3JvbGxiYXJTdHlsZUNoYW5nZWQo
bmV3U3R5bGUsICFuZWVkc1Njcm9sbGVyU3R5bGVVcGRhdGUoKSk7CiAKICAgICBzZXROZWVkc1Nj
cm9sbGVyU3R5bGVVcGRhdGUoZmFsc2UpOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTAw
MzA1KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNDkgQEAKKzIwMTEtMTEtMTUgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjQwMAorICAg
ICAgICBTY3JvbGxiYXIgdWlTdGF0ZVRyYW5zaXRpb25Qcm9ncmVzcyByZXF1aXJlcyB0cmFja2lu
ZyB0aGUgbW91c2UgYWxsIHRoZSB0aW1lCisgICAgICAgIC1hbmQgY29ycmVzcG9uZGluZy0KKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwNDA5MzI4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFNldCB1cCBvdXIgaW5pdGlhbCB0cmFja2luZyBhcmVh
IGJhc2VkIG9uIHRoZSBjdXJyZW50bHkgcmVjb21tZW5kZWQgc2Nyb2xsYmFyIAorICAgICAgICBz
dHlsZS4gVHJhY2sgdGhlIG1vdXNlIGFsbCB0aGUgdGltZSBpZiB0aGUgc3R5bGUgaXMgbGVnYWN5
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tW
aWV3IGluaXRXaXRoRnJhbWU6Y29udGV4dFJlZjpwYWdlR3JvdXBSZWY6XSk6CisKKyAgICAgICAg
Tm93IHRoYXQgd2UgbWlnaHQgYmUgZ2V0dGluZyBtb3VzZU1vdmVkIGV2ZW50cyBhbGwgdGhlIHRp
bWUgZXZlbiB3aGVuIHRoZSB3aW5kb3cgCisgICAgICAgIGlzIG5vdCBrZXksIG1ha2Ugc3VyZSB3
ZSBvcHQgaW50byB0aGUgbmV3ICdvbmx5VXBkYXRlU2Nyb2xsYmFycycgbW9kZSBmb3IgCisgICAg
ICAgIEV2ZW50SGFuZGxlcjo6bW91c2VNb3ZlZCgpIHdoZW4gdGhlIHdpbmRvdyBpcyBub3QgZm9j
dXNlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmhhbmRsZU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpt
b3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bW91c2VFdmVudFN5bmNGb3JU
ZXN0aW5nKToKKworICAgICAgICBUaGVzZSBuZXcgZnVuY3Rpb25zIHRha2UgY2FyZSBvZiBwYXNz
aW5nIGFsb25nIHRoZSAKKyAgICAgICAgcmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURpZENoYW5n
ZSgpIG1lc3NhZ2UgdGhhdCBvcmlnaW5hdGVzIGluIHRoZSBDaHJvbWVDbGllbnQuIAorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNvbW1lbmRlZFNjcm9sbGJhclN0eWxl
RGlkQ2hhbmdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkNocm9tZUNsaWVudDo6cmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURpZENoYW5nZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKwor
ICAgICAgICBUaGlzIGlzIHdoZXJlIHdlIGFjdHVhbGx5IHJlc3BvbmQgdG8gdGhlIHJlY29tbWVu
ZGVkU2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2UgCisgICAgICAgIG1lc3NhZ2UuIFdlIHJlbW92ZSB0
aGUgZXhpc3RpbmcgdHJhY2tpbmcgYXJlYSBhbmQgY3JlYXRlIGEgbmV3IHRyYWNraW5nIGFyZWEg
d2l0aCAKKyAgICAgICAgdGhlIGFwcHJvcHJpYXRlIHRyYWNraW5nIG9wdGlvbnMuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW06CisgICAgICAgIChXZWJLaXQ6
OlBhZ2VDbGllbnRJbXBsOjpyZWNvbW1lbmRlZFNjcm9sbGJhclN0eWxlRGlkQ2hhbmdlKToKKwor
ICAgICAgICBCdWlsdEluUERGVmlldyBpbmhlcml0cyBmcm9tIFNjcm9sbGFibGVBcmVhLCBzbyBz
Y3JvbGxiYXJTdHlsZUNoYW5nZWQoKSBtdXN0IG5vdyAKKyAgICAgICAgdGFrZSB0d28gcGFyYW1l
dGVycyBsaWtlIHRoZSBvbmUgaW4gU2Nyb2xsYWJsZUFyZWEuCisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJ1aWx0
SW5QREZWaWV3OjpzY3JvbGxiYXJTdHlsZUNoYW5nZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaDoKKwogMjAxMS0xMS0xNCAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEhvc3RXaW5kb3cgaW52YWxpZGF0
aW9uIGZ1bmN0aW9ucyBzaG91bGQgdXNlIHJvb3QgdmlldyBjb29yZGluYXRlcwpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCShyZXZpc2lvbiAxMDAzMDUpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcs
NiArMTc3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBh
bmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpID0gMDsKICAg
ICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihXZWJDb3JlOjpSZWFz
b25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJl
Y29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6RWRpdG9yQ2xpZW50OjpBdXRvY29y
cmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvbW1l
bmRlZFNjcm9sbGJhclN0eWxlRGlkQ2hhbmdlKGludDMyX3QgbmV3U3R5bGUpID0gMDsKICAgICAK
ICAgICB2aXJ0dWFsIFdLVmlldyogd2tWaWV3KCkgY29uc3QgPSAwOwogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMTAwMzA1
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyNjUsNiArMzI2NSwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bm90aWZ5U2Ny
b2xsZXJUaHVtYklzCiAgICAgbV92aXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QgPSBzY3JvbGxlclRo
dW1iOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURp
ZENoYW5nZShpbnQzMl90IG5ld1N0eWxlKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBtX3Bh
Z2VDbGllbnQtPnJlY29tbWVuZGVkU2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2UobmV3U3R5bGUpOwor
I2VuZGlmCit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VTY3JvbGxiYXJzRm9yTWFp
bkZyYW1lKGJvb2wgaGFzSG9yaXpvbnRhbFNjcm9sbGJhciwgYm9vbCBoYXNWZXJ0aWNhbFNjcm9s
bGJhcikKIHsKICAgICBtX21haW5GcmFtZUhhc0hvcml6b250YWxTY3JvbGxiYXIgPSBoYXNIb3Jp
em9udGFsU2Nyb2xsYmFyOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAkocmV2aXNpb24gMTAwMzA1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NjAsNiArNjYwLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCBnZW9s
b2NhdGlvbklELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllcik7CiAg
ICAgdm9pZCBydW5Nb2RhbCgpOwogICAgIHZvaWQgbm90aWZ5U2Nyb2xsZXJUaHVtYklzVmlzaWJs
ZUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgdm9pZCByZWNvbW1lbmRlZFNj
cm9sbGJhclN0eWxlRGlkQ2hhbmdlKGludDMyX3QgbmV3U3R5bGUpOwogICAgIHZvaWQgZGlkQ2hh
bmdlU2Nyb2xsYmFyc0Zvck1haW5GcmFtZShib29sIGhhc0hvcml6b250YWxTY3JvbGxiYXIsIGJv
b2wgaGFzVmVydGljYWxTY3JvbGxiYXIpOwogICAgIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0
UGlubmluZ0Zvck1haW5GcmFtZShib29sIHBpbm5lZFRvTGVmdFNpZGUsIGJvb2wgcGlubmVkVG9S
aWdodFNpZGUpOwogICAgIHZvaWQgZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbihjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTAwMzA1KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAt
NjEsNiArNjEsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIFByaW50RnJhbWUo
dWludDY0X3QgZnJhbWVJRCkgLT4gKCkKICAgICBSdW5Nb2RhbCgpCiAgICAgTm90aWZ5U2Nyb2xs
ZXJUaHVtYklzVmlzaWJsZUluUmVjdChXZWJDb3JlOjpJbnRSZWN0IHNjcm9sbGVyVGh1bWIpCisg
ICAgUmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURpZENoYW5nZShpbnQzMl90IG5ld1N0eWxlKQog
ICAgIERpZENoYW5nZVNjcm9sbGJhcnNGb3JNYWluRnJhbWUoYm9vbCBoYXNIb3Jpem9udGFsU2Ny
b2xsYmFyLCBib29sIGhhc1ZlcnRpY2FsU2Nyb2xsYmFyKQogICAgIERpZENoYW5nZVNjcm9sbE9m
ZnNldFBpbm5pbmdGb3JNYWluRnJhbWUoYm9vbCBoYXNIb3Jpem9udGFsU2Nyb2xsYmFyLCBib29s
IGhhc1ZlcnRpY2FsU2Nyb2xsYmFyKQogICAgIERpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4oV1RG
OjpTdHJpbmcgbWltZVR5cGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9QYWdlQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgJKHJldmlzaW9uIDEwMDMwNSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyMiw2ICsxMjIsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3ND
b3JyZWN0aW9uUGFuZWxTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9u
UGFuZWwpOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdl
YkNvcmU6OkVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOwog
CisgICAgdmlydHVhbCB2b2lkIHJlY29tbWVuZGVkU2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2UoaW50
MzJfdCBuZXdTdHlsZSk7CisKICAgICB2aXJ0dWFsIFdLVmlldyogd2tWaWV3KCkgY29uc3QgeyBy
ZXR1cm4gbV93a1ZpZXc7IH0KIAogICAgIFdLVmlldyogbV93a1ZpZXc7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQkocmV2
aXNpb24gMTAwMzA1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNs
aWVudEltcGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ2MCw2ICs0NjAsMzQgQEAgdm9pZCBQYWdl
Q2xpZW50SW1wbDo6cmVjb3JkQXV0b2NvcnJlY3RpbwogI2VuZGlmCiB9CiAKK3ZvaWQgUGFnZUNs
aWVudEltcGw6OnJlY29tbWVuZGVkU2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2UoaW50MzJfdCBuZXdT
dHlsZSkKK3sKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisgICAgTlNB
cnJheSAqdHJhY2tpbmdBcmVhcyA9IFttX3drVmlldyB0cmFja2luZ0FyZWFzXTsKKyAgICBOU1VJ
bnRlZ2VyIGNvdW50ID0gW3RyYWNraW5nQXJlYXMgY291bnRdOworICAgIEFTU0VSVChjb3VudCA9
PSAxKTsKKyAgICAKKyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKQor
ICAgICAgICBbbV93a1ZpZXcgcmVtb3ZlVHJhY2tpbmdBcmVhOlt0cmFja2luZ0FyZWFzIG9iamVj
dEF0SW5kZXg6aV1dOworCisgICAgLy8gTm93IHJlLWNyZWF0ZSBhIHRyYWNraW5nIGFyZWEgd2l0
aCB0aGUgYXBwcm9wcmlhdGUgb3B0aW9ucyBnaXZlbiB0aGUgbmV3IHNjcm9sbGJhciBzdHlsZQor
ICAgIE5TVHJhY2tpbmdBcmVhT3B0aW9ucyBvcHRpb25zID0gTlNUcmFja2luZ01vdXNlTW92ZWQg
fCBOU1RyYWNraW5nTW91c2VFbnRlcmVkQW5kRXhpdGVkIHwgTlNUcmFja2luZ0luVmlzaWJsZVJl
Y3Q7CisgICAgaWYgKG5ld1N0eWxlID09IE5TU2Nyb2xsZXJTdHlsZUxlZ2FjeSkKKyAgICAgICAg
b3B0aW9ucyB8PSBOU1RyYWNraW5nQWN0aXZlQWx3YXlzOworICAgIGVsc2UKKyAgICAgICAgb3B0
aW9ucyB8PSBOU1RyYWNraW5nQWN0aXZlSW5LZXlXaW5kb3c7CisKKyAgICBOU1RyYWNraW5nQXJl
YSAqdHJhY2tpbmdBcmVhID0gW1tOU1RyYWNraW5nQXJlYSBhbGxvY10gaW5pdFdpdGhSZWN0Oltt
X3drVmlldyBmcmFtZV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOm9wdGlvbnMKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG93bmVyOm1f
d2tWaWV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1c2VySW5mbzpuaWxdOworICAgIFttX3drVmlldyBhZGRUcmFja2luZ0Fy
ZWE6dHJhY2tpbmdBcmVhXTsKKyAgICBbdHJhY2tpbmdBcmVhIHJlbGVhc2VdOworI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0obmV3U3R5bGUpOworI2VuZGlmCit9CisKIGJvb2wgUGFnZUNsaWVudElt
cGw6OmV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JT
dHJpbmcpCiB7CiAgICAgcmV0dXJuIFttX3drVmlldyBfZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2Vs
ZWN0b3I6TlNTZWxlY3RvckZyb21TdHJpbmcoc2VsZWN0b3JTdHJpbmcpXTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0JKHJldmlzaW9uIDEwMDMwNSkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjY0MCw4ICsyNjQwLDE5IEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClm
cmFtZSBjb250ZXgKICAgICBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSgpOwogICAgIFJ1bkxv
b3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogCisgICAgLy8gTGVnYWN5IHN0eWxlIHNjcm9s
bGJhcnMgaGF2ZSBkZXNpZ24gZGV0YWlscyB0aGF0IHJlbHkgb24gdHJhY2tpbmcgdGhlIG1vdXNl
IGFsbCB0aGUgdGltZS4KKyAgICBOU1RyYWNraW5nQXJlYU9wdGlvbnMgb3B0aW9ucyA9IE5TVHJh
Y2tpbmdNb3VzZU1vdmVkIHwgTlNUcmFja2luZ01vdXNlRW50ZXJlZEFuZEV4aXRlZCB8IE5TVHJh
Y2tpbmdJblZpc2libGVSZWN0OworI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFS
RCkKKyAgICBpZiAoV0tSZWNvbW1lbmRlZFNjcm9sbGVyU3R5bGUoKSA9PSBOU1Njcm9sbGVyU3R5
bGVMZWdhY3kpCisgICAgICAgIG9wdGlvbnMgfD0gTlNUcmFja2luZ0FjdGl2ZUFsd2F5czsKKyAg
ICBlbHNlCisgICAgICAgIG9wdGlvbnMgfD0gTlNUcmFja2luZ0FjdGl2ZUluS2V5V2luZG93Owor
I2Vsc2UKKyAgICBvcHRpb25zIHw9IE5TVHJhY2tpbmdBY3RpdmVJbktleVdpbmRvdzsKKyNlbmRp
ZgorCiAgICAgTlNUcmFja2luZ0FyZWEgKnRyYWNraW5nQXJlYSA9IFtbTlNUcmFja2luZ0FyZWEg
YWxsb2NdIGluaXRXaXRoUmVjdDpmcmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6KE5TVHJhY2tpbmdNb3Vz
ZU1vdmVkIHwgTlNUcmFja2luZ01vdXNlRW50ZXJlZEFuZEV4aXRlZCB8IE5TVHJhY2tpbmdBY3Rp
dmVJbktleVdpbmRvdyB8IE5TVHJhY2tpbmdJblZpc2libGVSZWN0KQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6
b3B0aW9ucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3duZXI6c2VsZgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlckluZm86bmlsXTsKICAgICBb
c2VsZiBhZGRUcmFja2luZ0FyZWE6dHJhY2tpbmdBcmVhXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuY3Bw
CShyZXZpc2lvbiAxMDAzMDUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL0J1aWx0SW5QREZWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcyLDggKzY3MiwxMiBA
QCBib29sIEJ1aWx0SW5QREZWaWV3Ojppc09uQWN0aXZlUGFnZSgpIGNvCiAgICAgcmV0dXJuICFw
bHVnaW5WaWV3KCktPmZyYW1lKCktPmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCk7CiB9CiAKLXZv
aWQgQnVpbHRJblBERlZpZXc6OnNjcm9sbGJhclN0eWxlQ2hhbmdlZCgpCit2b2lkIEJ1aWx0SW5Q
REZWaWV3OjpzY3JvbGxiYXJTdHlsZUNoYW5nZWQoaW50IG5ld1N0eWxlLCBib29sIGZvcmNlVXBk
YXRlKQogeworICAgIFVOVVNFRF9QQVJBTShuZXdTdHlsZSk7CisgICAgaWYgKCFmb3JjZVVwZGF0
ZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgLy8gSWYgdGhlIFBERiB3YXMgc2Nyb2xsZWQgYWxs
IHRoZSB3YXkgdG8gYm90dG9tIHJpZ2h0IGFuZCBzY3JvbGxiYXJzIGNoYW5nZSB0byBvdmVybGF5
IHN0eWxlLCB3ZSBkb24ndCB3YW50IHRvIGRpc3BsYXkgd2hpdGUgcmVjdGFuZ2xlcyB3aGVyZSBz
Y3JvbGxiYXJzIHdlcmUuCiAgICAgSW50UG9pbnQgbmV3U2Nyb2xsT2Zmc2V0ID0gSW50UG9pbnQo
bV9zY3JvbGxPZmZzZXQpLnNocnVua1RvKG1heGltdW1TY3JvbGxQb3NpdGlvbigpKTsKICAgICBz
ZXRTY3JvbGxPZmZzZXQobmV3U2Nyb2xsT2Zmc2V0KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3LmgJKHJldmlz
aW9uIDEwMDMwNSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVp
bHRJblBERlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDcgKzEzNCw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBib29sIGlzT25BY3RpdmVQYWdlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2
b2lkIGRpc2Nvbm5lY3RGcm9tUGFnZSgpIHsgbV9wYWdlID0gMDsgfQogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
IC8vIElmIHdlIHJldHVybiB0cnVlLCBTY3JvbGxBbmltYXRvck1hYyB3aWxsIGtlZXAgY3ljbGlu
ZyBhIHRpbWVyIGZvcmV2ZXIsIHdhaXRpbmcgZm9yIGEgZ29vZCB0aW1lIHRvIGFuaW1hdGUuCi0g
ICAgdmlydHVhbCB2b2lkIHNjcm9sbGJhclN0eWxlQ2hhbmdlZCgpOworICAgIHZpcnR1YWwgdm9p
ZCBzY3JvbGxiYXJTdHlsZUNoYW5nZWQoaW50IG5ld1N0eWxlLCBib29sIGZvcmNlVXBkYXRlKTsK
ICAgICB2aXJ0dWFsIHZvaWQgem9vbUFuaW1hdG9yVHJhbnNmb3JtQ2hhbmdlZChmbG9hdCwgZmxv
YXQsIGZsb2F0LCBab29tQW5pbWF0aW9uU3RhdGUpIHsgfQogCiAgICAgLy8gRklYTUU6IEltcGxl
bWVudCB0aGUgb3RoZXIgY29udmVyc2lvbiBmdW5jdGlvbnM7IHRoaXMgb25lIGlzIGVub3VnaCB0
byBnZXQgc2Nyb2xsYmFyIGhpdCB0ZXN0aW5nIHdvcmtpbmcuCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCShyZXZpc2lvbiAxMDAzMDUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4
NSw2ICs3ODUsMTEgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6Om5vdGlmeVNjcm9sbGVyVGh1bQog
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpOb3RpZnlTY3JvbGxlclRo
dW1iSXNWaXNpYmxlSW5SZWN0KHNjcm9sbGVyVGh1bWIpKTsKIH0KIAordm9pZCBXZWJDaHJvbWVD
bGllbnQ6OnJlY29tbWVuZGVkU2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2UoaW50MzJfdCBuZXdTdHls
ZSkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVjb21tZW5k
ZWRTY3JvbGxiYXJTdHlsZURpZENoYW5nZShuZXdTdHlsZSkpOworfQorCiBib29sIFdlYkNocm9t
ZUNsaWVudDo6c2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKFdlYkNvcmU6OlNjcm9sbERpcmVj
dGlvbiBkaXJlY3Rpb24pIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRpcmVjdGlvbiAhPSBXZWJDb3Jl
OjpTY3JvbGxVcCAmJiBkaXJlY3Rpb24gIT0gV2ViQ29yZTo6U2Nyb2xsRG93bik7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDEwMDMwNSkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTIxNCw2ICsyMTQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0
ZUFuaW1hdGVkU2Nyb2xsKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgbm90
aWZ5U2Nyb2xsZXJUaHVtYklzVmlzaWJsZUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlY29tbWVuZGVkU2Nyb2xsYmFyU3R5bGVEaWRD
aGFuZ2UoaW50MzJfdCBuZXdTdHlsZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24pIGNvbnN0IE9W
RVJSSURFOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBudW1XaGVlbEV2ZW50SGFuZGxlcnNDaGFu
Z2VkKHVuc2lnbmVkKSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDEwMDMwNSkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEw
NSw3ICsxMTA1LDcgQEAgc3RhdGljIGJvb2wgaGFuZGxlQ29udGV4dE1lbnVFdmVudChjb25zdAog
ICAgIHJldHVybiBoYW5kbGVkOwogfQogCi1zdGF0aWMgYm9vbCBoYW5kbGVNb3VzZUV2ZW50KGNv
bnN0IFdlYk1vdXNlRXZlbnQmIG1vdXNlRXZlbnQsIFBhZ2UqIHBhZ2UpCitzdGF0aWMgYm9vbCBo
YW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIG1vdXNlRXZlbnQsIFBhZ2UqIHBh
Z2UsIGJvb2wgb25seVVwZGF0ZVNjcm9sbGJhcnMpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gcGFn
ZS0+bWFpbkZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZS0+dmlldygpKQpAQCAtMTEyOCw3ICsxMTI4
LDcgQEAgc3RhdGljIGJvb2wgaGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNbwogICAgICAgICBj
YXNlIFdlYkNvcmU6Ok1vdXNlRXZlbnRSZWxlYXNlZDoKICAgICAgICAgICAgIHJldHVybiBmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KHBsYXRmb3JtTW91c2VF
dmVudCk7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6TW91c2VFdmVudE1vdmVkOgotICAgICAgICAg
ICAgcmV0dXJuIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bW91c2VNb3ZlZChwbGF0Zm9ybU1vdXNl
RXZlbnQpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bW91c2VN
b3ZlZChwbGF0Zm9ybU1vdXNlRXZlbnQsIG9ubHlVcGRhdGVTY3JvbGxiYXJzKTsKIAogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMTU0LDcg
KzExNTQsNyBAQCB2b2lkIFdlYlBhZ2U6Om1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFCiAgICAg
aWYgKCFoYW5kbGVkKSB7CiAgICAgICAgIEN1cnJlbnRFdmVudCBjdXJyZW50RXZlbnQobW91c2VF
dmVudCk7CiAKLSAgICAgICAgaGFuZGxlZCA9IGhhbmRsZU1vdXNlRXZlbnQobW91c2VFdmVudCwg
bV9wYWdlLmdldCgpKTsKKyAgICAgICAgaGFuZGxlZCA9IGhhbmRsZU1vdXNlRXZlbnQobW91c2VF
dmVudCwgbV9wYWdlLmdldCgpLCAhd2luZG93SXNGb2N1c2VkKCkpOwogICAgIH0KIAogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUV2ZW50KHN0YXRpY19jYXN0PHVp
bnQzMl90Pihtb3VzZUV2ZW50LnR5cGUoKSksIGhhbmRsZWQpKTsKQEAgLTExNzIsNyArMTE3Miw3
IEBAIHZvaWQgV2ViUGFnZTo6bW91c2VFdmVudFN5bmNGb3JUZXN0aW5nKGMKIAogICAgIGlmICgh
aGFuZGxlZCkgewogICAgICAgICBDdXJyZW50RXZlbnQgY3VycmVudEV2ZW50KG1vdXNlRXZlbnQp
OwotICAgICAgICBoYW5kbGVkID0gaGFuZGxlTW91c2VFdmVudChtb3VzZUV2ZW50LCBtX3BhZ2Uu
Z2V0KCkpOworICAgICAgICBoYW5kbGVkID0gaGFuZGxlTW91c2VFdmVudChtb3VzZUV2ZW50LCBt
X3BhZ2UuZ2V0KCksICF3aW5kb3dJc0ZvY3VzZWQoKSk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115279</attachid>
            <date>2011-11-15 16:42:32 -0800</date>
            <delta_ts>2011-11-15 16:46:02 -0800</delta_ts>
            <desc>Smaller patch that does less</desc>
            <filename>for-review-3.txt</filename>
            <type>text/plain</type>
            <size>4451</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDM2NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDExLTExLTE1ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzI0MDAKKyAgICAgICAgU2Nyb2xsYmFyIHVpU3RhdGVUcmFuc2l0
aW9uUHJvZ3Jlc3MgcmVxdWlyZXMgdHJhY2tpbmcgdGhlIG1vdXNlIGFsbCB0aGUgdGltZQorICAg
ICAgICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDQwOTMy
OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXQg
dXAgb3VyIGluaXRpYWwgdHJhY2tpbmcgYXJlYSBiYXNlZCBvbiB0aGUgY3VycmVudGx5IHJlY29t
bWVuZGVkIHNjcm9sbGJhciAKKyAgICAgICAgc3R5bGUuIFRyYWNrIHRoZSBtb3VzZSBhbGwgdGhl
IHRpbWUgaWYgdGhlIHN0eWxlIGlzIGxlZ2FjeS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbnRleHRSZWY6
cGFnZUdyb3VwUmVmOl0pOgorCisgICAgICAgIE5vdyB0aGF0IHdlIG1pZ2h0IGJlIGdldHRpbmcg
bW91c2VNb3ZlZCBldmVudHMgYWxsIHRoZSB0aW1lIGV2ZW4gd2hlbiB0aGUgd2luZG93IAorICAg
ICAgICBpcyBub3Qga2V5LCBtYWtlIHN1cmUgd2Ugb3B0IGludG8gdGhlIG5ldyAnb25seVVwZGF0
ZVNjcm9sbGJhcnMnIG1vZGUgZm9yIAorICAgICAgICBFdmVudEhhbmRsZXI6Om1vdXNlTW92ZWQo
KSB3aGVuIHRoZSB3aW5kb3cgaXMgbm90IGZvY3VzZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpoYW5kbGVNb3VzZUV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6Om1vdXNlRXZlbnRTeW5jRm9yVGVzdGluZyk6CisKIDIwMTEtMTEtMTUgIEpvbmdz
ZW9rIFlhbmcgIDxqczQ1LnlhbmdAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW1NPVVBdW1dLMl0g
QWRkIGluaXRpYWwgV2ViQ29va2llTWFuYWdlclNvdXAuY3BwIGZvciB3ZWJraXQyCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCShyZXZpc2lvbiAxMDAz
MDUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI2NDAsOCArMjY0MCwxOSBAQCAtIChpZClpbml0V2l0aEZyYW1lOihOU1Jl
Y3QpZnJhbWUgY29udGV4CiAgICAgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UoKTsKICAgICBS
dW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKIAorICAgIC8vIExlZ2FjeSBzdHlsZSBz
Y3JvbGxiYXJzIGhhdmUgZGVzaWduIGRldGFpbHMgdGhhdCByZWx5IG9uIHRyYWNraW5nIHRoZSBt
b3VzZSBhbGwgdGhlIHRpbWUuCisgICAgTlNUcmFja2luZ0FyZWFPcHRpb25zIG9wdGlvbnMgPSBO
U1RyYWNraW5nTW91c2VNb3ZlZCB8IE5TVHJhY2tpbmdNb3VzZUVudGVyZWRBbmRFeGl0ZWQgfCBO
U1RyYWNraW5nSW5WaXNpYmxlUmVjdDsKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xF
T1BBUkQpCisgICAgaWYgKFdLUmVjb21tZW5kZWRTY3JvbGxlclN0eWxlKCkgPT0gTlNTY3JvbGxl
clN0eWxlTGVnYWN5KQorICAgICAgICBvcHRpb25zIHw9IE5TVHJhY2tpbmdBY3RpdmVBbHdheXM7
CisgICAgZWxzZQorICAgICAgICBvcHRpb25zIHw9IE5TVHJhY2tpbmdBY3RpdmVJbktleVdpbmRv
dzsKKyNlbHNlCisgICAgb3B0aW9ucyB8PSBOU1RyYWNraW5nQWN0aXZlSW5LZXlXaW5kb3c7Cisj
ZW5kaWYKKwogICAgIE5TVHJhY2tpbmdBcmVhICp0cmFja2luZ0FyZWEgPSBbW05TVHJhY2tpbmdB
cmVhIGFsbG9jXSBpbml0V2l0aFJlY3Q6ZnJhbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOihOU1RyYWNraW5n
TW91c2VNb3ZlZCB8IE5TVHJhY2tpbmdNb3VzZUVudGVyZWRBbmRFeGl0ZWQgfCBOU1RyYWNraW5n
QWN0aXZlSW5LZXlXaW5kb3cgfCBOU1RyYWNraW5nSW5WaXNpYmxlUmVjdCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRp
b25zOm9wdGlvbnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG93bmVyOnNlbGYKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJJbmZvOm5pbF07CiAg
ICAgW3NlbGYgYWRkVHJhY2tpbmdBcmVhOnRyYWNraW5nQXJlYV07CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxMDAzMDUp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExMDUsNyArMTEwNSw3IEBAIHN0YXRpYyBib29sIGhhbmRsZUNvbnRleHRN
ZW51RXZlbnQoY29uc3QKICAgICByZXR1cm4gaGFuZGxlZDsKIH0KIAotc3RhdGljIGJvb2wgaGFu
ZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBQYWdlKiBwYWdl
KQorc3RhdGljIGJvb2wgaGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBtb3Vz
ZUV2ZW50LCBQYWdlKiBwYWdlLCBib29sIG9ubHlVcGRhdGVTY3JvbGxiYXJzKQogewogICAgIEZy
YW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOwogICAgIGlmICghZnJhbWUtPnZpZXcoKSkK
QEAgLTExMjgsNyArMTEyOCw3IEBAIHN0YXRpYyBib29sIGhhbmRsZU1vdXNlRXZlbnQoY29uc3Qg
V2ViTW8KICAgICAgICAgY2FzZSBXZWJDb3JlOjpNb3VzZUV2ZW50UmVsZWFzZWQ6CiAgICAgICAg
ICAgICByZXR1cm4gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZVJlbGVhc2VFdmVu
dChwbGF0Zm9ybU1vdXNlRXZlbnQpOwogICAgICAgICBjYXNlIFdlYkNvcmU6Ok1vdXNlRXZlbnRN
b3ZlZDoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPm1vdXNlTW92
ZWQocGxhdGZvcm1Nb3VzZUV2ZW50KTsKKyAgICAgICAgICAgIHJldHVybiBmcmFtZS0+ZXZlbnRI
YW5kbGVyKCktPm1vdXNlTW92ZWQocGxhdGZvcm1Nb3VzZUV2ZW50LCBvbmx5VXBkYXRlU2Nyb2xs
YmFycyk7CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtMTE1NCw3ICsxMTU0LDcgQEAgdm9pZCBXZWJQYWdlOjptb3VzZUV2ZW50KGNvbnN0
IFdlYk1vdXNlRQogICAgIGlmICghaGFuZGxlZCkgewogICAgICAgICBDdXJyZW50RXZlbnQgY3Vy
cmVudEV2ZW50KG1vdXNlRXZlbnQpOwogCi0gICAgICAgIGhhbmRsZWQgPSBoYW5kbGVNb3VzZUV2
ZW50KG1vdXNlRXZlbnQsIG1fcGFnZS5nZXQoKSk7CisgICAgICAgIGhhbmRsZWQgPSBoYW5kbGVN
b3VzZUV2ZW50KG1vdXNlRXZlbnQsIG1fcGFnZS5nZXQoKSwgIXdpbmRvd0lzRm9jdXNlZCgpKTsK
ICAgICB9CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVFdmVu
dChzdGF0aWNfY2FzdDx1aW50MzJfdD4obW91c2VFdmVudC50eXBlKCkpLCBoYW5kbGVkKSk7CkBA
IC0xMTcyLDcgKzExNzIsNyBAQCB2b2lkIFdlYlBhZ2U6Om1vdXNlRXZlbnRTeW5jRm9yVGVzdGlu
ZyhjCiAKICAgICBpZiAoIWhhbmRsZWQpIHsKICAgICAgICAgQ3VycmVudEV2ZW50IGN1cnJlbnRF
dmVudChtb3VzZUV2ZW50KTsKLSAgICAgICAgaGFuZGxlZCA9IGhhbmRsZU1vdXNlRXZlbnQobW91
c2VFdmVudCwgbV9wYWdlLmdldCgpKTsKKyAgICAgICAgaGFuZGxlZCA9IGhhbmRsZU1vdXNlRXZl
bnQobW91c2VFdmVudCwgbV9wYWdlLmdldCgpLCAhd2luZG93SXNGb2N1c2VkKCkpOwogICAgIH0K
IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115280</attachid>
            <date>2011-11-15 16:46:02 -0800</date>
            <delta_ts>2011-11-15 22:54:16 -0800</delta_ts>
            <desc>Now with WebCore</desc>
            <filename>for-review-3.txt</filename>
            <type>text/plain</type>
            <size>13493</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDM2NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDExLTExLTE1ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzI0MDAKKyAgICAgICAgU2Nyb2xsYmFyIHVpU3RhdGVUcmFuc2l0
aW9uUHJvZ3Jlc3MgcmVxdWlyZXMgdHJhY2tpbmcgdGhlIG1vdXNlIGFsbCB0aGUgdGltZQorICAg
ICAgICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDQwOTMy
OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIG1ha2VzIGl0IHNvIHdlIHRyYWNrIHRoZSBtb3VzZSBhbGwgdGhlIHRpbWUgd2hlbiB3
ZSBoYXZlIGxlZ2FjeSAKKyAgICAgICAgc2Nyb2xsYmFycyAocmF0aGVyIHRoYW4gb25seSB0cmFj
a2luZyB0aGUgbW91c2Ugd2hlbiB0aGUgd2luZG93IGlzIGtleSkuIFdoZW4gCisgICAgICAgIHdl
J3JlIGluIHRoYXQgbW9kZSwgd2Ugd2FudCB0byBkbyBhcyBsaXR0bGUgd29yayBhcyBwb3NzaWJs
ZSB3aGVuIGhhbmRsaW5nIHRoZSAKKyAgICAgICAgbW91c2VNb3ZlZCBldmVudCBzbyB0aGF0IHRo
aXMgZXh0cmEgdHJhY2tpbmcgaGFzIGxpdHRsZSB0byBubyBwZXJmb3JtYW5jZSBpbXBhY3QuIAor
ICAgICAgICBBbHNvLCB3ZSBkb24ndCB3YW50IHRvIGNoYW5nZSBiYXNpYyBiZWhhdmlvcnMgYnkg
aGF2aW5nIG5vcm1hbCB3ZWIgY29udGVudCBob3ZlciAKKyAgICAgICAgZWZmZWN0cyBzdGFydCBo
YXBwZW5pbmcgd2hlbiBhIHdpbmRvdyBpcyBpbiB0aGUgYmFja2dyb3VuZC4gU28gdGhpcyBwYXRj
aCBhbHNvIAorICAgICAgICBpbnRyb2R1Y2VzIGEgd2F5IHRvIGhhbmRsZSBhIG1vdXNlTW92ZWQg
ZXZlbnQgdGhhdCB3aWxsIG9ubHkgYWZmZWN0IHNjcm9sbGJhcnMuCisKKyAgICAgICAgRXZlbnRI
YW5kbGVyOjptb3VzZU1vdmVkKCkgYW5kIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VFdmVudCgp
IGJvdGggbm93IHRha2UgYSAKKyAgICAgICAgYm9vbGVhbiBwYXJhbWV0ZXIgdGhhdCBpbmRpY2F0
ZXMgaWYgd2UgYXJlIG9ubHkgdXBkYXRpbmcgc2Nyb2xsYmFycy4gSWYgdGhhdCBpcyAKKyAgICAg
ICAgdGhlIGNhc2UsIHRoZW4gd2UgbWFrZSBvdXIgSGl0VGVzdFJlcXVlc3QgUmVhZE9ubHksIGFu
ZCB3ZSByZXR1cm4gZWFybHkgb25jZSAKKyAgICAgICAgdXBkYXRlTGFzdFNjcm9sbGJhclVuZGVy
TW91c2UoKSBpcyBjYWxsZWQuCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICog
cGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpt
b3VzZU1vdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VN
b3ZlRXZlbnQpOgorCisgICAgICAgIEluIGFkZGl0aW9uIHRvIGNhbGxpbmcgU2Nyb2xsYmFyOjpt
b3VzZUV4aXRlZCgpIHdoZW4gYXBwcm9wcmlhdGUsIHRoaXMgZnVuY3Rpb24gCisgICAgICAgIG5v
dyBjYWxscyBhIG5ldyBmdW5jdGlvbiwgU2Nyb2xsYmFyOjptb3VzZUVudGVyZWQoKSB3aGVuIGFw
cHJvcHJpYXRlLiAKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlTGFzdFNj
cm9sbGJhclVuZGVyTW91c2UpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisKKyAg
ICAgICAgU2Nyb2xsYmFyOjptb3VzZU1vdmVkKCkgdXNlZCB0byBiZSByZXNwb25zaWJsZSBmb3Ig
Y2FsbGluZyAKKyAgICAgICAgU2Nyb2xsQW5pbWF0b3I6Om1vdXNlRW50ZXJlZFNjcm9sbGJhcigp
LCBidXQgbm93IFNjcm9sbGJhcjo6bW91c2VFbnRlcmVkKCkgdGFrZXMgCisgICAgICAgIGNhcmUg
b2YgdGhhdCBpbnN0ZWFkLCBtdWNoIGxpa2UgaG93IFNjcm9sbGJhcjo6bW91c2VFeGl0ZWQoKSB0
YWtlcyBjYXJlIG9mIGNhbGxpbmcgCisgICAgICAgIHRoZSBhbmltYXRvcidzIGV4aXQgZnVuY3Rp
b24uCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhcjo6bW91c2VNb3ZlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6Om1v
dXNlRW50ZXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyLmg6CisKIDIwMTEtMTEt
MTUgIFZpbmNlbnQgU2NoZWliICA8c2NoZWliQGNocm9taXVtLm9yZz4KIAogICAgICAgICBQb2lu
dGVyIExvY2s6IFJlZmFjdG9yOiBNb3VzZUV2ZW50LmlkbCBtb3ZlbWVudFgvWQpJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDEwMDMwNSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMjUsNyArMjI1LDcgQEAgX19aTjdXZWJDb3Jl
MTF3cml0ZVRvRmlsZUVpUEtjaQogX19aTjdXZWJDb3JlMTJDaHJvbWVDbGllbnQyM3BhaW50Q3Vz
dG9tT3ZlcmhhbmdBcmVhRVBOU18xNUdyYXBoaWNzQ29udGV4dEVSS05TXzdJbnRSZWN0RVM1X1M1
XwogX19aTjdXZWJDb3JlMTJFZGl0aW5nU3R5bGVEMUV2CiBfX1pON1dlYkNvcmUxMkV2ZW50SGFu
ZGxlcjEwbW91c2VNb3ZlZEVQN05TRXZlbnQKLV9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyMTBt
b3VzZU1vdmVkRVJLTlNfMThQbGF0Zm9ybU1vdXNlRXZlbnRFCitfX1pON1dlYkNvcmUxMkV2ZW50
SGFuZGxlcjEwbW91c2VNb3ZlZEVSS05TXzE4UGxhdGZvcm1Nb3VzZUV2ZW50RWIKIF9fWk43V2Vi
Q29yZTEyRXZlbnRIYW5kbGVyMTB3aGVlbEV2ZW50RVA3TlNFdmVudAogX19aTjdXZWJDb3JlMTJF
dmVudEhhbmRsZXIxMm1vdXNlRHJhZ2dlZEVQN05TRXZlbnQKIF9fWk43V2ViQ29yZTEyRXZlbnRI
YW5kbGVyMTRjdXJyZW50TlNFdmVudEV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCShyZXZpc2lvbiAxMDAzMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NTQsMTAgKzE1NTQsMTMgQEAgc3RhdGljIFJl
bmRlckxheWVyKiBsYXllckZvck5vZGUoTm9kZSogbgogICAgIHJldHVybiBsYXllcjsKIH0KIAot
Ym9vbCBFdmVudEhhbmRsZXI6Om1vdXNlTW92ZWQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBl
dmVudCkKK2Jvb2wgRXZlbnRIYW5kbGVyOjptb3VzZU1vdmVkKGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgZXZlbnQsIGJvb2wgb25seVVwZGF0ZVNjcm9sbGJhcnMpCiB7CiAgICAgSGl0VGVzdFJl
c3VsdCBob3ZlcmVkTm9kZSA9IEhpdFRlc3RSZXN1bHQoTGF5b3V0UG9pbnQoKSk7Ci0gICAgYm9v
bCByZXN1bHQgPSBoYW5kbGVNb3VzZU1vdmVFdmVudChldmVudCwgJmhvdmVyZWROb2RlKTsKKyAg
ICBib29sIHJlc3VsdCA9IGhhbmRsZU1vdXNlTW92ZUV2ZW50KGV2ZW50LCAmaG92ZXJlZE5vZGUs
IG9ubHlVcGRhdGVTY3JvbGxiYXJzKTsKKworICAgIGlmIChvbmx5VXBkYXRlU2Nyb2xsYmFycykK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCk7CiAgICAgaWYgKCFwYWdlKQpAQCAtMTU3Nyw3ICsxNTgwLDcgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6Om1vdXNlTW92ZWQoY29uc3QgUGxhdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIG1vdXNlRXZlbnQsIEhpdFRlc3RSZXN1bHQqIGhvdmVyZWROb2RlKQorYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91
c2VFdmVudCwgSGl0VGVzdFJlc3VsdCogaG92ZXJlZE5vZGUsIGJvb2wgb25seVVwZGF0ZVNjcm9s
bGJhcnMpCiB7CiAgICAgLy8gaW4gUmFkYXIgMzcwMzc2OCB3ZSBzYXcgZnJlcXVlbnQgY3Jhc2hl
cyBhcHBhcmVudGx5IGR1ZSB0byB0aGUKICAgICAvLyBwYXJ0IGJlaW5nIG51bGwgaGVyZSwgd2hp
Y2ggc2VlbXMgaW1wb3NzaWJsZSwgc28gY2hlY2sgZm9yIG5pbApAQCAtMTYwOSwxMiArMTYxMiwx
MyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoCiAgICAgaWYgKG1f
bGFzdFNjcm9sbGJhclVuZGVyTW91c2UgJiYgbV9tb3VzZVByZXNzZWQpCiAgICAgICAgIHJldHVy
biBtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlLT5tb3VzZU1vdmVkKG1vdXNlRXZlbnQpOwogCi0g
ICAgLy8gVHJlYXQgbW91c2UgbW92ZSBldmVudHMgd2hpbGUgdGhlIG1vdXNlIGlzIHByZXNzZWQg
YXMgInJlYWQtb25seSIgaW4gcHJlcGFyZU1vdXNlRXZlbnQKLSAgICAvLyBpZiB3ZSBhcmUgYWxs
b3dlZCB0byBzZWxlY3QuCi0gICAgLy8gVGhpcyBtZWFucyB0aGF0IDpob3ZlciBhbmQgOmFjdGl2
ZSBmcmVlemUgaW4gdGhlIHN0YXRlIHRoZXkgd2VyZSBpbiB3aGVuIHRoZSBtb3VzZQotICAgIC8v
IHdhcyBwcmVzc2VkLCByYXRoZXIgdGhhbiB1cGRhdGluZyBmb3Igbm9kZXMgdGhlIG1vdXNlIG1v
dmVzIG92ZXIgYXMgeW91IGhvbGQgdGhlIG1vdXNlIGRvd24uCisgICAgLy8gTW91c2UgZXZlbnRz
IHNob3VsZCBiZSB0cmVhdGVkIGFzICJyZWFkLW9ubHkiIGluIHByZXBhcmVNb3VzZUV2ZW50IGlm
IHRoZSBtb3VzZSBpcyAKKyAgICAvLyBwcmVzc2VkIGFuZCB3ZSBhcmUgYWxsb3dlZCB0byBzZWxl
Y3QgT1IgaWYgd2UncmUgdXBkYXRpbmcgb25seSBzY3JvbGxiYXJzLiBUaGlzIAorICAgIC8vIG1l
YW5zIHRoYXQgOmhvdmVyIGFuZCA6YWN0aXZlIGZyZWV6ZSBpbiB0aGUgc3RhdGUgdGhleSB3ZXJl
IGluLCByYXRoZXIgdGhhbiB1cGRhdGluZyAKKyAgICAvLyBmb3Igbm9kZXMgdGhlIG1vdXNlIG1v
dmVzIG92ZXIgd2hpbGUgeW91IGhvbGQgdGhlIG1vdXNlIGRvd24gKGluIHRoZSBtb3VzZSBwcmVz
c2VkIGNhc2UpCisgICAgLy8gb3Igd2hpbGUgdGhlIHdpbmRvdyBpcyBub3Qga2V5IChhcyBpbiB0
aGUgb25seVVwZGF0ZVNjcm9sbGJhcnMgY2FzZSkuCiAgICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRl
c3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6Ok1vdXNlTW92ZTsKLSAgICBp
ZiAobV9tb3VzZVByZXNzZWQgJiYgbV9tb3VzZURvd25NYXlTdGFydFNlbGVjdCkKKyAgICBpZiAo
KG1fbW91c2VQcmVzc2VkICYmIG1fbW91c2VEb3duTWF5U3RhcnRTZWxlY3QpIHx8IG9ubHlVcGRh
dGVTY3JvbGxiYXJzKQogICAgICAgICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25s
eTsKICAgICBpZiAobV9tb3VzZVByZXNzZWQpCiAgICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJl
cXVlc3Q6OkFjdGl2ZTsKQEAgLTE2NDEsNiArMTY0NSw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVNb3VzZU1vdmVFdmVudCgKICAgICAgICAgICAgIHNjcm9sbGJhciA9IG1ldi5zY3JvbGxi
YXIoKTsKIAogICAgICAgICB1cGRhdGVMYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZShzY3JvbGxiYXIs
ICFtX21vdXNlUHJlc3NlZCk7CisgICAgICAgIGlmIChvbmx5VXBkYXRlU2Nyb2xsYmFycykKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGJvb2wgc3dhbGxvd0V2ZW50ID0g
ZmFsc2U7CkBAIC0zMTQxLDYgKzMxNDcsMTEgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZUxh
c3RTY3JvbGxiYXJVbgogICAgICAgICAvLyBTZW5kIG1vdXNlIGV4aXRlZCB0byB0aGUgb2xkIHNj
cm9sbGJhci4KICAgICAgICAgaWYgKG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2UpCiAgICAgICAg
ICAgICBtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlLT5tb3VzZUV4aXRlZCgpOworCisgICAgICAg
IC8vIFNlbmQgbW91c2UgZW50ZXJlZCBpZiB3ZSdyZSBzZXR0aW5nIGEgbmV3IHNjcm9sbGJhci4K
KyAgICAgICAgaWYgKHNjcm9sbGJhciAmJiBzZXRMYXN0KQorICAgICAgICAgICAgc2Nyb2xsYmFy
LT5tb3VzZUVudGVyZWQoKTsKKwogICAgICAgICBtX2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlID0g
c2V0TGFzdCA/IHNjcm9sbGJhciA6IDA7CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5oCShyZXZpc2lvbiAxMDAzMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsMTIgKzE0OCwxMiBAQCBwdWJsaWM6
CiAgICAgYm9vbCB0YWJzVG9MaW5rcyhLZXlib2FyZEV2ZW50KikgY29uc3Q7CiAgICAgYm9vbCB0
YWJzVG9BbGxGb3JtQ29udHJvbHMoS2V5Ym9hcmRFdmVudCopIGNvbnN0OwogCi0gICAgYm9vbCBt
b3VzZU1vdmVkKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgIGJvb2wgbW91c2VNb3Zl
ZChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBib29sIG9ubHlVcGRhdGVTY3JvbGxiYXJzID0g
ZmFsc2UpOwogCiAgICAgdm9pZCBsb3N0TW91c2VDYXB0dXJlKCk7CiAKICAgICBib29sIGhhbmRs
ZU1vdXNlUHJlc3NFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKLSAgICBib29sIGhh
bmRsZU1vdXNlTW92ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIEhpdFRlc3RSZXN1
bHQqIGhvdmVyZWROb2RlID0gMCk7CisgICAgYm9vbCBoYW5kbGVNb3VzZU1vdmVFdmVudChjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBIaXRUZXN0UmVzdWx0KiBob3ZlcmVkTm9kZSA9IDAsIGJv
b2wgb25seVVwZGF0ZVNjcm9sbGJhcnMgPSBmYWxzZSk7CiAgICAgYm9vbCBoYW5kbGVNb3VzZVJl
bGVhc2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKICAgICBib29sIGhhbmRsZVdo
ZWVsRXZlbnQoUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAgICAgdm9pZCBkZWZhdWx0V2hlZWxFdmVu
dEhhbmRsZXIoTm9kZSosIFdoZWVsRXZlbnQqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGJhci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYmFyLmNwcAkocmV2aXNpb24gMTAwMzA1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYmFyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ2LDExICszNDYsNiBAQCBib29s
IFNjcm9sbGJhcjo6bW91c2VNb3ZlZChjb25zdCBQbGF0Zm9yCiAgICAgaWYgKG1fcHJlc3NlZFBh
cnQgIT0gTm9QYXJ0KQogICAgICAgICBtX3ByZXNzZWRQb3MgPSAob3JpZW50YXRpb24oKSA9PSBI
b3Jpem9udGFsU2Nyb2xsYmFyID8gY29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3Mo
KSkueCgpIDogY29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3MoKSkueSgpKTsKIAot
ICAgIGlmIChtX2hvdmVyZWRQYXJ0ID09IE5vUGFydCkgewotICAgICAgICBpZiAobV9zY3JvbGxh
YmxlQXJlYSkKLSAgICAgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbEFuaW1hdG9yKCkt
Pm1vdXNlRW50ZXJlZFNjcm9sbGJhcih0aGlzKTsKLSAgICB9Ci0KICAgICBTY3JvbGxiYXJQYXJ0
IHBhcnQgPSB0aGVtZSgpLT5oaXRUZXN0KHRoaXMsIGV2dCk7CiAgICAgaWYgKHBhcnQgIT0gbV9o
b3ZlcmVkUGFydCkgewogICAgICAgICBpZiAobV9wcmVzc2VkUGFydCAhPSBOb1BhcnQpIHsKQEAg
LTM3Myw2ICszNjgsMTMgQEAgYm9vbCBTY3JvbGxiYXI6Om1vdXNlTW92ZWQoY29uc3QgUGxhdGZv
cgogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFNjcm9sbGJhcjo6bW91c2VFbnRlcmVkKCkK
K3sKKyAgICBpZiAobV9zY3JvbGxhYmxlQXJlYSkKKyAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS0+
c2Nyb2xsQW5pbWF0b3IoKS0+bW91c2VFbnRlcmVkU2Nyb2xsYmFyKHRoaXMpOworICAgIHJldHVy
biB0cnVlOworfQorCiBib29sIFNjcm9sbGJhcjo6bW91c2VFeGl0ZWQoKQogewogICAgIGlmICht
X3Njcm9sbGFibGVBcmVhKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgJKHJl
dmlzaW9uIDEwMDMwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCSh3
b3JraW5nIGNvcHkpCkBAIC05NCw2ICs5NCw3IEBAIHB1YmxpYzoKICAgICAvLyB3aGVuIHRoZSBt
b3VzZSB3ZW50IGRvd24gaW4gYSBzY3JvbGxiYXIsIHNpbmNlIGl0IGlzIGFzc3VtZWQgdGhlIHNj
cm9sbGJhciB3aWxsIHN0YXJ0CiAgICAgLy8gZ3JhYmJpbmcgYWxsIGV2ZW50cyBpbiB0aGF0IGNh
c2UgYW55d2F5LgogICAgIGJvb2wgbW91c2VNb3ZlZChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
KTsKKyAgICBib29sIG1vdXNlRW50ZXJlZCgpOwogICAgIGJvb2wgbW91c2VFeGl0ZWQoKTsKICAg
ICAKICAgICAvLyBVc2VkIGJ5IHNvbWUgcGxhdGZvcm0gc2Nyb2xsYmFycyB0byBrbm93IHdoZW4g
dGhleSd2ZSBiZWVuIHJlbGVhc2VkIGZyb20gY2FwdHVyZS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlz
aW9uIDEwMDM2NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI1IEBACisyMDExLTExLTE1ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNv
bT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI0
MDAKKyAgICAgICAgU2Nyb2xsYmFyIHVpU3RhdGVUcmFuc2l0aW9uUHJvZ3Jlc3MgcmVxdWlyZXMg
dHJhY2tpbmcgdGhlIG1vdXNlIGFsbCB0aGUgdGltZQorICAgICAgICAtYW5kIGNvcnJlc3BvbmRp
bmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDQwOTMyOD4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXQgdXAgb3VyIGluaXRpYWwgdHJhY2tp
bmcgYXJlYSBiYXNlZCBvbiB0aGUgY3VycmVudGx5IHJlY29tbWVuZGVkIHNjcm9sbGJhciAKKyAg
ICAgICAgc3R5bGUuIFRyYWNrIHRoZSBtb3VzZSBhbGwgdGhlIHRpbWUgaWYgdGhlIHN0eWxlIGlz
IGxlZ2FjeS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAg
ICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbnRleHRSZWY6cGFnZUdyb3VwUmVmOl0pOgorCisg
ICAgICAgIE5vdyB0aGF0IHdlIG1pZ2h0IGJlIGdldHRpbmcgbW91c2VNb3ZlZCBldmVudHMgYWxs
IHRoZSB0aW1lIGV2ZW4gd2hlbiB0aGUgd2luZG93IAorICAgICAgICBpcyBub3Qga2V5LCBtYWtl
IHN1cmUgd2Ugb3B0IGludG8gdGhlIG5ldyAnb25seVVwZGF0ZVNjcm9sbGJhcnMnIG1vZGUgZm9y
IAorICAgICAgICBFdmVudEhhbmRsZXI6Om1vdXNlTW92ZWQoKSB3aGVuIHRoZSB3aW5kb3cgaXMg
bm90IGZvY3VzZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpoYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6bW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1vdXNlRXZlbnRT
eW5jRm9yVGVzdGluZyk6CisKIDIwMTEtMTEtMTUgIEpvbmdzZW9rIFlhbmcgIDxqczQ1LnlhbmdA
c2Ftc3VuZy5jb20+CiAKICAgICAgICAgW1NPVVBdW1dLMl0gQWRkIGluaXRpYWwgV2ViQ29va2ll
TWFuYWdlclNvdXAuY3BwIGZvciB3ZWJraXQyCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCShyZXZpc2lvbiAxMDAzMDUpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2NDAsOCAr
MjY0MCwxOSBAQCAtIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgY29udGV4CiAgICAg
SW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UoKTsKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFp
blJ1bkxvb3AoKTsKIAorICAgIC8vIExlZ2FjeSBzdHlsZSBzY3JvbGxiYXJzIGhhdmUgZGVzaWdu
IGRldGFpbHMgdGhhdCByZWx5IG9uIHRyYWNraW5nIHRoZSBtb3VzZSBhbGwgdGhlIHRpbWUuCisg
ICAgTlNUcmFja2luZ0FyZWFPcHRpb25zIG9wdGlvbnMgPSBOU1RyYWNraW5nTW91c2VNb3ZlZCB8
IE5TVHJhY2tpbmdNb3VzZUVudGVyZWRBbmRFeGl0ZWQgfCBOU1RyYWNraW5nSW5WaXNpYmxlUmVj
dDsKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisgICAgaWYgKFdLUmVj
b21tZW5kZWRTY3JvbGxlclN0eWxlKCkgPT0gTlNTY3JvbGxlclN0eWxlTGVnYWN5KQorICAgICAg
ICBvcHRpb25zIHw9IE5TVHJhY2tpbmdBY3RpdmVBbHdheXM7CisgICAgZWxzZQorICAgICAgICBv
cHRpb25zIHw9IE5TVHJhY2tpbmdBY3RpdmVJbktleVdpbmRvdzsKKyNlbHNlCisgICAgb3B0aW9u
cyB8PSBOU1RyYWNraW5nQWN0aXZlSW5LZXlXaW5kb3c7CisjZW5kaWYKKwogICAgIE5TVHJhY2tp
bmdBcmVhICp0cmFja2luZ0FyZWEgPSBbW05TVHJhY2tpbmdBcmVhIGFsbG9jXSBpbml0V2l0aFJl
Y3Q6ZnJhbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcHRpb25zOihOU1RyYWNraW5nTW91c2VNb3ZlZCB8IE5TVHJhY2tp
bmdNb3VzZUVudGVyZWRBbmRFeGl0ZWQgfCBOU1RyYWNraW5nQWN0aXZlSW5LZXlXaW5kb3cgfCBO
U1RyYWNraW5nSW5WaXNpYmxlUmVjdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOm9wdGlvbnMKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG93bmVyOnNlbGYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVzZXJJbmZvOm5pbF07CiAgICAgW3NlbGYgYWRkVHJhY2tpbmdB
cmVhOnRyYWNraW5nQXJlYV07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxMDAzMDUpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMDUsNyAr
MTEwNSw3IEBAIHN0YXRpYyBib29sIGhhbmRsZUNvbnRleHRNZW51RXZlbnQoY29uc3QKICAgICBy
ZXR1cm4gaGFuZGxlZDsKIH0KIAotc3RhdGljIGJvb2wgaGFuZGxlTW91c2VFdmVudChjb25zdCBX
ZWJNb3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBQYWdlKiBwYWdlKQorc3RhdGljIGJvb2wgaGFuZGxl
TW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBQYWdlKiBwYWdlLCBi
b29sIG9ubHlVcGRhdGVTY3JvbGxiYXJzKQogewogICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1h
aW5GcmFtZSgpOwogICAgIGlmICghZnJhbWUtPnZpZXcoKSkKQEAgLTExMjgsNyArMTEyOCw3IEBA
IHN0YXRpYyBib29sIGhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW8KICAgICAgICAgY2FzZSBX
ZWJDb3JlOjpNb3VzZUV2ZW50UmVsZWFzZWQ6CiAgICAgICAgICAgICByZXR1cm4gZnJhbWUtPmV2
ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChwbGF0Zm9ybU1vdXNlRXZlbnQp
OwogICAgICAgICBjYXNlIFdlYkNvcmU6Ok1vdXNlRXZlbnRNb3ZlZDoKLSAgICAgICAgICAgIHJl
dHVybiBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPm1vdXNlTW92ZWQocGxhdGZvcm1Nb3VzZUV2ZW50
KTsKKyAgICAgICAgICAgIHJldHVybiBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPm1vdXNlTW92ZWQo
cGxhdGZvcm1Nb3VzZUV2ZW50LCBvbmx5VXBkYXRlU2Nyb2xsYmFycyk7CiAKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTE1NCw3ICsxMTU0
LDcgQEAgdm9pZCBXZWJQYWdlOjptb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRQogICAgIGlmICgh
aGFuZGxlZCkgewogICAgICAgICBDdXJyZW50RXZlbnQgY3VycmVudEV2ZW50KG1vdXNlRXZlbnQp
OwogCi0gICAgICAgIGhhbmRsZWQgPSBoYW5kbGVNb3VzZUV2ZW50KG1vdXNlRXZlbnQsIG1fcGFn
ZS5nZXQoKSk7CisgICAgICAgIGhhbmRsZWQgPSBoYW5kbGVNb3VzZUV2ZW50KG1vdXNlRXZlbnQs
IG1fcGFnZS5nZXQoKSwgIXdpbmRvd0lzRm9jdXNlZCgpKTsKICAgICB9CiAKICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVFdmVudChzdGF0aWNfY2FzdDx1aW50MzJf
dD4obW91c2VFdmVudC50eXBlKCkpLCBoYW5kbGVkKSk7CkBAIC0xMTcyLDcgKzExNzIsNyBAQCB2
b2lkIFdlYlBhZ2U6Om1vdXNlRXZlbnRTeW5jRm9yVGVzdGluZyhjCiAKICAgICBpZiAoIWhhbmRs
ZWQpIHsKICAgICAgICAgQ3VycmVudEV2ZW50IGN1cnJlbnRFdmVudChtb3VzZUV2ZW50KTsKLSAg
ICAgICAgaGFuZGxlZCA9IGhhbmRsZU1vdXNlRXZlbnQobW91c2VFdmVudCwgbV9wYWdlLmdldCgp
KTsKKyAgICAgICAgaGFuZGxlZCA9IGhhbmRsZU1vdXNlRXZlbnQobW91c2VFdmVudCwgbV9wYWdl
LmdldCgpLCAhd2luZG93SXNGb2N1c2VkKCkpOwogICAgIH0KIH0KIAo=
</data>
<flag name="review"
          id="114142"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>