<?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>106539</bug_id>
          
          <creation_ts>2013-01-10 01:37:32 -0800</creation_ts>
          <short_desc>PDFPlugin: Tab between text annotations</short_desc>
          <delta_ts>2013-02-25 13:18:11 -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>PDF</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="Tim Horton">thorton</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>804169</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-01-10 01:37:32 -0800</bug_when>
    <thetext>&lt;rdar://problem/12751789&gt;

Should be able to use tab/shift-tab to navigate through text annotations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804173</commentid>
    <comment_count>1</comment_count>
      <attachid>182089</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-01-10 01:45:32 -0800</bug_when>
    <thetext>Created attachment 182089
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804420</commentid>
    <comment_count>2</comment_count>
      <attachid>182089</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-10 09:00:41 -0800</bug_when>
    <thetext>Comment on attachment 182089
patch

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

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.h:74
&gt; +        PDFPluginTextAnnotation* m_annotation;

So the design is that the pointer can become stale, but it won&apos;t be used in that case?

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:137
&gt; +        if (keyboardEvent-&gt;keyCode() == VK_TAB) {
&gt; +            if (keyboardEvent-&gt;getModifierState(&quot;Shift&quot;))

This is not really the right way to check for key combinations. We should let Cocoa decide whether a key combination matches.

It&apos;s easy to observe the difference by adding a new combination for insertTab: in DefaultKeyBinding.dict. Also, Cocoa accurately checks all modifiers, so it doesn&apos;t steal e.g. Ctrl+Tab.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826832</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-02-06 16:01:45 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; This is not really the right way to check for key combinations. We should let Cocoa decide whether a key combination matches.
&gt; 
&gt; It&apos;s easy to observe the difference by adding a new combination for insertTab: in DefaultKeyBinding.dict. Also, Cocoa accurately checks all modifiers, so it doesn&apos;t steal e.g. Ctrl+Tab.

We took a look at this today; it seems like it&apos;s going to be a lot of work to let Cocoa figure this out for us, so I think we should file another bug about that. In the meantime, I&apos;ll make sure that ctrl/meta/&apos;altgraph&apos; aren&apos;t down.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826969</commentid>
    <comment_count>4</comment_count>
      <attachid>182089</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-02-06 18:36:42 -0800</bug_when>
    <thetext>Comment on attachment 182089
patch

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

&gt;&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.h:74
&gt;&gt; +        PDFPluginTextAnnotation* m_annotation;
&gt; 
&gt; So the design is that the pointer can become stale, but it won&apos;t be used in that case?

Hmm? PDFPluginTextAnnotationEventListener won&apos;t outlive its parent PDFPluginTextAnnotation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826972</commentid>
    <comment_count>5</comment_count>
      <attachid>186973</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-02-06 18:41:46 -0800</bug_when>
    <thetext>Created attachment 186973
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827050</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-02-06 21:51:25 -0800</bug_when>
    <thetext>&gt; Hmm? PDFPluginTextAnnotationEventListener won&apos;t outlive its parent PDFPluginTextAnnotation.

Why not? PDFPluginTextAnnotationEventListener is RefCounted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841057</commentid>
    <comment_count>7</comment_count>
      <attachid>186973</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-02-25 10:03:16 -0800</bug_when>
    <thetext>Comment on attachment 186973
patch

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

review+ but only if you add a check of isKeyboardEvent to fix the bad cast

&gt; Source/WebCore/ChangeLog:9
&gt; +        * WebCore.exp.in: Export KeyboardEvent::getModifierState.

Why? I don’t see it being used in this patch. Is it used indirectly?

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.h:63
&gt; +        virtual bool operator==(const EventListener&amp; listener) OVERRIDE { return this == &amp;listener; }

Normally a virtual == operator is an anti-pattern. Not sure if there’s any real problem with it here.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:131
&gt; +void PDFPluginTextAnnotation::PDFPluginTextAnnotationEventListener::handleEvent(ScriptExecutionContext*, Event* event)

The code in EventHandler::defaultTabEventHandler checks Page::tabKeyCyclesThroughElements. Is that something we need to do too?

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:134
&gt; +    if (event-&gt;type() == eventNames().keydownEvent) {
&gt; +        KeyboardEvent* keyboardEvent = static_cast&lt;KeyboardEvent*&gt;(event);

You need to check the type of the event before casting to KeyboardEvent by calling isKeyboardEvent. A script can create an event with a given event name that is not a “real” event of that type and if so this will be a bad cast.

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:136
&gt; +        if (keyboardEvent-&gt;keyCode() == VK_TAB) {

The code in EventHandler::defaultKeyboardEventHandler uses keyIdentifier rather than keyCode. Any reason you chose differently?

&gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:138
&gt; +            if (keyboardEvent-&gt;ctrlKey() || keyboardEvent-&gt;metaKey() || keyboardEvent-&gt;altKey() || keyboardEvent-&gt;altGraphKey())
&gt; +                return;

The code in EventHandler::defaultTabEventHandler does not check altKey. Any reason for the difference?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841072</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-02-25 10:11:49 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; This is not really the right way to check for key combinations. We should let Cocoa decide whether a key combination matches.

If we’re trying to make PDF handling match webpage tab key handling, we could use EventHandler as the model instead of trying to wire Cocoa up. I think there are arguments either way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841089</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-02-25 10:29:37 -0800</bug_when>
    <thetext>I think that in practice, it&apos;s extremely unlikely to have anyone remap Tab, and we have some level of &apos;\t&apos; hardcoding in normal key event handling anyway.

I&apos;m still concerned about stale pointer issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841095</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-02-25 10:34:12 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; I&apos;m still concerned about stale pointer issue.

When I reviewed, I did not see your comment about that from the previous review.

Tim, lets fix that stale pointer issue by having ~PDFPluginAnnotation call a function that zeroes the pointer, and make sure you null check. We should do it mechanically and make sure to not have pointer lifetime depend on high level understanding of the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841203</commentid>
    <comment_count>11</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-02-25 12:46:24 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 186973 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=186973&amp;action=review
&gt; 
&gt; review+ but only if you add a check of isKeyboardEvent to fix the bad cast
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        * WebCore.exp.in: Export KeyboardEvent::getModifierState.
&gt; 
&gt; Why? I don’t see it being used in this patch. Is it used indirectly?

Good call. Not being used anymore.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.h:63
&gt; &gt; +        virtual bool operator==(const EventListener&amp; listener) OVERRIDE { return this == &amp;listener; }
&gt; 
&gt; Normally a virtual == operator is an anti-pattern. Not sure if there’s any real problem with it here.

Interesting! I was just following all the other EventListener subclasses I saw.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:131
&gt; &gt; +void PDFPluginTextAnnotation::PDFPluginTextAnnotationEventListener::handleEvent(ScriptExecutionContext*, Event* event)
&gt; 
&gt; The code in EventHandler::defaultTabEventHandler checks Page::tabKeyCyclesThroughElements. Is that something we need to do too?

Looking at the history of tabKeyCyclesThroughElements (r15093!), I don&apos;t really think we care in the PDFPlugin case. Even if it were embedded in another app, if a PDFPlugin form has focus, tab should tab to the next field, not insert a tab (IMO tabKeyCyclesThroughElements only makes sense for contenteditable areas and such, not PDF forms).

&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:134
&gt; &gt; +    if (event-&gt;type() == eventNames().keydownEvent) {
&gt; &gt; +        KeyboardEvent* keyboardEvent = static_cast&lt;KeyboardEvent*&gt;(event);
&gt; 
&gt; You need to check the type of the event before casting to KeyboardEvent by calling isKeyboardEvent. A script can create an event with a given event name that is not a “real” event of that type and if so this will be a bad cast.

Ooh, that&apos;s unfortunate. Ok, will fix.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:136
&gt; &gt; +        if (keyboardEvent-&gt;keyCode() == VK_TAB) {
&gt; 
&gt; The code in EventHandler::defaultKeyboardEventHandler uses keyIdentifier rather than keyCode. Any reason you chose differently?

Not in particular, I&apos;ll match them.

&gt; &gt; Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:138
&gt; &gt; +            if (keyboardEvent-&gt;ctrlKey() || keyboardEvent-&gt;metaKey() || keyboardEvent-&gt;altKey() || keyboardEvent-&gt;altGraphKey())
&gt; &gt; +                return;
&gt; 
&gt; The code in EventHandler::defaultTabEventHandler does not check altKey. Any reason for the difference?

Nope, makes sense to match them. Will fix.

&gt; Tim, lets fix that stale pointer issue by having ~PDFPluginAnnotation call a function that zeroes the pointer, and make sure you null check. We should do it mechanically and make sure to not have pointer lifetime depend on high level understanding of the code.

Okie.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841228</commentid>
    <comment_count>12</comment_count>
      <attachid>190111</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-02-25 13:05:23 -0800</bug_when>
    <thetext>Created attachment 190111
addressing darin&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841233</commentid>
    <comment_count>13</comment_count>
      <attachid>190113</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-02-25 13:10:52 -0800</bug_when>
    <thetext>Created attachment 190113
update changelog too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841239</commentid>
    <comment_count>14</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-02-25 13:18:11 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/143962</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182089</attachid>
            <date>2013-01-10 01:45:32 -0800</date>
            <delta_ts>2013-02-06 18:41:46 -0800</delta_ts>
            <desc>patch</desc>
            <filename>tab.diff</filename>
            <type>text/plain</type>
            <size>10444</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3MGQ5OTljLi5jMTEzNzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTMtMDEtMTAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUERGUGx1Z2luOiBUYWIgYmV0d2VlbiB0ZXh0IGFubm90YXRpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY1MzkKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzEyNzUxNzg5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IEV4cG9ydCBLZXlib2FyZEV2ZW50
OjpnZXRNb2RpZmllclN0YXRlLgorCiAyMDEyLTEyLTI4ICBSYWZhZWwgV2VpbnN0ZWluICA8cmFm
YWVsd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1RlbXBsYXRlc106IEZpeCBhc3NlcnQgaW4g
Y29sZ3JvdXAgcGFyc2UgaGFuZGxpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYzQ3NmE3MC4u
MTc1NmRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTEyMTQsNiArMTIxNCw3IEBAIF9fWk5L
N1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQ1aW1hZ2VFdgogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJl
c3VsdDV0aXRsZUVSTlNfMTNUZXh0RGlyZWN0aW9uRQogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJl
c3VsdDlpbWFnZVJlY3RFdgogX19aTks3V2ViQ29yZTEzR3JhcGhpY3NMYXllcjE3cmVwb3J0TWVt
b3J5VXNhZ2VFUE4zV1RGMTZNZW1vcnlPYmplY3RJbmZvRQorX19aTks3V2ViQ29yZTEzS2V5Ym9h
cmRFdmVudDE2Z2V0TW9kaWZpZXJTdGF0ZUVSS04zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmUx
M1Jlc291cmNlRXJyb3I3Y2ZFcnJvckV2CiBfX1pOSzdXZWJDb3JlMTNSZXNvdXJjZUVycm9yN25z
RXJyb3JFdgogX19aTks3V2ViQ29yZTEzUmVzb3VyY2VFcnJvcmN2UDdOU0Vycm9yRXYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCAyNDgyN2Q3Li5mMzIzNGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIw
MTMtMDEtMTAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUERGUGx1Z2luOiBUYWIgYmV0d2VlbiB0ZXh0IGFubm90YXRpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY1MzkKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzEyNzUxNzg5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZMYXllckNvbnRyb2xsZXJE
ZXRhaWxzLmg6IEFkZCBhY3RpdmF0ZU5leHRBbm5vdGF0aW9uOiBTUEkuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKFBERlBsdWdpbik6IEFk
ZCBmb2N1cyhOZXh0fFByZXZpb3VzKUFubm90YXRpb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Zm9j
dXNOZXh0QW5ub3RhdGlvbik6IEFzayBQREZMYXllckNvbnRyb2xsZXIgdG8gZm9jdXMgdGhlIG5l
eHQgYW5ub3RhdGlvbi4KKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpmb2N1c1ByZXZpb3Vz
QW5ub3RhdGlvbik6IEFzayBQREZMYXllckNvbnRyb2xsZXIgdG8gZm9jdXMgdGhlIG5leHQgYW5u
b3RhdGlvbi4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90
YXRpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbkFubm90YXRpb246OmF0dGFjaCk6
IFVzZSBldmVudE5hbWVzKCkgaW5zdGVhZCBvZiBzdHJpbmcgbGl0ZXJhbHMuCisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oOgorICAgICAg
ICAoV2ViS2l0OjpQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6UERGUGx1Z2luVGV4dEFubm90YXRp
b24pOiBDcmVhdGUgb3VyIFBERlBsdWdpblRleHRBbm5vdGF0aW9uRXZlbnRMaXN0ZW5lci4KKyAg
ICAgICAgKFBERlBsdWdpblRleHRBbm5vdGF0aW9uRXZlbnRMaXN0ZW5lcik6IEFkZGVkIGFuIGV2
ZW50IGxpc3RlbmVyIChmb3Iga2V5ZG93biBldmVudHMgaW4gZm9ybSBmaWVsZHMpLgorICAgICAg
ICAoV2ViS2l0OjpQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6UERGUGx1Z2luVGV4dEFubm90YXRp
b25FdmVudExpc3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5UZXh0
QW5ub3RhdGlvbjo6UERGUGx1Z2luVGV4dEFubm90YXRpb25FdmVudExpc3RlbmVyOjpQREZQbHVn
aW5UZXh0QW5ub3RhdGlvbkV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlBE
RlBsdWdpblRleHRBbm5vdGF0aW9uOjp+UERGUGx1Z2luVGV4dEFubm90YXRpb24pOiBVbnJlZ2lz
dGVyIG91ciBrZXlkb3duIGV2ZW50IGxpc3RlbmVyLgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW5UZXh0QW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQpOiBSZWdpc3RlciBvdXIg
a2V5ZG93biBldmVudCBsaXN0ZW5lci4KKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luVGV4dEFu
bm90YXRpb246OlBERlBsdWdpblRleHRBbm5vdGF0aW9uRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZl
bnQpOiBBc2sgUERGUGx1Z2luIHRvIGZvY3VzCisgICAgICAgIHRoZSBuZXh0L3ByZXZpb3VzIGFu
bm90YXRpb24gd2hlbiB0aGUgdGFiIGtleSBpcyBwcmVzc2VkIChTaGlmdC1UYWIgZ29lcyBiYWNr
d2FyZHMpLgorCiAyMDEyLTEyLTI4ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgRml4IGFzc2VydCBzZWVuIHdoZW4gYWRkaW5nIGEgY3VzdG9tIHByb3RvY29sIGhhbmRs
ZXIgYmVmb3JlIGFuIGluaXRpYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGTGF5ZXJDb250cm9sbGVyRGV0YWlscy5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZMYXllckNvbnRyb2xsZXJEZXRhaWxzLmgKaW5k
ZXggOGNiOGQwYS4uOWRiZjUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZMYXllckNvbnRyb2xsZXJEZXRhaWxzLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZMYXllckNvbnRyb2xsZXJEZXRhaWxzLmgK
QEAgLTk4LDUgKzk4LDYgQEAKIC0gKEJPT0wpaHVkRW5hYmxlZDsKIAogLSAoQ0dSZWN0KWJvdW5k
c0ZvckFubm90YXRpb246KFBERkFubm90YXRpb24gKilhbm5vdGF0aW9uOworLSAodm9pZClhY3Rp
dmF0ZU5leHRBbm5vdGF0aW9uOihCT09MKXByZXZpb3VzOwogCiBAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCA2MzY4YjAx
Li4wNDhhYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLmgKQEAgLTc3LDYgKzc3LDkgQEAgcHVibGljOgogICAgIHZvaWQgd3JpdGVJ
dGVtc1RvUGFzdGVib2FyZChOU0FycmF5ICppdGVtcywgTlNBcnJheSAqdHlwZXMpOwogICAgIHZv
aWQgc2hvd0RlZmluaXRpb25Gb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAq
LCBDR1BvaW50KTsKIAorICAgIHZvaWQgZm9jdXNOZXh0QW5ub3RhdGlvbigpOworICAgIHZvaWQg
Zm9jdXNQcmV2aW91c0Fubm90YXRpb24oKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBQREZQ
bHVnaW4oV2ViRnJhbWUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCA5NGE3ZDAwLi41YTdjZGIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAt
OTI4LDYgKzkyOCwxNiBAQCBib29sIFBERlBsdWdpbjo6ZmluZFN0cmluZyhjb25zdCBTdHJpbmcm
IHRhcmdldCwgV2ViQ29yZTo6RmluZE9wdGlvbnMgb3B0aW9ucywgdQogICAgIHJldHVybiBtYXRj
aENvdW50ID4gMDsKIH0KIAordm9pZCBQREZQbHVnaW46OmZvY3VzTmV4dEFubm90YXRpb24oKQor
eworICAgIFttX3BkZkxheWVyQ29udHJvbGxlci5nZXQoKSBhY3RpdmF0ZU5leHRBbm5vdGF0aW9u
OmZhbHNlXTsKK30KKwordm9pZCBQREZQbHVnaW46OmZvY3VzUHJldmlvdXNBbm5vdGF0aW9uKCkK
K3sKKyAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0KCkgYWN0aXZhdGVOZXh0QW5ub3RhdGlv
bjp0cnVlXTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUo
UERGS0lUX1BMVUdJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbQppbmRleCBlZmJjMTlkLi5lY2M2
ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbkFubm90YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tCkBAIC02OSw4ICs2OSw4IEBAIHZvaWQgUERG
UGx1Z2luQW5ub3RhdGlvbjo6YXR0YWNoKEVsZW1lbnQqIHBhcmVudCkKICAgICBtX2VsZW1lbnQg
PSBjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpOwogCiAgICAgbV9lbGVtZW50LT5zZXRBdHRyaWJ1
dGUoY2xhc3NBdHRyLCAiYW5ub3RhdGlvbiIpOwotICAgIG1fZWxlbWVudC0+YWRkRXZlbnRMaXN0
ZW5lcigiY2hhbmdlIiwgbV9ldmVudExpc3RlbmVyLCBmYWxzZSk7Ci0gICAgbV9lbGVtZW50LT5h
ZGRFdmVudExpc3RlbmVyKCJibHVyIiwgbV9ldmVudExpc3RlbmVyLCBmYWxzZSk7CisgICAgbV9l
bGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jaGFuZ2VFdmVudCwgbV9ldmVu
dExpc3RlbmVyLCBmYWxzZSk7CisgICAgbV9lbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50
TmFtZXMoKS5ibHVyRXZlbnQsIG1fZXZlbnRMaXN0ZW5lciwgZmFsc2UpOwogCiAgICAgdXBkYXRl
R2VvbWV0cnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oCmluZGV4IDYyNjYyOGUu
LjBiYjA3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luVGV4dEFubm90YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLmgKQEAgLTQxLDYgKzQxLDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbiA6IHB1
YmxpYyBQREZQbHVnaW5Bbm5vdGF0aW9uIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxQREZQbHVnaW5UZXh0QW5ub3RhdGlvbj4gY3JlYXRlKFBERkFubm90YXRpb24gKiwgUERGTGF5
ZXJDb250cm9sbGVyICosIFBERlBsdWdpbiopOworICAgIHZpcnR1YWwgflBERlBsdWdpblRleHRB
bm5vdGF0aW9uKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2VvbWV0cnkoKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0KCkgT1ZFUlJJREU7CkBAIC00OCwxMiArNDksMzYg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbihQREZBbm5v
dGF0aW9uICphbm5vdGF0aW9uLCBQREZMYXllckNvbnRyb2xsZXIgKnBkZkxheWVyQ29udHJvbGxl
ciwgUERGUGx1Z2luKiBwbHVnaW4pCiAgICAgICAgIDogUERGUGx1Z2luQW5ub3RhdGlvbihhbm5v
dGF0aW9uLCBwZGZMYXllckNvbnRyb2xsZXIsIHBsdWdpbikKKyAgICAgICAgLCBtX2V2ZW50TGlz
dGVuZXIoUERGUGx1Z2luVGV4dEFubm90YXRpb25FdmVudExpc3RlbmVyOjpjcmVhdGUodGhpcykp
CiAgICAgewogICAgIH0KIAorICAgIGNsYXNzIFBERlBsdWdpblRleHRBbm5vdGF0aW9uRXZlbnRM
aXN0ZW5lciA6IHB1YmxpYyBXZWJDb3JlOjpFdmVudExpc3RlbmVyIHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBERlBsdWdpblRleHRBbm5vdGF0aW9uRXZlbnRMaXN0
ZW5lcj4gY3JlYXRlKFBERlBsdWdpblRleHRBbm5vdGF0aW9uKiBhbm5vdGF0aW9uKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBERlBsdWdpblRleHRBbm5vdGF0
aW9uRXZlbnRMaXN0ZW5lcihhbm5vdGF0aW9uKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0
dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikgT1ZFUlJJ
REUgeyByZXR1cm4gdGhpcyA9PSAmbGlzdGVuZXI7IH0KKworICAgIHByaXZhdGU6CisgICAgICAg
IFBERlBsdWdpblRleHRBbm5vdGF0aW9uRXZlbnRMaXN0ZW5lcihQREZQbHVnaW5UZXh0QW5ub3Rh
dGlvbiogYW5ub3RhdGlvbikKKyAgICAgICAgICAgIDogV2ViQ29yZTo6RXZlbnRMaXN0ZW5lcihX
ZWJDb3JlOjpFdmVudExpc3RlbmVyOjpDUFBFdmVudExpc3RlbmVyVHlwZSkKKyAgICAgICAgICAg
ICwgbV9hbm5vdGF0aW9uKGFubm90YXRpb24pCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAg
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgV2ViQ29yZTo6RXZlbnQqKSBPVkVSUklERTsKKworICAgICAgICBQREZQbHVnaW5UZXh0
QW5ub3RhdGlvbiogbV9hbm5vdGF0aW9uOworICAgIH07CisKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6RWxlbWVudD4gY3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKSBPVkVSUklERTsK
IAogICAgIFBERkFubm90YXRpb25UZXh0V2lkZ2V0ICogdGV4dEFubm90YXRpb24oKSB7IHJldHVy
biBzdGF0aWNfY2FzdDxQREZBbm5vdGF0aW9uVGV4dFdpZGdldCAqPihhbm5vdGF0aW9uKCkpOyB9
CisKKyAgICBSZWZQdHI8UERGUGx1Z2luVGV4dEFubm90YXRpb25FdmVudExpc3RlbmVyPiBtX2V2
ZW50TGlzdGVuZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRl
eHRBbm5vdGF0aW9uLm1tCmluZGV4IGY2OWE1ZDUuLjZjODEwNTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5U
ZXh0QW5ub3RhdGlvbi5tbQpAQCAtMzEsMTUgKzMxLDE5IEBACiAjaW1wb3J0ICJQREZBbm5vdGF0
aW9uVGV4dFdpZGdldERldGFpbHMuaCIKICNpbXBvcnQgIlBERktpdEltcG9ydHMuaCIKICNpbXBv
cnQgIlBERkxheWVyQ29udHJvbGxlckRldGFpbHMuaCIKKyNpbXBvcnQgIlBERlBsdWdpbi5oIgog
I2ltcG9ydCA8UERGS2l0L1BERktpdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9DU1NQcmltaXRpdmVW
YWx1ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9DU1NQcm9wZXJ0eU5hbWVzLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0NvbG9yTWFjLmg+CisjaW1wb3J0IDxXZWJDb3JlL0V2ZW50Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0hUTUxFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxJbnB1dEVsZW1lbnQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9QYWdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dpbmRvd3NLZXlib2FyZENv
ZGVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC03MSw2ICs3NSwxMSBAQCBQ
YXNzUmVmUHRyPFBERlBsdWdpblRleHRBbm5vdGF0aW9uPiBQREZQbHVnaW5UZXh0QW5ub3RhdGlv
bjo6Y3JlYXRlKFBERkFubm90YXRpbwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgUERGUGx1Z2lu
VGV4dEFubm90YXRpb24oYW5ub3RhdGlvbiwgcGRmTGF5ZXJDb250cm9sbGVyLCBwbHVnaW4pKTsK
IH0KIAorUERGUGx1Z2luVGV4dEFubm90YXRpb246On5QREZQbHVnaW5UZXh0QW5ub3RhdGlvbigp
Cit7CisgICAgZWxlbWVudCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5rZXlk
b3duRXZlbnQsIG1fZXZlbnRMaXN0ZW5lci5nZXQoKSwgZmFsc2UpOworfQorCiBQYXNzUmVmUHRy
PEVsZW1lbnQ+IFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVu
dCgpCiB7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQ7CkBAIC04NCw2ICs5Myw4IEBAIFBh
c3NSZWZQdHI8RWxlbWVudD4gUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZUFubm90YXRp
b25FbGVtZW50KCkKICAgICBlbHNlCiAgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC0+Y3JlYXRl
RWxlbWVudChpbnB1dFRhZywgZmFsc2UpOwogCisgICAgZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50LCBtX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsKKwog
ICAgIFN0eWxlZEVsZW1lbnQqIHN0eWxlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTdHlsZWRFbGVt
ZW50Kj4oZWxlbWVudC5nZXQoKSk7CiAKICAgICAvLyBGSVhNRTogTWF0Y2ggZm9udCB3ZWlnaHQg
YW5kIHN0eWxlIGFzIHdlbGw/CkBAIC0xMTcsNiArMTI4LDIyIEBAIHZvaWQgUERGUGx1Z2luVGV4
dEFubm90YXRpb246OmNvbW1pdCgpCiAgICAgICAgIHRleHRBbm5vdGF0aW9uLnN0cmluZ1ZhbHVl
ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQoKSktPnZhbHVlKCk7CiB9
CiAKK3ZvaWQgUERGUGx1Z2luVGV4dEFubm90YXRpb246OlBERlBsdWdpblRleHRBbm5vdGF0aW9u
RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50
KiBldmVudCkKK3sKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5ZG93
bkV2ZW50KSB7CisgICAgICAgIEtleWJvYXJkRXZlbnQqIGtleWJvYXJkRXZlbnQgPSBzdGF0aWNf
Y2FzdDxLZXlib2FyZEV2ZW50Kj4oZXZlbnQpOworCisgICAgICAgIGlmIChrZXlib2FyZEV2ZW50
LT5rZXlDb2RlKCkgPT0gVktfVEFCKSB7CisgICAgICAgICAgICBpZiAoa2V5Ym9hcmRFdmVudC0+
Z2V0TW9kaWZpZXJTdGF0ZSgiU2hpZnQiKSkKKyAgICAgICAgICAgICAgICBtX2Fubm90YXRpb24t
PnBsdWdpbigpLT5mb2N1c1ByZXZpb3VzQW5ub3RhdGlvbigpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIG1fYW5ub3RhdGlvbi0+cGx1Z2luKCktPmZvY3VzTmV4dEFubm90YXRp
b24oKTsKKworICAgICAgICAgICAgZXZlbnQtPnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFBE
RktJVF9QTFVHSU4pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186973</attachid>
            <date>2013-02-06 18:41:46 -0800</date>
            <delta_ts>2013-02-25 13:05:23 -0800</delta_ts>
            <desc>patch</desc>
            <filename>tab.diff</filename>
            <type>text/plain</type>
            <size>11489</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmNGVmNWNkLi44ZWQxNzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTMtMDItMDYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUERGUGx1Z2luOiBUYWIgYmV0d2VlbiB0ZXh0IGFubm90YXRpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY1MzkKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzEyNzUxNzg5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IEV4cG9ydCBLZXlib2FyZEV2ZW50
OjpnZXRNb2RpZmllclN0YXRlLgorCiAyMDEzLTAyLTA2ICBTaGF3biBTaW5naCAgPHNoYXduc2lu
Z2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbmRlckxheWVyIGhhc1Zpc2libGVDb250ZW50
KCkgaGFzIGluY29uc2lzdGVudCBzZW1hbnRpY3MgY2F1c2luZyBkaXNhcHBlYXJpbmcgY29tcG9z
aXRlZCBsYXllcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggMDM4ZTVlMi4uZmRiMDdhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KQEAgLTEyMjcsNiArMTIyNyw3IEBAIF9fWk5LN1dlYkNvcmUxM0hp
dFRlc3RSZXN1bHQ1aW1hZ2VFdgogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDV0aXRsZUVS
TlNfMTNUZXh0RGlyZWN0aW9uRQogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDlpbWFnZVJl
Y3RFdgogX19aTks3V2ViQ29yZTEzR3JhcGhpY3NMYXllcjE3cmVwb3J0TWVtb3J5VXNhZ2VFUE4z
V1RGMTZNZW1vcnlPYmplY3RJbmZvRQorX19aTks3V2ViQ29yZTEzS2V5Ym9hcmRFdmVudDE2Z2V0
TW9kaWZpZXJTdGF0ZUVSS04zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmUxM1Jlc291cmNlRXJy
b3I3Y2ZFcnJvckV2CiBfX1pOSzdXZWJDb3JlMTNSZXNvdXJjZUVycm9yN25zRXJyb3JFdgogX19a
Tks3V2ViQ29yZTEzUmVzb3VyY2VFcnJvcmN2UDdOU0Vycm9yRXYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlMzY5
NGQ2Li5hYzNmNGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTMtMDItMDYgIFRp
bSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUERGUGx1Z2lu
OiBUYWIgYmV0d2VlbiB0ZXh0IGFubm90YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY1MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEy
NzUxNzg5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZMYXllckNvbnRyb2xsZXJEZXRhaWxzLmg6IEFk
ZCBhY3RpdmF0ZU5leHRBbm5vdGF0aW9uOiBTUEkuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKFBERlBsdWdpbik6IEFkZCBmb2N1cyhOZXh0
fFByZXZpb3VzKUFubm90YXRpb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Zm9jdXNOZXh0QW5ub3Rh
dGlvbik6IEFzayBQREZMYXllckNvbnRyb2xsZXIgdG8gZm9jdXMgdGhlIG5leHQgYW5ub3RhdGlv
bi4KKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpmb2N1c1ByZXZpb3VzQW5ub3RhdGlvbik6
IEFzayBQREZMYXllckNvbnRyb2xsZXIgdG8gZm9jdXMgdGhlIG5leHQgYW5ub3RhdGlvbi4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24uaDogRHJp
dmUtYnksIGluaXRpYWxpemUgbV9wYXJlbnQgdG8gMC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBs
dWdpbkFubm90YXRpb246OmF0dGFjaCk6IFVzZSBldmVudE5hbWVzKCkgaW5zdGVhZCBvZiBzdHJp
bmcgbGl0ZXJhbHMuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5U
ZXh0QW5ub3RhdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5UZXh0QW5ub3RhdGlv
bjo6UERGUGx1Z2luVGV4dEFubm90YXRpb24pOiBDcmVhdGUgb3VyIFBERlBsdWdpblRleHRBbm5v
dGF0aW9uRXZlbnRMaXN0ZW5lci4KKyAgICAgICAgKFBERlBsdWdpblRleHRBbm5vdGF0aW9uRXZl
bnRMaXN0ZW5lcik6IEFkZGVkIGFuIGV2ZW50IGxpc3RlbmVyIChmb3Iga2V5ZG93biBldmVudHMg
aW4gZm9ybSBmaWVsZHMpLgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5UZXh0QW5ub3RhdGlv
bjo6UERGUGx1Z2luVGV4dEFubm90YXRpb25FdmVudExpc3RlbmVyOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6UERGUGx1Z2luVGV4dEFubm90YXRp
b25FdmVudExpc3RlbmVyOjpQREZQbHVnaW5UZXh0QW5ub3RhdGlvbkV2ZW50TGlzdGVuZXIpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24u
bW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpblRleHRBbm5vdGF0aW9uOjp+UERGUGx1Z2lu
VGV4dEFubm90YXRpb24pOiBVbnJlZ2lzdGVyIG91ciBrZXlkb3duIGV2ZW50IGxpc3RlbmVyLgor
ICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlv
bkVsZW1lbnQpOiBSZWdpc3RlciBvdXIga2V5ZG93biBldmVudCBsaXN0ZW5lci4KKyAgICAgICAg
KFdlYktpdDo6UERGUGx1Z2luVGV4dEFubm90YXRpb246OlBERlBsdWdpblRleHRBbm5vdGF0aW9u
RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOiBBc2sgUERGUGx1Z2luIHRvIGZvY3VzCisgICAg
ICAgIHRoZSBuZXh0L3ByZXZpb3VzIGFubm90YXRpb24gd2hlbiB0aGUgdGFiIGtleSBpcyBwcmVz
c2VkIChTaGlmdC1UYWIgZ29lcyBiYWNrd2FyZHMpLgorCiAyMDEzLTAyLTA2ICBTdWRhcnNhbmEg
TmFnaW5lbmkgIDxzdWRhcnNhbmEubmFnaW5lbmlAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxd
W1dLMl0gQXNzZXJ0aW9uIGZhaWx1cmUgb24gTWluaUJyb3dzZXIgZXhpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZMYXllckNvbnRyb2xsZXJE
ZXRhaWxzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERkxheWVy
Q29udHJvbGxlckRldGFpbHMuaAppbmRleCA3MzFiODk5Li5iYWU4YzQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERkxheWVyQ29udHJvbGxlckRl
dGFpbHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERkxh
eWVyQ29udHJvbGxlckRldGFpbHMuaApAQCAtMTAwLDYgKzEwMCw3IEBACiAtIChCT09MKWh1ZEVu
YWJsZWQ7CiAKIC0gKENHUmVjdClib3VuZHNGb3JBbm5vdGF0aW9uOihQREZBbm5vdGF0aW9uICop
YW5ub3RhdGlvbjsKKy0gKHZvaWQpYWN0aXZhdGVOZXh0QW5ub3RhdGlvbjooQk9PTClwcmV2aW91
czsKIAogLSAodm9pZClzZWFyY2hJbkRpY3Rpb25hcnlXaXRoU2VsZWN0aW9uOihQREZTZWxlY3Rp
b24gKilzZWxlY3Rpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5oCmluZGV4IDM4YTU3YWIuLmJkNDkzOWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtNzgsNiAr
NzgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCB3cml0ZUl0ZW1zVG9QYXN0ZWJvYXJkKE5TQXJyYXkg
Kml0ZW1zLCBOU0FycmF5ICp0eXBlcyk7CiAgICAgdm9pZCBzaG93RGVmaW5pdGlvbkZvckF0dHJp
YnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICosIENHUG9pbnQpOwogCisgICAgdm9pZCBm
b2N1c05leHRBbm5vdGF0aW9uKCk7CisgICAgdm9pZCBmb2N1c1ByZXZpb3VzQW5ub3RhdGlvbigp
OworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFBERlBsdWdpbihXZWJGcmFtZSopOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmlu
ZGV4IDVjMWU1OWIuLjJmNTlhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC05NDksNiArOTQ5LDE2IEBAIGJvb2wgUERG
UGx1Z2luOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYgcG9pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgUERGUGx1Z2luOjpm
b2N1c05leHRBbm5vdGF0aW9uKCkKK3sKKyAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0KCkg
YWN0aXZhdGVOZXh0QW5ub3RhdGlvbjpmYWxzZV07Cit9CisKK3ZvaWQgUERGUGx1Z2luOjpmb2N1
c1ByZXZpb3VzQW5ub3RhdGlvbigpCit7CisgICAgW21fcGRmTGF5ZXJDb250cm9sbGVyLmdldCgp
IGFjdGl2YXRlTmV4dEFubm90YXRpb246dHJ1ZV07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCiAjZW5kaWYgLy8gRU5BQkxFKFBERktJVF9QTFVHSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24uaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5o
CmluZGV4IGQ2ZTNlZTYuLjdhODg1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5oCkBAIC02MCw3
ICs2MCw4IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFBERlBsdWdpbkFubm90YXRpb24o
UERGQW5ub3RhdGlvbiAqYW5ub3RhdGlvbiwgUERGTGF5ZXJDb250cm9sbGVyICpwZGZMYXllckNv
bnRyb2xsZXIsIFBERlBsdWdpbiogcGx1Z2luKQotICAgICAgICA6IG1fYW5ub3RhdGlvbihhbm5v
dGF0aW9uKQorICAgICAgICA6IG1fcGFyZW50KDApCisgICAgICAgICwgbV9hbm5vdGF0aW9uKGFu
bm90YXRpb24pCiAgICAgICAgICwgbV9ldmVudExpc3RlbmVyKFBERlBsdWdpbkFubm90YXRpb25F
dmVudExpc3RlbmVyOjpjcmVhdGUodGhpcykpCiAgICAgICAgICwgbV9wZGZMYXllckNvbnRyb2xs
ZXIocGRmTGF5ZXJDb250cm9sbGVyKQogICAgICAgICAsIG1fcGx1Z2luKHBsdWdpbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5u
b3RhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luQW5ub3RhdGlvbi5tbQppbmRleCBlZmJjMTlkLi5lY2M2ODU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5v
dGF0aW9uLm1tCkBAIC02OSw4ICs2OSw4IEBAIHZvaWQgUERGUGx1Z2luQW5ub3RhdGlvbjo6YXR0
YWNoKEVsZW1lbnQqIHBhcmVudCkKICAgICBtX2VsZW1lbnQgPSBjcmVhdGVBbm5vdGF0aW9uRWxl
bWVudCgpOwogCiAgICAgbV9lbGVtZW50LT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCAiYW5ub3Rh
dGlvbiIpOwotICAgIG1fZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgbV9ldmVu
dExpc3RlbmVyLCBmYWxzZSk7Ci0gICAgbV9lbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKCJibHVy
IiwgbV9ldmVudExpc3RlbmVyLCBmYWxzZSk7CisgICAgbV9lbGVtZW50LT5hZGRFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5jaGFuZ2VFdmVudCwgbV9ldmVudExpc3RlbmVyLCBmYWxzZSk7Cisg
ICAgbV9lbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQsIG1f
ZXZlbnRMaXN0ZW5lciwgZmFsc2UpOwogCiAgICAgdXBkYXRlR2VvbWV0cnkoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0
QW5ub3RhdGlvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW5UZXh0QW5ub3RhdGlvbi5oCmluZGV4IDYyNjYyOGUuLjBiYjA3OTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpblRleHRBbm5vdGF0aW9uLmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBjbGFzcyBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbiA6IHB1YmxpYyBQREZQbHVnaW5Bbm5vdGF0
aW9uIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQREZQbHVnaW5UZXh0QW5ub3Rh
dGlvbj4gY3JlYXRlKFBERkFubm90YXRpb24gKiwgUERGTGF5ZXJDb250cm9sbGVyICosIFBERlBs
dWdpbiopOworICAgIHZpcnR1YWwgflBERlBsdWdpblRleHRBbm5vdGF0aW9uKCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlR2VvbWV0cnkoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
Y29tbWl0KCkgT1ZFUlJJREU7CkBAIC00OCwxMiArNDksMzYgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbihQREZBbm5vdGF0aW9uICphbm5vdGF0aW9uLCBQ
REZMYXllckNvbnRyb2xsZXIgKnBkZkxheWVyQ29udHJvbGxlciwgUERGUGx1Z2luKiBwbHVnaW4p
CiAgICAgICAgIDogUERGUGx1Z2luQW5ub3RhdGlvbihhbm5vdGF0aW9uLCBwZGZMYXllckNvbnRy
b2xsZXIsIHBsdWdpbikKKyAgICAgICAgLCBtX2V2ZW50TGlzdGVuZXIoUERGUGx1Z2luVGV4dEFu
bm90YXRpb25FdmVudExpc3RlbmVyOjpjcmVhdGUodGhpcykpCiAgICAgewogICAgIH0KIAorICAg
IGNsYXNzIFBERlBsdWdpblRleHRBbm5vdGF0aW9uRXZlbnRMaXN0ZW5lciA6IHB1YmxpYyBXZWJD
b3JlOjpFdmVudExpc3RlbmVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFBERlBsdWdpblRleHRBbm5vdGF0aW9uRXZlbnRMaXN0ZW5lcj4gY3JlYXRlKFBERlBsdWdp
blRleHRBbm5vdGF0aW9uKiBhbm5vdGF0aW9uKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFBERlBsdWdpblRleHRBbm5vdGF0aW9uRXZlbnRMaXN0ZW5lcihhbm5v
dGF0aW9uKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikgT1ZFUlJJREUgeyByZXR1cm4gdGhpcyA9PSAm
bGlzdGVuZXI7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFBERlBsdWdpblRleHRBbm5vdGF0
aW9uRXZlbnRMaXN0ZW5lcihQREZQbHVnaW5UZXh0QW5ub3RhdGlvbiogYW5ub3RhdGlvbikKKyAg
ICAgICAgICAgIDogV2ViQ29yZTo6RXZlbnRMaXN0ZW5lcihXZWJDb3JlOjpFdmVudExpc3RlbmVy
OjpDUFBFdmVudExpc3RlbmVyVHlwZSkKKyAgICAgICAgICAgICwgbV9hbm5vdGF0aW9uKGFubm90
YXRpb24pCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5k
bGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViQ29yZTo6RXZlbnQq
KSBPVkVSUklERTsKKworICAgICAgICBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbiogbV9hbm5vdGF0
aW9uOworICAgIH07CisKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4g
Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKSBPVkVSUklERTsKIAogICAgIFBERkFubm90YXRpb25U
ZXh0V2lkZ2V0ICogdGV4dEFubm90YXRpb24oKSB7IHJldHVybiBzdGF0aWNfY2FzdDxQREZBbm5v
dGF0aW9uVGV4dFdpZGdldCAqPihhbm5vdGF0aW9uKCkpOyB9CisKKyAgICBSZWZQdHI8UERGUGx1
Z2luVGV4dEFubm90YXRpb25FdmVudExpc3RlbmVyPiBtX2V2ZW50TGlzdGVuZXI7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tCmluZGV4
IGY2OWE1ZDUuLmRjM2ZjZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbQpAQCAt
MzEsMTUgKzMxLDE5IEBACiAjaW1wb3J0ICJQREZBbm5vdGF0aW9uVGV4dFdpZGdldERldGFpbHMu
aCIKICNpbXBvcnQgIlBERktpdEltcG9ydHMuaCIKICNpbXBvcnQgIlBERkxheWVyQ29udHJvbGxl
ckRldGFpbHMuaCIKKyNpbXBvcnQgIlBERlBsdWdpbi5oIgogI2ltcG9ydCA8UERGS2l0L1BERktp
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9DU1NQcmltaXRpdmVWYWx1ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9DU1NQcm9wZXJ0eU5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL0V2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxFbGVtZW50Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxJbnB1dEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUv
SFRNTE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxUZXh0QXJlYUVsZW1lbnQuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+
CisjaW1wb3J0IDxXZWJDb3JlL1dpbmRvd3NLZXlib2FyZENvZGVzLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCkBAIC03MSw2ICs3NSwxMSBAQCBQYXNzUmVmUHRyPFBERlBsdWdpblRl
eHRBbm5vdGF0aW9uPiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6Y3JlYXRlKFBERkFubm90YXRp
bwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgUERGUGx1Z2luVGV4dEFubm90YXRpb24oYW5ub3Rh
dGlvbiwgcGRmTGF5ZXJDb250cm9sbGVyLCBwbHVnaW4pKTsKIH0KIAorUERGUGx1Z2luVGV4dEFu
bm90YXRpb246On5QREZQbHVnaW5UZXh0QW5ub3RhdGlvbigpCit7CisgICAgZWxlbWVudCgpLT5y
ZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQsIG1fZXZlbnRMaXN0
ZW5lci5nZXQoKSwgZmFsc2UpOworfQorCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IFBERlBsdWdpblRl
eHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpCiB7CiAgICAgUmVmUHRyPEVs
ZW1lbnQ+IGVsZW1lbnQ7CkBAIC04NCw2ICs5Myw4IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gUERG
UGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkKICAgICBlbHNl
CiAgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudChpbnB1dFRhZywgZmFs
c2UpOwogCisgICAgZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkua2V5ZG93
bkV2ZW50LCBtX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsKKwogICAgIFN0eWxlZEVsZW1lbnQqIHN0
eWxlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4oZWxlbWVudC5nZXQoKSk7
CiAKICAgICAvLyBGSVhNRTogTWF0Y2ggZm9udCB3ZWlnaHQgYW5kIHN0eWxlIGFzIHdlbGw/CkBA
IC0xMTcsNiArMTI4LDI1IEBAIHZvaWQgUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNvbW1pdCgp
CiAgICAgICAgIHRleHRBbm5vdGF0aW9uLnN0cmluZ1ZhbHVlID0gc3RhdGljX2Nhc3Q8SFRNTElu
cHV0RWxlbWVudCo+KGVsZW1lbnQoKSktPnZhbHVlKCk7CiB9CiAKK3ZvaWQgUERGUGx1Z2luVGV4
dEFubm90YXRpb246OlBERlBsdWdpblRleHRBbm5vdGF0aW9uRXZlbnRMaXN0ZW5lcjo6aGFuZGxl
RXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAo
ZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50KSB7CisgICAgICAgIEtl
eWJvYXJkRXZlbnQqIGtleWJvYXJkRXZlbnQgPSBzdGF0aWNfY2FzdDxLZXlib2FyZEV2ZW50Kj4o
ZXZlbnQpOworCisgICAgICAgIGlmIChrZXlib2FyZEV2ZW50LT5rZXlDb2RlKCkgPT0gVktfVEFC
KSB7CisgICAgICAgICAgICBpZiAoa2V5Ym9hcmRFdmVudC0+Y3RybEtleSgpIHx8IGtleWJvYXJk
RXZlbnQtPm1ldGFLZXkoKSB8fCBrZXlib2FyZEV2ZW50LT5hbHRLZXkoKSB8fCBrZXlib2FyZEV2
ZW50LT5hbHRHcmFwaEtleSgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgaWYgKGtleWJvYXJkRXZlbnQtPnNoaWZ0S2V5KCkpCisgICAgICAgICAg
ICAgICAgbV9hbm5vdGF0aW9uLT5wbHVnaW4oKS0+Zm9jdXNQcmV2aW91c0Fubm90YXRpb24oKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtX2Fubm90YXRpb24tPnBsdWdpbigp
LT5mb2N1c05leHRBbm5vdGF0aW9uKCk7CisKKyAgICAgICAgICAgIGV2ZW50LT5wcmV2ZW50RGVm
YXVsdCgpOworICAgICAgICB9CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I2VuZGlmIC8vIEVOQUJMRShQREZLSVRfUExVR0lOKQo=
</data>
<flag name="review"
          id="206606"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190111</attachid>
            <date>2013-02-25 13:05:23 -0800</date>
            <delta_ts>2013-02-25 13:10:52 -0800</delta_ts>
            <desc>addressing darin&apos;s comments</desc>
            <filename>tab.diff</filename>
            <type>text/plain</type>
            <size>11496</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmMThiODc5Li4xODhiYTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTMtMDItMjUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUERGUGx1Z2luOiBUYWIgYmV0d2VlbiB0ZXh0IGFubm90YXRpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY1MzkKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzEyNzUxNzg5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZMYXllckNvbnRy
b2xsZXJEZXRhaWxzLmg6IEFkZCBhY3RpdmF0ZU5leHRBbm5vdGF0aW9uOiBTUEkuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKFBERlBsdWdp
bik6IEFkZCBmb2N1cyhOZXh0fFByZXZpb3VzKUFubm90YXRpb24uCisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdp
bjo6Zm9jdXNOZXh0QW5ub3RhdGlvbik6IEFzayBQREZMYXllckNvbnRyb2xsZXIgdG8gZm9jdXMg
dGhlIG5leHQgYW5ub3RhdGlvbi4KKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpmb2N1c1By
ZXZpb3VzQW5ub3RhdGlvbik6IEFzayBQREZMYXllckNvbnRyb2xsZXIgdG8gZm9jdXMgdGhlIG5l
eHQgYW5ub3RhdGlvbi4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bkFubm90YXRpb24uaDogRHJpdmUtYnksIGluaXRpYWxpemUgbV9wYXJlbnQgdG8gMC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24ubW06CisgICAg
ICAgIChXZWJLaXQ6OlBERlBsdWdpbkFubm90YXRpb246OmF0dGFjaCk6IFVzZSBldmVudE5hbWVz
KCkgaW5zdGVhZCBvZiBzdHJpbmcgbGl0ZXJhbHMuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpQREZQ
bHVnaW5UZXh0QW5ub3RhdGlvbjo6UERGUGx1Z2luVGV4dEFubm90YXRpb24pOiBDcmVhdGUgb3Vy
IFBERlBsdWdpblRleHRBbm5vdGF0aW9uRXZlbnRMaXN0ZW5lci4KKyAgICAgICAgKFBERlBsdWdp
blRleHRBbm5vdGF0aW9uRXZlbnRMaXN0ZW5lcik6IEFkZGVkIGFuIGV2ZW50IGxpc3RlbmVyIChm
b3Iga2V5ZG93biBldmVudHMgaW4gZm9ybSBmaWVsZHMpLgorICAgICAgICAoV2ViS2l0OjpQREZQ
bHVnaW5UZXh0QW5ub3RhdGlvbjo6UERGUGx1Z2luVGV4dEFubm90YXRpb25FdmVudExpc3RlbmVy
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6UERG
UGx1Z2luVGV4dEFubm90YXRpb25FdmVudExpc3RlbmVyOjpQREZQbHVnaW5UZXh0QW5ub3RhdGlv
bkV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luVGV4dEFubm90YXRpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpblRleHRBbm5v
dGF0aW9uOjp+UERGUGx1Z2luVGV4dEFubm90YXRpb24pOiBVbnJlZ2lzdGVyIG91ciBrZXlkb3du
IGV2ZW50IGxpc3RlbmVyLgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5UZXh0QW5ub3RhdGlv
bjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQpOiBSZWdpc3RlciBvdXIga2V5ZG93biBldmVudCBs
aXN0ZW5lci4KKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luVGV4dEFubm90YXRpb246OlBERlBs
dWdpblRleHRBbm5vdGF0aW9uRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOiBBc2sgUERGUGx1
Z2luIHRvIGZvY3VzCisgICAgICAgIHRoZSBuZXh0L3ByZXZpb3VzIGFubm90YXRpb24gd2hlbiB0
aGUgdGFiIGtleSBpcyBwcmVzc2VkIChTaGlmdC1UYWIgZ29lcyBiYWNrd2FyZHMpLgorCiAyMDEz
LTAyLTIyICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAg
IFtXSzJdIFRoZSByb290IGFuZCBwYWdlIG92ZXJsYXkgbGF5ZXJzIHNob3VsZCBiZSB0aGUgc2l6
ZSBvZiB0aGUgdmlldywgbm90IHRoZSBjb250ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERkxheWVyQ29udHJvbGxlckRldGFpbHMuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGTGF5ZXJDb250cm9sbGVyRGV0
YWlscy5oCmluZGV4IDczMWI4OTkuLmJhZThjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGTGF5ZXJDb250cm9sbGVyRGV0YWlscy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGTGF5ZXJDb250cm9sbGVy
RGV0YWlscy5oCkBAIC0xMDAsNiArMTAwLDcgQEAKIC0gKEJPT0wpaHVkRW5hYmxlZDsKIAogLSAo
Q0dSZWN0KWJvdW5kc0ZvckFubm90YXRpb246KFBERkFubm90YXRpb24gKilhbm5vdGF0aW9uOwor
LSAodm9pZClhY3RpdmF0ZU5leHRBbm5vdGF0aW9uOihCT09MKXByZXZpb3VzOwogCiAtICh2b2lk
KXNlYXJjaEluRGljdGlvbmFyeVdpdGhTZWxlY3Rpb246KFBERlNlbGVjdGlvbiAqKXNlbGVjdGlv
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLmgKaW5kZXggMzhhNTdhYi4uYmQ0OTM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC03OCw2ICs3OCw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHdyaXRlSXRlbXNUb1Bhc3RlYm9hcmQoTlNBcnJheSAqaXRlbXMsIE5TQXJy
YXkgKnR5cGVzKTsKICAgICB2b2lkIHNob3dEZWZpbml0aW9uRm9yQXR0cmlidXRlZFN0cmluZyhO
U0F0dHJpYnV0ZWRTdHJpbmcgKiwgQ0dQb2ludCk7CiAKKyAgICB2b2lkIGZvY3VzTmV4dEFubm90
YXRpb24oKTsKKyAgICB2b2lkIGZvY3VzUHJldmlvdXNBbm5vdGF0aW9uKCk7CisKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgUERGUGx1Z2luKFdlYkZyYW1lKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggNWMxZTU5Yi4u
MmY1OWFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4ubW0KQEAgLTk0OSw2ICs5NDksMTYgQEAgYm9vbCBQREZQbHVnaW46OnBlcmZv
cm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBw
b2kKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBQREZQbHVnaW46OmZvY3VzTmV4dEFubm90
YXRpb24oKQoreworICAgIFttX3BkZkxheWVyQ29udHJvbGxlci5nZXQoKSBhY3RpdmF0ZU5leHRB
bm5vdGF0aW9uOmZhbHNlXTsKK30KKwordm9pZCBQREZQbHVnaW46OmZvY3VzUHJldmlvdXNBbm5v
dGF0aW9uKCkKK3sKKyAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0KCkgYWN0aXZhdGVOZXh0
QW5ub3RhdGlvbjp0cnVlXTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAv
LyBFTkFCTEUoUERGS0lUX1BMVUdJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmgKaW5kZXggZDZlM2Vl
Ni4uYjU5NGMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmgKQEAgLTYwLDcgKzYwLDggQEAgcHVi
bGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgUERGUGx1Z2luQW5ub3RhdGlvbihQREZBbm5vdGF0aW9u
ICphbm5vdGF0aW9uLCBQREZMYXllckNvbnRyb2xsZXIgKnBkZkxheWVyQ29udHJvbGxlciwgUERG
UGx1Z2luKiBwbHVnaW4pCi0gICAgICAgIDogbV9hbm5vdGF0aW9uKGFubm90YXRpb24pCisgICAg
ICAgIDogbV9wYXJlbnQoMCkKKyAgICAgICAgLCBtX2Fubm90YXRpb24oYW5ub3RhdGlvbikKICAg
ICAgICAgLCBtX2V2ZW50TGlzdGVuZXIoUERGUGx1Z2luQW5ub3RhdGlvbkV2ZW50TGlzdGVuZXI6
OmNyZWF0ZSh0aGlzKSkKICAgICAgICAgLCBtX3BkZkxheWVyQ29udHJvbGxlcihwZGZMYXllckNv
bnRyb2xsZXIpCiAgICAgICAgICwgbV9wbHVnaW4ocGx1Z2luKQpAQCAtODIsNiArODMsOCBAQCBw
cml2YXRlOgogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlz
dGVuZXImIGxpc3RlbmVyKSBPVkVSUklERSB7IHJldHVybiB0aGlzID09ICZsaXN0ZW5lcjsgfQog
CisgICAgICAgIHZvaWQgc2V0QW5ub3RhdGlvbihQREZQbHVnaW5Bbm5vdGF0aW9uKiBhbm5vdGF0
aW9uKSB7IG1fYW5ub3RhdGlvbiA9IGFubm90YXRpb247IH0KKwogICAgIHByaXZhdGU6CiAKICAg
ICAgICAgUERGUGx1Z2luQW5ub3RhdGlvbkV2ZW50TGlzdGVuZXIoUERGUGx1Z2luQW5ub3RhdGlv
biogYW5ub3RhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbQppbmRleCBlZmJjMTlkLi43MzVj
ODc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbkFubm90YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tCkBAIC02OSw4ICs2OSw4IEBAIHZvaWQgUERG
UGx1Z2luQW5ub3RhdGlvbjo6YXR0YWNoKEVsZW1lbnQqIHBhcmVudCkKICAgICBtX2VsZW1lbnQg
PSBjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpOwogCiAgICAgbV9lbGVtZW50LT5zZXRBdHRyaWJ1
dGUoY2xhc3NBdHRyLCAiYW5ub3RhdGlvbiIpOwotICAgIG1fZWxlbWVudC0+YWRkRXZlbnRMaXN0
ZW5lcigiY2hhbmdlIiwgbV9ldmVudExpc3RlbmVyLCBmYWxzZSk7Ci0gICAgbV9lbGVtZW50LT5h
ZGRFdmVudExpc3RlbmVyKCJibHVyIiwgbV9ldmVudExpc3RlbmVyLCBmYWxzZSk7CisgICAgbV9l
bGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jaGFuZ2VFdmVudCwgbV9ldmVu
dExpc3RlbmVyLCBmYWxzZSk7CisgICAgbV9lbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50
TmFtZXMoKS5ibHVyRXZlbnQsIG1fZXZlbnRMaXN0ZW5lciwgZmFsc2UpOwogCiAgICAgdXBkYXRl
R2VvbWV0cnkoKTsKIApAQCAtODUsNiArODUsOCBAQCBQREZQbHVnaW5Bbm5vdGF0aW9uOjp+UERG
UGx1Z2luQW5ub3RhdGlvbigpCiAgICAgbV9lbGVtZW50LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS5jaGFuZ2VFdmVudCwgbV9ldmVudExpc3RlbmVyLmdldCgpLCBmYWxzZSk7CiAg
ICAgbV9lbGVtZW50LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQs
IG1fZXZlbnRMaXN0ZW5lci5nZXQoKSwgZmFsc2UpOwogCisgICAgbV9ldmVudExpc3RlbmVyLT5z
ZXRBbm5vdGF0aW9uKDApOworCiAgICAgbV9wYXJlbnQtPnJlbW92ZUNoaWxkKGVsZW1lbnQoKSk7
CiB9CiAKQEAgLTEwMyw2ICsxMDUsOSBAQCB2b2lkIFBERlBsdWdpbkFubm90YXRpb246OnVwZGF0
ZUdlb21ldHJ5KCkKIAogdm9pZCBQREZQbHVnaW5Bbm5vdGF0aW9uOjpQREZQbHVnaW5Bbm5vdGF0
aW9uRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2
ZW50KiBldmVudCkKIHsKKyAgICBpZiAoIW1fYW5ub3RhdGlvbikKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmJsdXJFdmVudCB8fCBldmVu
dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jaGFuZ2VFdmVudCkKICAgICAgICAgbV9hbm5vdGF0
aW9uLT5wbHVnaW4oKS0+c2V0QWN0aXZlQW5ub3RhdGlvbigwKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRp
b24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4
dEFubm90YXRpb24uaAppbmRleCA2MjY2MjhlLi5iYzczNTA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0
QW5ub3RhdGlvbi5oCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3Mg
UERGUGx1Z2luVGV4dEFubm90YXRpb24gOiBwdWJsaWMgUERGUGx1Z2luQW5ub3RhdGlvbiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UERGUGx1Z2luVGV4dEFubm90YXRpb24+IGNy
ZWF0ZShQREZBbm5vdGF0aW9uICosIFBERkxheWVyQ29udHJvbGxlciAqLCBQREZQbHVnaW4qKTsK
KyAgICB2aXJ0dWFsIH5QREZQbHVnaW5UZXh0QW5ub3RhdGlvbigpOwogCiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUdlb21ldHJ5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdCgp
IE9WRVJSSURFOwpAQCAtNDgsMTIgKzQ5LDM4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUERG
UGx1Z2luVGV4dEFubm90YXRpb24oUERGQW5ub3RhdGlvbiAqYW5ub3RhdGlvbiwgUERGTGF5ZXJD
b250cm9sbGVyICpwZGZMYXllckNvbnRyb2xsZXIsIFBERlBsdWdpbiogcGx1Z2luKQogICAgICAg
ICA6IFBERlBsdWdpbkFubm90YXRpb24oYW5ub3RhdGlvbiwgcGRmTGF5ZXJDb250cm9sbGVyLCBw
bHVnaW4pCisgICAgICAgICwgbV9ldmVudExpc3RlbmVyKFBERlBsdWdpblRleHRBbm5vdGF0aW9u
RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKHRoaXMpKQogICAgIHsKICAgICB9CiAKKyAgICBjbGFzcyBQ
REZQbHVnaW5UZXh0QW5ub3RhdGlvbkV2ZW50TGlzdGVuZXIgOiBwdWJsaWMgV2ViQ29yZTo6RXZl
bnRMaXN0ZW5lciB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQREZQ
bHVnaW5UZXh0QW5ub3RhdGlvbkV2ZW50TGlzdGVuZXI+IGNyZWF0ZShQREZQbHVnaW5UZXh0QW5u
b3RhdGlvbiogYW5ub3RhdGlvbikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbkV2ZW50TGlzdGVuZXIoYW5ub3RhdGlvbikp
OworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZl
bnRMaXN0ZW5lciYgbGlzdGVuZXIpIE9WRVJSSURFIHsgcmV0dXJuIHRoaXMgPT0gJmxpc3RlbmVy
OyB9CisKKyAgICAgICAgdm9pZCBzZXRUZXh0QW5ub3RhdGlvbihQREZQbHVnaW5UZXh0QW5ub3Rh
dGlvbiogYW5ub3RhdGlvbikgeyBtX2Fubm90YXRpb24gPSBhbm5vdGF0aW9uOyB9CisKKyAgICBw
cml2YXRlOgorICAgICAgICBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbkV2ZW50TGlzdGVuZXIoUERG
UGx1Z2luVGV4dEFubm90YXRpb24qIGFubm90YXRpb24pCisgICAgICAgICAgICA6IFdlYkNvcmU6
OkV2ZW50TGlzdGVuZXIoV2ViQ29yZTo6RXZlbnRMaXN0ZW5lcjo6Q1BQRXZlbnRMaXN0ZW5lclR5
cGUpCisgICAgICAgICAgICAsIG1fYW5ub3RhdGlvbihhbm5vdGF0aW9uKQorICAgICAgICB7Cisg
ICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvcmU6OkV2ZW50KikgT1ZFUlJJREU7CisKKyAgICAg
ICAgUERGUGx1Z2luVGV4dEFubm90YXRpb24qIG1fYW5ub3RhdGlvbjsKKyAgICB9OworCiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+IGNyZWF0ZUFubm90YXRpb25FbGVt
ZW50KCkgT1ZFUlJJREU7CiAKICAgICBQREZBbm5vdGF0aW9uVGV4dFdpZGdldCAqIHRleHRBbm5v
dGF0aW9uKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UERGQW5ub3RhdGlvblRleHRXaWRnZXQgKj4o
YW5ub3RhdGlvbigpKTsgfQorCisgICAgUmVmUHRyPFBERlBsdWdpblRleHRBbm5vdGF0aW9uRXZl
bnRMaXN0ZW5lcj4gbV9ldmVudExpc3RlbmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpblRleHRBbm5vdGF0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbQppbmRleCBmNjlhNWQ1Li5iYTNjNzNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
blRleHRBbm5vdGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0KQEAgLTMxLDE1ICszMSwxOSBAQAogI2lt
cG9ydCAiUERGQW5ub3RhdGlvblRleHRXaWRnZXREZXRhaWxzLmgiCiAjaW1wb3J0ICJQREZLaXRJ
bXBvcnRzLmgiCiAjaW1wb3J0ICJQREZMYXllckNvbnRyb2xsZXJEZXRhaWxzLmgiCisjaW1wb3J0
ICJQREZQbHVnaW4uaCIKICNpbXBvcnQgPFBERktpdC9QREZLaXQuaD4KICNpbXBvcnQgPFdlYkNv
cmUvQ1NTUHJpbWl0aXZlVmFsdWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ1NTUHJvcGVydHlOYW1l
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgorI2ltcG9ydCA8V2ViQ29yZS9FdmVu
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9I
VE1MSW5wdXRFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9IVE1MVGV4dEFyZWFFbGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0tleWJv
YXJkRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9X
aW5kb3dzS2V5Ym9hcmRDb2Rlcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAt
NzEsNiArNzUsMTIgQEAgUGFzc1JlZlB0cjxQREZQbHVnaW5UZXh0QW5ub3RhdGlvbj4gUERGUGx1
Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZShQREZBbm5vdGF0aW8KICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFBERlBsdWdpblRleHRBbm5vdGF0aW9uKGFubm90YXRpb24sIHBkZkxheWVyQ29udHJv
bGxlciwgcGx1Z2luKSk7CiB9CiAKK1BERlBsdWdpblRleHRBbm5vdGF0aW9uOjp+UERGUGx1Z2lu
VGV4dEFubm90YXRpb24oKQoreworICAgIGVsZW1lbnQoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkua2V5ZG93bkV2ZW50LCBtX2V2ZW50TGlzdGVuZXIuZ2V0KCksIGZhbHNlKTsK
KyAgICBtX2V2ZW50TGlzdGVuZXItPnNldFRleHRBbm5vdGF0aW9uKDApOworfQorCiBQYXNzUmVm
UHRyPEVsZW1lbnQ+IFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxl
bWVudCgpCiB7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQ7CkBAIC04NCw2ICs5NCw4IEBA
IFBhc3NSZWZQdHI8RWxlbWVudD4gUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZUFubm90
YXRpb25FbGVtZW50KCkKICAgICBlbHNlCiAgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC0+Y3Jl
YXRlRWxlbWVudChpbnB1dFRhZywgZmFsc2UpOwogCisgICAgZWxlbWVudC0+YWRkRXZlbnRMaXN0
ZW5lcihldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50LCBtX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsK
KwogICAgIFN0eWxlZEVsZW1lbnQqIHN0eWxlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTdHlsZWRF
bGVtZW50Kj4oZWxlbWVudC5nZXQoKSk7CiAKICAgICAvLyBGSVhNRTogTWF0Y2ggZm9udCB3ZWln
aHQgYW5kIHN0eWxlIGFzIHdlbGw/CkBAIC0xMTcsNiArMTI5LDI4IEBAIHZvaWQgUERGUGx1Z2lu
VGV4dEFubm90YXRpb246OmNvbW1pdCgpCiAgICAgICAgIHRleHRBbm5vdGF0aW9uLnN0cmluZ1Zh
bHVlID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQoKSktPnZhbHVlKCk7
CiB9CiAKK3ZvaWQgUERGUGx1Z2luVGV4dEFubm90YXRpb246OlBERlBsdWdpblRleHRBbm5vdGF0
aW9uRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2
ZW50KiBldmVudCkKK3sKKyAgICBpZiAoIW1fYW5ub3RhdGlvbikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKGV2ZW50LT5pc0tleWJvYXJkRXZlbnQoKSAmJiBldmVudC0+dHlwZSgpID09IGV2
ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQpIHsKKyAgICAgICAgS2V5Ym9hcmRFdmVudCoga2V5Ym9h
cmRFdmVudCA9IHN0YXRpY19jYXN0PEtleWJvYXJkRXZlbnQqPihldmVudCk7CisKKyAgICAgICAg
aWYgKGtleWJvYXJkRXZlbnQtPmtleUlkZW50aWZpZXIoKSA9PSAiVSswMDA5IikgeworICAgICAg
ICAgICAgaWYgKGtleWJvYXJkRXZlbnQtPmN0cmxLZXkoKSB8fCBrZXlib2FyZEV2ZW50LT5tZXRh
S2V5KCkgfHwga2V5Ym9hcmRFdmVudC0+YWx0R3JhcGhLZXkoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgICAgIGlmIChrZXlib2FyZEV2ZW50LT5zaGlmdEtleSgpKQorICAg
ICAgICAgICAgICAgIG1fYW5ub3RhdGlvbi0+cGx1Z2luKCktPmZvY3VzUHJldmlvdXNBbm5vdGF0
aW9uKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9hbm5vdGF0aW9uLT5w
bHVnaW4oKS0+Zm9jdXNOZXh0QW5ub3RhdGlvbigpOworCisgICAgICAgICAgICBldmVudC0+cHJl
dmVudERlZmF1bHQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoUERGS0lUX1BMVUdJTikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190113</attachid>
            <date>2013-02-25 13:10:52 -0800</date>
            <delta_ts>2013-02-25 13:15:39 -0800</delta_ts>
            <desc>update changelog too</desc>
            <filename>tab.diff</filename>
            <type>text/plain</type>
            <size>12195</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmMThiODc5Li5jNDkwNDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkg
QEAKKzIwMTMtMDItMjUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUERGUGx1Z2luOiBUYWIgYmV0d2VlbiB0ZXh0IGFubm90YXRpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY1MzkKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzEyNzUxNzg5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzZSBbUERGTGF5ZXJDb250cm9sbGVyIGFjdGl2YXRlTmV4dEFu
bm90YXRpb246XSB0byBhZHZhbmNlIGZvY3VzIHdoZW4gdGhlIHRhYiBrZXkgaXMgaGl0IHdoaWxl
IGluc2lkZSBhIFBERiBmb3JtLgorCisgICAgICAgIEFsc28sIGEgZHJpdmUtYnkgZml4IHRvIG1h
a2UgdGhlIGxpZmV0aW1lIG9mIFBERlBsdWdpbkFubm90YXRpb25FdmVudExpc3RlbmVyJ3MgbV9h
bm5vdGF0aW9uIHBvaW50ZXIgbW9yZSBleHBsaWNpdC4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGTGF5ZXJDb250cm9sbGVyRGV0YWlscy5oOiBBZGQgYWN0aXZhdGVOZXh0
QW5ub3RhdGlvbjogU1BJLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLmg6CisgICAgICAgIChQREZQbHVnaW4pOiBBZGQgZm9jdXMoTmV4dHxQcmV2aW91cylBbm5v
dGF0aW9uLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgor
ICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmZvY3VzTmV4dEFubm90YXRpb24pOiBBc2sgUERG
TGF5ZXJDb250cm9sbGVyIHRvIGZvY3VzIHRoZSBuZXh0IGFubm90YXRpb24uCisgICAgICAgIChX
ZWJLaXQ6OlBERlBsdWdpbjo6Zm9jdXNQcmV2aW91c0Fubm90YXRpb24pOiBBc2sgUERGTGF5ZXJD
b250cm9sbGVyIHRvIGZvY3VzIHRoZSBuZXh0IGFubm90YXRpb24uCisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmg6IERyaXZlLWJ5LCBpbml0aWFs
aXplIG1fcGFyZW50IHRvIDAuCisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbkFubm90YXRpb246
OlBERlBsdWdpbkFubm90YXRpb25FdmVudExpc3RlbmVyOjpzZXRBbm5vdGF0aW9uKTogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1t
OgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5Bbm5vdGF0aW9uOjphdHRhY2gpOiBVc2UgZXZl
bnROYW1lcygpIGluc3RlYWQgb2Ygc3RyaW5nIGxpdGVyYWxzLgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW5Bbm5vdGF0aW9uOjp+UERGUGx1Z2luQW5ub3RhdGlvbik6IENsZWFyIHRoZSBldmVu
dCBsaXN0ZW5lcidzIHJlZmVyZW5jZSB0byBpdHMgYW5ub3RhdGlvbi4KKyAgICAgICAgKFdlYktp
dDo6UERGUGx1Z2luQW5ub3RhdGlvbjo6UERGUGx1Z2luQW5ub3RhdGlvbkV2ZW50TGlzdGVuZXI6
OmhhbmRsZUV2ZW50KTogTnVsbC1jaGVjayB0aGUgZXZlbnQgbGlzdGVuZXIncyBhbm5vdGF0aW9u
LgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRp
b24uaDoKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luVGV4dEFubm90YXRpb246OlBERlBsdWdp
blRleHRBbm5vdGF0aW9uKTogQ3JlYXRlIG91ciBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbkV2ZW50
TGlzdGVuZXIuCisgICAgICAgIChQREZQbHVnaW5UZXh0QW5ub3RhdGlvbkV2ZW50TGlzdGVuZXIp
OiBBZGRlZCBhbiBldmVudCBsaXN0ZW5lciAoZm9yIGtleWRvd24gZXZlbnRzIGluIGZvcm0gZmll
bGRzKS4KKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luVGV4dEFubm90YXRpb246OlBERlBsdWdp
blRleHRBbm5vdGF0aW9uRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6
UERGUGx1Z2luVGV4dEFubm90YXRpb246OlBERlBsdWdpblRleHRBbm5vdGF0aW9uRXZlbnRMaXN0
ZW5lcjo6c2V0VGV4dEFubm90YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5UZXh0
QW5ub3RhdGlvbjo6UERGUGx1Z2luVGV4dEFubm90YXRpb25FdmVudExpc3RlbmVyOjpQREZQbHVn
aW5UZXh0QW5ub3RhdGlvbkV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlBE
RlBsdWdpblRleHRBbm5vdGF0aW9uOjp+UERGUGx1Z2luVGV4dEFubm90YXRpb24pOiBVbnJlZ2lz
dGVyIG91ciBrZXlkb3duIGV2ZW50IGxpc3RlbmVyLgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW5UZXh0QW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQpOiBSZWdpc3RlciBvdXIg
a2V5ZG93biBldmVudCBsaXN0ZW5lci4KKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luVGV4dEFu
bm90YXRpb246OlBERlBsdWdpblRleHRBbm5vdGF0aW9uRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZl
bnQpOiBBc2sgUERGUGx1Z2luIHRvIGZvY3VzCisgICAgICAgIHRoZSBuZXh0L3ByZXZpb3VzIGFu
bm90YXRpb24gd2hlbiB0aGUgdGFiIGtleSBpcyBwcmVzc2VkIChTaGlmdC1UYWIgZ29lcyBiYWNr
d2FyZHMpLgorCiAyMDEzLTAyLTIyICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXSzJdIFRoZSByb290IGFuZCBwYWdlIG92ZXJsYXkgbGF5ZXJzIHNo
b3VsZCBiZSB0aGUgc2l6ZSBvZiB0aGUgdmlldywgbm90IHRoZSBjb250ZW50CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERkxheWVyQ29udHJvbGxl
ckRldGFpbHMuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGTGF5
ZXJDb250cm9sbGVyRGV0YWlscy5oCmluZGV4IDczMWI4OTkuLmJhZThjNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGTGF5ZXJDb250cm9sbGVy
RGV0YWlscy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
TGF5ZXJDb250cm9sbGVyRGV0YWlscy5oCkBAIC0xMDAsNiArMTAwLDcgQEAKIC0gKEJPT0wpaHVk
RW5hYmxlZDsKIAogLSAoQ0dSZWN0KWJvdW5kc0ZvckFubm90YXRpb246KFBERkFubm90YXRpb24g
Kilhbm5vdGF0aW9uOworLSAodm9pZClhY3RpdmF0ZU5leHRBbm5vdGF0aW9uOihCT09MKXByZXZp
b3VzOwogCiAtICh2b2lkKXNlYXJjaEluRGljdGlvbmFyeVdpdGhTZWxlY3Rpb246KFBERlNlbGVj
dGlvbiAqKXNlbGVjdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLmgKaW5kZXggMzhhNTdhYi4uYmQ0OTM5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC03OCw2
ICs3OCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHdyaXRlSXRlbXNUb1Bhc3RlYm9hcmQoTlNBcnJh
eSAqaXRlbXMsIE5TQXJyYXkgKnR5cGVzKTsKICAgICB2b2lkIHNob3dEZWZpbml0aW9uRm9yQXR0
cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKiwgQ0dQb2ludCk7CiAKKyAgICB2b2lk
IGZvY3VzTmV4dEFubm90YXRpb24oKTsKKyAgICB2b2lkIGZvY3VzUHJldmlvdXNBbm5vdGF0aW9u
KCk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUERGUGx1Z2luKFdlYkZyYW1lKik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0K
aW5kZXggNWMxZTU5Yi4uMmY1OWFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTk0OSw2ICs5NDksMTYgQEAgYm9vbCBQ
REZQbHVnaW46OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50JiBwb2kKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBQREZQbHVnaW46
OmZvY3VzTmV4dEFubm90YXRpb24oKQoreworICAgIFttX3BkZkxheWVyQ29udHJvbGxlci5nZXQo
KSBhY3RpdmF0ZU5leHRBbm5vdGF0aW9uOmZhbHNlXTsKK30KKwordm9pZCBQREZQbHVnaW46OmZv
Y3VzUHJldmlvdXNBbm5vdGF0aW9uKCkKK3sKKyAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0
KCkgYWN0aXZhdGVOZXh0QW5ub3RhdGlvbjp0cnVlXTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoUERGS0lUX1BMVUdJTikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9u
LmgKaW5kZXggZDZlM2VlNi4uYjU5NGMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmgKQEAgLTYw
LDcgKzYwLDggQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgUERGUGx1Z2luQW5ub3RhdGlv
bihQREZBbm5vdGF0aW9uICphbm5vdGF0aW9uLCBQREZMYXllckNvbnRyb2xsZXIgKnBkZkxheWVy
Q29udHJvbGxlciwgUERGUGx1Z2luKiBwbHVnaW4pCi0gICAgICAgIDogbV9hbm5vdGF0aW9uKGFu
bm90YXRpb24pCisgICAgICAgIDogbV9wYXJlbnQoMCkKKyAgICAgICAgLCBtX2Fubm90YXRpb24o
YW5ub3RhdGlvbikKICAgICAgICAgLCBtX2V2ZW50TGlzdGVuZXIoUERGUGx1Z2luQW5ub3RhdGlv
bkV2ZW50TGlzdGVuZXI6OmNyZWF0ZSh0aGlzKSkKICAgICAgICAgLCBtX3BkZkxheWVyQ29udHJv
bGxlcihwZGZMYXllckNvbnRyb2xsZXIpCiAgICAgICAgICwgbV9wbHVnaW4ocGx1Z2luKQpAQCAt
ODIsNiArODMsOCBAQCBwcml2YXRlOgogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyKSBPVkVSUklERSB7IHJldHVybiB0aGlzID09
ICZsaXN0ZW5lcjsgfQogCisgICAgICAgIHZvaWQgc2V0QW5ub3RhdGlvbihQREZQbHVnaW5Bbm5v
dGF0aW9uKiBhbm5vdGF0aW9uKSB7IG1fYW5ub3RhdGlvbiA9IGFubm90YXRpb247IH0KKwogICAg
IHByaXZhdGU6CiAKICAgICAgICAgUERGUGx1Z2luQW5ub3RhdGlvbkV2ZW50TGlzdGVuZXIoUERG
UGx1Z2luQW5ub3RhdGlvbiogYW5ub3RhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbQppbmRl
eCBlZmJjMTlkLi43MzVjODc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tCkBAIC02OSw4ICs2
OSw4IEBAIHZvaWQgUERGUGx1Z2luQW5ub3RhdGlvbjo6YXR0YWNoKEVsZW1lbnQqIHBhcmVudCkK
ICAgICBtX2VsZW1lbnQgPSBjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpOwogCiAgICAgbV9lbGVt
ZW50LT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCAiYW5ub3RhdGlvbiIpOwotICAgIG1fZWxlbWVu
dC0+YWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgbV9ldmVudExpc3RlbmVyLCBmYWxzZSk7Ci0g
ICAgbV9lbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwgbV9ldmVudExpc3RlbmVyLCBm
YWxzZSk7CisgICAgbV9lbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jaGFu
Z2VFdmVudCwgbV9ldmVudExpc3RlbmVyLCBmYWxzZSk7CisgICAgbV9lbGVtZW50LT5hZGRFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQsIG1fZXZlbnRMaXN0ZW5lciwgZmFsc2Up
OwogCiAgICAgdXBkYXRlR2VvbWV0cnkoKTsKIApAQCAtODUsNiArODUsOCBAQCBQREZQbHVnaW5B
bm5vdGF0aW9uOjp+UERGUGx1Z2luQW5ub3RhdGlvbigpCiAgICAgbV9lbGVtZW50LT5yZW1vdmVF
dmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jaGFuZ2VFdmVudCwgbV9ldmVudExpc3RlbmVyLmdl
dCgpLCBmYWxzZSk7CiAgICAgbV9lbGVtZW50LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5ibHVyRXZlbnQsIG1fZXZlbnRMaXN0ZW5lci5nZXQoKSwgZmFsc2UpOwogCisgICAgbV9l
dmVudExpc3RlbmVyLT5zZXRBbm5vdGF0aW9uKDApOworCiAgICAgbV9wYXJlbnQtPnJlbW92ZUNo
aWxkKGVsZW1lbnQoKSk7CiB9CiAKQEAgLTEwMyw2ICsxMDUsOSBAQCB2b2lkIFBERlBsdWdpbkFu
bm90YXRpb246OnVwZGF0ZUdlb21ldHJ5KCkKIAogdm9pZCBQREZQbHVnaW5Bbm5vdGF0aW9uOjpQ
REZQbHVnaW5Bbm5vdGF0aW9uRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEV2ZW50KiBldmVudCkKIHsKKyAgICBpZiAoIW1fYW5ub3RhdGlvbikKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmJs
dXJFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jaGFuZ2VFdmVudCkKICAg
ICAgICAgbV9hbm5vdGF0aW9uLT5wbHVnaW4oKS0+c2V0QWN0aXZlQW5ub3RhdGlvbigwKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luVGV4dEFubm90YXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luVGV4dEFubm90YXRpb24uaAppbmRleCA2MjY2MjhlLi5iYzczNTA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRl
eHRBbm5vdGF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogY2xhc3MgUERGUGx1Z2luVGV4dEFubm90YXRpb24gOiBwdWJsaWMgUERGUGx1Z2lu
QW5ub3RhdGlvbiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UERGUGx1Z2luVGV4
dEFubm90YXRpb24+IGNyZWF0ZShQREZBbm5vdGF0aW9uICosIFBERkxheWVyQ29udHJvbGxlciAq
LCBQREZQbHVnaW4qKTsKKyAgICB2aXJ0dWFsIH5QREZQbHVnaW5UZXh0QW5ub3RhdGlvbigpOwog
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdlb21ldHJ5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGNvbW1pdCgpIE9WRVJSSURFOwpAQCAtNDgsMTIgKzQ5LDM4IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgUERGUGx1Z2luVGV4dEFubm90YXRpb24oUERGQW5ub3RhdGlvbiAqYW5ub3Rh
dGlvbiwgUERGTGF5ZXJDb250cm9sbGVyICpwZGZMYXllckNvbnRyb2xsZXIsIFBERlBsdWdpbiog
cGx1Z2luKQogICAgICAgICA6IFBERlBsdWdpbkFubm90YXRpb24oYW5ub3RhdGlvbiwgcGRmTGF5
ZXJDb250cm9sbGVyLCBwbHVnaW4pCisgICAgICAgICwgbV9ldmVudExpc3RlbmVyKFBERlBsdWdp
blRleHRBbm5vdGF0aW9uRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKHRoaXMpKQogICAgIHsKICAgICB9
CiAKKyAgICBjbGFzcyBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbkV2ZW50TGlzdGVuZXIgOiBwdWJs
aWMgV2ViQ29yZTo6RXZlbnRMaXN0ZW5lciB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxQREZQbHVnaW5UZXh0QW5ub3RhdGlvbkV2ZW50TGlzdGVuZXI+IGNyZWF0ZShQ
REZQbHVnaW5UZXh0QW5ub3RhdGlvbiogYW5ub3RhdGlvbikKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbkV2ZW50TGlzdGVu
ZXIoYW5ub3RhdGlvbikpOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCBib29sIG9wZXJh
dG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpIE9WRVJSSURFIHsgcmV0dXJuIHRo
aXMgPT0gJmxpc3RlbmVyOyB9CisKKyAgICAgICAgdm9pZCBzZXRUZXh0QW5ub3RhdGlvbihQREZQ
bHVnaW5UZXh0QW5ub3RhdGlvbiogYW5ub3RhdGlvbikgeyBtX2Fubm90YXRpb24gPSBhbm5vdGF0
aW9uOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbkV2
ZW50TGlzdGVuZXIoUERGUGx1Z2luVGV4dEFubm90YXRpb24qIGFubm90YXRpb24pCisgICAgICAg
ICAgICA6IFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIoV2ViQ29yZTo6RXZlbnRMaXN0ZW5lcjo6Q1BQ
RXZlbnRMaXN0ZW5lclR5cGUpCisgICAgICAgICAgICAsIG1fYW5ub3RhdGlvbihhbm5vdGF0aW9u
KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZl
bnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvcmU6OkV2ZW50KikgT1ZF
UlJJREU7CisKKyAgICAgICAgUERGUGx1Z2luVGV4dEFubm90YXRpb24qIG1fYW5ub3RhdGlvbjsK
KyAgICB9OworCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+IGNyZWF0
ZUFubm90YXRpb25FbGVtZW50KCkgT1ZFUlJJREU7CiAKICAgICBQREZBbm5vdGF0aW9uVGV4dFdp
ZGdldCAqIHRleHRBbm5vdGF0aW9uKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UERGQW5ub3RhdGlv
blRleHRXaWRnZXQgKj4oYW5ub3RhdGlvbigpKTsgfQorCisgICAgUmVmUHRyPFBERlBsdWdpblRl
eHRBbm5vdGF0aW9uRXZlbnRMaXN0ZW5lcj4gbV9ldmVudExpc3RlbmVyOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbQppbmRleCBmNjlh
NWQ1Li5iYTNjNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0KQEAgLTMxLDE1
ICszMSwxOSBAQAogI2ltcG9ydCAiUERGQW5ub3RhdGlvblRleHRXaWRnZXREZXRhaWxzLmgiCiAj
aW1wb3J0ICJQREZLaXRJbXBvcnRzLmgiCiAjaW1wb3J0ICJQREZMYXllckNvbnRyb2xsZXJEZXRh
aWxzLmgiCisjaW1wb3J0ICJQREZQbHVnaW4uaCIKICNpbXBvcnQgPFBERktpdC9QREZLaXQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvQ1NTUHJpbWl0aXZlVmFsdWUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
Q1NTUHJvcGVydHlOYW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgorI2ltcG9y
dCA8V2ViQ29yZS9FdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MRWxlbWVudC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9IVE1MSW5wdXRFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxO
YW1lcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MVGV4dEFyZWFFbGVtZW50Lmg+CisjaW1wb3J0
IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgorI2lt
cG9ydCA8V2ViQ29yZS9XaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIApAQCAtNzEsNiArNzUsMTIgQEAgUGFzc1JlZlB0cjxQREZQbHVnaW5UZXh0QW5u
b3RhdGlvbj4gUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZShQREZBbm5vdGF0aW8KICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFBERlBsdWdpblRleHRBbm5vdGF0aW9uKGFubm90YXRpb24s
IHBkZkxheWVyQ29udHJvbGxlciwgcGx1Z2luKSk7CiB9CiAKK1BERlBsdWdpblRleHRBbm5vdGF0
aW9uOjp+UERGUGx1Z2luVGV4dEFubm90YXRpb24oKQoreworICAgIGVsZW1lbnQoKS0+cmVtb3Zl
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50LCBtX2V2ZW50TGlzdGVuZXIu
Z2V0KCksIGZhbHNlKTsKKyAgICBtX2V2ZW50TGlzdGVuZXItPnNldFRleHRBbm5vdGF0aW9uKDAp
OworfQorCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVh
dGVBbm5vdGF0aW9uRWxlbWVudCgpCiB7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQ7CkBA
IC04NCw2ICs5NCw4IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gUERGUGx1Z2luVGV4dEFubm90YXRp
b246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkKICAgICBlbHNlCiAgICAgICAgIGVsZW1lbnQg
PSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudChpbnB1dFRhZywgZmFsc2UpOwogCisgICAgZWxlbWVu
dC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50LCBtX2V2ZW50TGlz
dGVuZXIsIGZhbHNlKTsKKwogICAgIFN0eWxlZEVsZW1lbnQqIHN0eWxlZEVsZW1lbnQgPSBzdGF0
aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4oZWxlbWVudC5nZXQoKSk7CiAKICAgICAvLyBGSVhNRTog
TWF0Y2ggZm9udCB3ZWlnaHQgYW5kIHN0eWxlIGFzIHdlbGw/CkBAIC0xMTcsNiArMTI5LDI4IEBA
IHZvaWQgUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNvbW1pdCgpCiAgICAgICAgIHRleHRBbm5v
dGF0aW9uLnN0cmluZ1ZhbHVlID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1l
bnQoKSktPnZhbHVlKCk7CiB9CiAKK3ZvaWQgUERGUGx1Z2luVGV4dEFubm90YXRpb246OlBERlBs
dWdpblRleHRBbm5vdGF0aW9uRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoIW1fYW5ub3RhdGlvbikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKGV2ZW50LT5pc0tleWJvYXJkRXZlbnQoKSAmJiBldmVu
dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQpIHsKKyAgICAgICAgS2V5Ym9h
cmRFdmVudCoga2V5Ym9hcmRFdmVudCA9IHN0YXRpY19jYXN0PEtleWJvYXJkRXZlbnQqPihldmVu
dCk7CisKKyAgICAgICAgaWYgKGtleWJvYXJkRXZlbnQtPmtleUlkZW50aWZpZXIoKSA9PSAiVSsw
MDA5IikgeworICAgICAgICAgICAgaWYgKGtleWJvYXJkRXZlbnQtPmN0cmxLZXkoKSB8fCBrZXli
b2FyZEV2ZW50LT5tZXRhS2V5KCkgfHwga2V5Ym9hcmRFdmVudC0+YWx0R3JhcGhLZXkoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlmIChrZXlib2FyZEV2ZW50LT5z
aGlmdEtleSgpKQorICAgICAgICAgICAgICAgIG1fYW5ub3RhdGlvbi0+cGx1Z2luKCktPmZvY3Vz
UHJldmlvdXNBbm5vdGF0aW9uKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
bV9hbm5vdGF0aW9uLT5wbHVnaW4oKS0+Zm9jdXNOZXh0QW5ub3RhdGlvbigpOworCisgICAgICAg
ICAgICBldmVudC0+cHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoUERGS0lUX1BMVUdJTikK
</data>

          </attachment>
      

    </bug>

</bugzilla>