<?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>117728</bug_id>
          
          <creation_ts>2013-06-18 02:32:32 -0700</creation_ts>
          <short_desc>[EFL][WK2] Implement unit test callback: onSettingChange</short_desc>
          <delta_ts>2013-06-19 03:54:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Krzysztof Wolanski">k.wolanski</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>g.czajkowski</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>901323</commentid>
    <comment_count>0</comment_count>
    <who name="Krzysztof Wolanski">k.wolanski</who>
    <bug_when>2013-06-18 02:32:32 -0700</bug_when>
    <thetext>It is finally possible to implement missing unit tests as WebKit2-EFL
has delivered sub menu (r150254).
Add two unit tests for checking onSettingChange callback behaviour,
when toggling &quot;Check Spelling While Typing&quot; in context menu.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901324</commentid>
    <comment_count>1</comment_count>
      <attachid>204892</attachid>
    <who name="Krzysztof Wolanski">k.wolanski</who>
    <bug_when>2013-06-18 02:33:52 -0700</bug_when>
    <thetext>Created attachment 204892
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901327</commentid>
    <comment_count>2</comment_count>
      <attachid>204892</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-18 02:56:07 -0700</bug_when>
    <thetext>Comment on attachment 204892
proposed patch

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

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:238
&gt; +            break;

maybe we could return here and add a &quot;FAIL();&quot; after the loop to make sure we found the item?

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:283
&gt; +            selectContextMenuOption(ewk_context_menu_item_submenu_get(item), EWK_CONTEXT_MENU_ITEM_TAG_CHECK_SPELLING_WHILE_TYPING, EWK_CHECKABLE_ACTION_TYPE);

why not pass the item directly to selectContextMenuOption() instead of iterating over the list twice?

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:284
&gt; +            break;

same as before, would be nice to return early here and FAIL after the loop.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:373
&gt; +    isSettingEnabled = ewk_text_checker_continuous_spell_checking_enabled_get();

those 2 statements should be merged into one.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:409
&gt; +    ASSERT_FALSE(waitUntilTrue(callbacksExecutionStats.settingChange, defaultTimeoutInSeconds));

this looks weird. are we waiting to make sure the callback is *not* called? if so, isn&apos;t is terribly slow? also, the last arg is likely optional.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:426
&gt; +    ASSERT_FALSE(waitUntilTrue(callbacksExecutionStats.settingChange, defaultTimeoutInSeconds));

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901334</commentid>
    <comment_count>3</comment_count>
      <attachid>204892</attachid>
    <who name="Krzysztof Wolanski">k.wolanski</who>
    <bug_when>2013-06-18 03:38:52 -0700</bug_when>
    <thetext>Comment on attachment 204892
proposed patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:238
&gt;&gt; +            break;
&gt; 
&gt; maybe we could return here and add a &quot;FAIL();&quot; after the loop to make sure we found the item?

I will add ADD_FAILURE(), because FAIL() should not be used in functions that return non void value.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:283
&gt;&gt; +            selectContextMenuOption(ewk_context_menu_item_submenu_get(item), EWK_CONTEXT_MENU_ITEM_TAG_CHECK_SPELLING_WHILE_TYPING, EWK_CHECKABLE_ACTION_TYPE);
&gt; 
&gt; why not pass the item directly to selectContextMenuOption() instead of iterating over the list twice?

Because &quot;Check Spelling While Typing&quot; is in sub menu. First we should get sub menu from &quot;Spelling and Grammar&quot;, and then toggle &quot;Check Spelling While Typing&quot; option.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:409
&gt;&gt; +    ASSERT_FALSE(waitUntilTrue(callbacksExecutionStats.settingChange, defaultTimeoutInSeconds));
&gt; 
&gt; this looks weird. are we waiting to make sure the callback is *not* called? if so, isn&apos;t is terribly slow? also, the last arg is likely optional.

We want to call callback, when *Check Spelling While Typing* is toggled in context menu. When client invokes ewk_text_checker_continuous_spell_checking_enabled_set(), callback should not be called.
Yes, the last argument is optional and by default is 10 seconds. I have changed it to 0.5 sec. It is enough.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:426
&gt;&gt; +    ASSERT_FALSE(waitUntilTrue(callbacksExecutionStats.settingChange, defaultTimeoutInSeconds));
&gt; 
&gt; ditto.

Callback should not be called, defaultTimeoutInSeconds = 0.5. Do you suggest to remove this test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901337</commentid>
    <comment_count>4</comment_count>
      <attachid>204895</attachid>
    <who name="Krzysztof Wolanski">k.wolanski</who>
    <bug_when>2013-06-18 03:44:13 -0700</bug_when>
    <thetext>Created attachment 204895
apply suggestions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901372</commentid>
    <comment_count>5</comment_count>
      <attachid>204895</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2013-06-18 05:57:19 -0700</bug_when>
    <thetext>Comment on attachment 204895
apply suggestions

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

From spellchecking side it looks sane. Added some comments.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:240
&gt; +            break;

It seems that you didn&apos;t apply Chris&apos; comment properly. I am in a favor of return here so we could call ADD_FAILURE outside the loop. Moreover, would be nice to add additional indent here.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:290
&gt; +            break;

Ditto.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:396
&gt; +    ASSERT_TRUE(waitUntilTrue(callbacksExecutionStats.settingChange));

Please make additional line here as this is rather part of cleaning.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:416
&gt; +    ASSERT_FALSE(waitUntilTrue(callbacksExecutionStats.settingChange, defaultTimeoutInSeconds));

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901377</commentid>
    <comment_count>6</comment_count>
      <attachid>204895</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-18 06:08:42 -0700</bug_when>
    <thetext>Comment on attachment 204895
apply suggestions

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

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:433
&gt; +    ASSERT_FALSE(waitUntilTrue(callbacksExecutionStats.settingChange, defaultTimeoutInSeconds));

I think such checks slow down the api tests. maybe we should use 0 as defaultTimeoutInSeconds instead so that we process the event loop only once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901378</commentid>
    <comment_count>7</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2013-06-18 06:25:10 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 204895 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=204895&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:433
&gt; &gt; +    ASSERT_FALSE(waitUntilTrue(callbacksExecutionStats.settingChange, defaultTimeoutInSeconds));
&gt; 
&gt; I think such checks slow down the api tests. maybe we should use 0 as defaultTimeoutInSeconds instead so that we process the event loop only once.

Sounds fine for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901398</commentid>
    <comment_count>8</comment_count>
      <attachid>204914</attachid>
    <who name="Krzysztof Wolanski">k.wolanski</who>
    <bug_when>2013-06-18 07:52:41 -0700</bug_when>
    <thetext>Created attachment 204914
apply suggestions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901403</commentid>
    <comment_count>9</comment_count>
      <attachid>204914</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-18 08:08:21 -0700</bug_when>
    <thetext>Comment on attachment 204914
apply suggestions

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

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:279
&gt; +    EINA_LIST_FOREACH(contextMenuItems, listIterator, itemData) {

Still looks like a lot of duplication with selectContextMenuOption(). How about renaming the utility function to findContextMenuItem() and call it twice?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901404</commentid>
    <comment_count>10</comment_count>
      <attachid>204914</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-18 08:12:09 -0700</bug_when>
    <thetext>Comment on attachment 204914
apply suggestions

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

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:288
&gt; +    ADD_FAILURE();

ADD_FAILURE(); is non fatal. Why cannot we use FAIL() in a function returning a boolean?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901410</commentid>
    <comment_count>11</comment_count>
      <attachid>204914</attachid>
    <who name="Krzysztof Wolanski">k.wolanski</who>
    <bug_when>2013-06-18 08:22:12 -0700</bug_when>
    <thetext>Comment on attachment 204914
apply suggestions

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:279
&gt;&gt; +    EINA_LIST_FOREACH(contextMenuItems, listIterator, itemData) {
&gt; 
&gt; Still looks like a lot of duplication with selectContextMenuOption(). How about renaming the utility function to findContextMenuItem() and call it twice?

Sorry for inconvenience, method selectContextMenuOption() will be helpful in next test cases, when option will be selected directly from context menu.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:288
&gt;&gt; +    ADD_FAILURE();
&gt; 
&gt; ADD_FAILURE(); is non fatal. Why cannot we use FAIL() in a function returning a boolean?

When I use FAIL() instead of ADD_FAILURE(), it returns en error at compile time:
test_ewk2_text_checker.cpp:288:5: error: void value not ignored as it ought to be</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901412</commentid>
    <comment_count>12</comment_count>
      <attachid>204914</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-18 08:30:12 -0700</bug_when>
    <thetext>Comment on attachment 204914
apply suggestions

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:279
&gt;&gt;&gt; +    EINA_LIST_FOREACH(contextMenuItems, listIterator, itemData) {
&gt;&gt; 
&gt;&gt; Still looks like a lot of duplication with selectContextMenuOption(). How about renaming the utility function to findContextMenuItem() and call it twice?
&gt; 
&gt; Sorry for inconvenience, method selectContextMenuOption() will be helpful in next test cases, when option will be selected directly from context menu.

but ewk_context_menu_item_select(contextMenu, findContextMenuItem(contextMenu, action, type)) does the same right? and findContextMenuItem() seems to be more reusable. alternatively you can keep selectContextMenuOption() and have it use findContextMenuItem(). I just want to get rid of the code duplication for iterating over the menu items.

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:288
&gt;&gt;&gt; +    ADD_FAILURE();
&gt;&gt; 
&gt;&gt; ADD_FAILURE(); is non fatal. Why cannot we use FAIL() in a function returning a boolean?
&gt; 
&gt; When I use FAIL() instead of ADD_FAILURE(), it returns en error at compile time:
&gt; test_ewk2_text_checker.cpp:288:5: error: void value not ignored as it ought to be

ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901427</commentid>
    <comment_count>13</comment_count>
      <attachid>204920</attachid>
    <who name="Krzysztof Wolanski">k.wolanski</who>
    <bug_when>2013-06-18 09:31:06 -0700</bug_when>
    <thetext>Created attachment 204920
apply suggestions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901438</commentid>
    <comment_count>14</comment_count>
      <attachid>204920</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-18 10:18:40 -0700</bug_when>
    <thetext>Comment on attachment 204920
apply suggestions

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

LGTM. r=me with nits. Please let Grzegorz have a look before landing.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:228
&gt; +static Ewk_Context_Menu_Item* findContextMenuItem(Ewk_Context_Menu* contextMenu, const Ewk_Context_Menu_Item_Action&amp; itemAction, const Ewk_Context_Menu_Item_Type&amp; itemType)

nit: contextMenu could be a const pointer, and it is overkill to pass enum types by const reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901680</commentid>
    <comment_count>15</comment_count>
      <attachid>204920</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2013-06-19 00:33:17 -0700</bug_when>
    <thetext>Comment on attachment 204920
apply suggestions

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

Looks much better, added some comments.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:228
&gt;&gt; +static Ewk_Context_Menu_Item* findContextMenuItem(Ewk_Context_Menu* contextMenu, const Ewk_Context_Menu_Item_Action&amp; itemAction, const Ewk_Context_Menu_Item_Type&amp; itemType)
&gt; 
&gt; nit: contextMenu could be a const pointer, and it is overkill to pass enum types by const reference.

Definitely.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:234
&gt; +

nit: I wouldn&apos;t add an extra line here. Those variables are related to the loop. Would be nice to keep them closer. Moreover, other text checker tests seem to be used similar syntax.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:241
&gt; +    }
&gt; +    ADD_FAILURE();

But here IMO, a new line will show that this is just protection/notification that an item wasn&apos;t found.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:276
&gt; +    Ewk_Context_Menu_Item* checkSpellingWhileTypingItem = findContextMenuItem(ewk_context_menu_item_submenu_get(spellingAndGrammarItem), EWK_CONTEXT_MENU_ITEM_TAG_CHECK_SPELLING_WHILE_TYPING, EWK_CHECKABLE_ACTION_TYPE);

ewk_context_menu_item_submenu_get(spellingAndGrammarItem) is getting twice (here and 278). It&apos;s worth making an additional variable for it, e.g. spellingAndGrammarSubmenu ?

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:280
&gt; +    ewk_context_menu_item_select(ewk_context_menu_item_submenu_get(spellingAndGrammarItem), checkSpellingWhileTypingItem);
&gt; +
&gt; +    return true;

After applying comment above will be nice to call:
return ewk_context_menu_item_select(spellingAndGrammarSubmenu, checkSpellingWhileTypingItem);

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:368
&gt; +    resetCallbacksExecutionStats();
&gt; +
&gt; +    ewk_text_checker_continuous_spell_checking_change_cb_set(onSettingChange);
&gt; +
&gt; +    isSettingEnabled = !ewk_text_checker_continuous_spell_checking_enabled_get();
&gt; +
&gt; +    ewkViewClass()-&gt;context_menu_show = toogleCheckSpellingWhileTyping;

I&apos;d would reorder them a little and remove unnecessary empty lines:
resetCallbacksExecutionStats();
ewkViewClass()-&gt;context_menu_show = toogleCheckSpellingWhileTyping;

ewk_text_checker_continuous_spell_checking_change_cb_set(onSettingChange);
isSettingEnabled = !ewk_text_checker_continuous_spell_checking_enabled_get();

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:414
&gt; +

Not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901701</commentid>
    <comment_count>16</comment_count>
      <attachid>204976</attachid>
    <who name="Krzysztof Wolanski">k.wolanski</who>
    <bug_when>2013-06-19 01:50:32 -0700</bug_when>
    <thetext>Created attachment 204976
apply suggestions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901709</commentid>
    <comment_count>17</comment_count>
      <attachid>204976</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2013-06-19 02:35:05 -0700</bug_when>
    <thetext>Comment on attachment 204976
apply suggestions

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

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:228
&gt; +static Ewk_Context_Menu_Item* findContextMenuItem(const Ewk_Context_Menu* contextMenu, const Ewk_Context_Menu_Item_Action&amp; itemAction, const Ewk_Context_Menu_Item_Type&amp; itemType)

Chris mentioned that passing enum (itemAction, itemType) as const reference is not recommended.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_text_checker.cpp:242
&gt; +    }
&gt; +    ADD_FAILURE();
&gt; +
&gt; +    return 0;

Sorry, I clicked wrong line, I meant :
}

ADD_FAILURE();
return 0;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901720</commentid>
    <comment_count>18</comment_count>
      <attachid>204983</attachid>
    <who name="Krzysztof Wolanski">k.wolanski</who>
    <bug_when>2013-06-19 03:19:13 -0700</bug_when>
    <thetext>Created attachment 204983
apply suggestions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901723</commentid>
    <comment_count>19</comment_count>
      <attachid>204983</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2013-06-19 03:32:10 -0700</bug_when>
    <thetext>Comment on attachment 204983
apply suggestions

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901726</commentid>
    <comment_count>20</comment_count>
      <attachid>204983</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-19 03:54:07 -0700</bug_when>
    <thetext>Comment on attachment 204983
apply suggestions

Clearing flags on attachment: 204983

Committed r151729: &lt;http://trac.webkit.org/changeset/151729&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901727</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-19 03:54:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204892</attachid>
            <date>2013-06-18 02:33:52 -0700</date>
            <delta_ts>2013-06-18 03:44:13 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>unit_test_onSettingChange.patch</filename>
            <type>text/plain</type>
            <size>10334</size>
            <attacher name="Krzysztof Wolanski">k.wolanski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhZjBjNmZkLi44MTFmNjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTMtMDYtMTggIEtyenlzenRvZiBXb2xhbnNraSAgPGsud29sYW5za2lAc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW0VGbF1bV0syXSBJbXBsZW1lbnQgdW5pdCB0ZXN0IGNhbGxiYWNrOiBv
blNldHRpbmdDaGFuZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTc3MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJdCBpcyBmaW5hbGx5IHBvc3NpYmxlIHRvIGltcGxlbWVudCBtaXNzaW5nIHVuaXQg
dGVzdHMgYXMgV2ViS2l0Mi1FRkwKKyAgICAgICAgaGFzIGRlbGl2ZXJlZCBzdWIgbWVudSAocjE1
MDI1NCkuCisgICAgICAgIEFkZCB0d28gdW5pdCB0ZXN0cyBmb3IgY2hlY2tpbmcgb25TZXR0aW5n
Q2hhbmdlIGNhbGxiYWNrIGJlaGF2aW91ciwKKyAgICAgICAgd2hlbiB0b2dnbGluZyAiQ2hlY2sg
U3BlbGxpbmcgV2hpbGUgVHlwaW5nIiBpbiBjb250ZXh0IG1lbnUuCisKKyAgICAgICAgQ2hhbmdl
ZCB0eXBlcyBpbnNpZGUgY2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMgc3RydWN0IGZyb20gYml0IGZp
ZWxkIHRvIGJvb2wsCisgICAgICAgIGJlY2F1c2UgY2FzdGluZyBmcm9tIGJpdCBmaWVsZCB0byAm
Ym9vbCBpcyBpbnZhbGlkIChpbiB1c2luZyB3YWl0VW50aWxUcnVlIG1ldGhvZCkuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdGV4dF9jaGVja2VyLmNwcDoK
KyAgICAgICAgKHJlc2V0Q2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMpOgorICAgICAgICAob25TZXR0
aW5nQ2hhbmdlKToKKyAgICAgICAgKHNlbGVjdENvbnRleHRNZW51T3B0aW9uKToKKyAgICAgICAg
U2VsZWN0cyBkZXRlcm1pbmVkIG9wdGlvbiBpbiBjb250ZXh0IG1lbnUuIEl0IGlzIHVzZWQgYXMg
Y2FsbGJhY2ssCisgICAgICAgIHdoZW4gc2hvd2luZyBjb250ZXh0IG1lbnUuCisKKyAgICAgICAg
KGNoZWNrQ29ycmVjdG5lc3NPZlNwZWxsaW5nSXRlbXMpOgorICAgICAgICBDaGFuZ2VkIHRoZSBu
YW1lIG9mIG9uQ29udGV4dE1lbnVTaG93IG1ldGhvZCB0byBiZSBjb25zaXN0ZW50IHdpdGggbmV3
IG1ldGhvZHMuCisKKyAgICAgICAgKHRvb2dsZUNoZWNrU3BlbGxpbmdXaGlsZVR5cGluZyk6Cisg
ICAgICAgIFNlbGVjdCAiQ2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nIiBpbiBjb250ZXh0IG1l
bnUgdG8gdGVzdCB3aGV0aGVyCisgICAgICAgIG9uU2V0dGluZ0NoYW5nZSBpcyBjYWxsZWQuCisK
IDIwMTMtMDYtMTcgIFNhbnRvc2ggTWFodG8gIDxzYW50b3NoLm1hQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIEV4dHJhIHdoaXRlc3BhY2UgaW4gYmxhbmsgbGluZSBpbiBQbGF0Zm9ybVBvcHVwTWVu
dURhdGEuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy90ZXN0X2V3azJfdGV4dF9jaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl90ZXh0X2NoZWNrZXIuY3BwCmluZGV4IGJhZmMwYjgu
LmM1NDllMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rl
c3RzL3Rlc3RfZXdrMl90ZXh0X2NoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl90ZXh0X2NoZWNrZXIuY3BwCkBAIC01NSwxNiAr
NTUsMTggQEAgc3RhdGljIGNvbnN0IGNoYXIgbGVhcm5TcGVsbGluZ1N0cmluZ1tdID0gIkxlYXJu
IFNwZWxsaW5nIjsKICAqIEl0cyB2YWx1ZXMgYXJlIHJlc2V0IGJlZm9yZSBlYWNoIHRlc3QuCiAg
Ki8KIHN0YXRpYyBzdHJ1Y3QgewotICAgIGJvb2wgc3BlbGxEb2N1bWVudFRhZyA6IDE7Ci0gICAg
Ym9vbCBzcGVsbERvY3VtZW50VGFnQ2xvc2UgOiAxOwotICAgIGJvb2wgc3BlbGxpbmdDaGVjayA6
IDE7Ci0gICAgYm9vbCB3b3JkR3Vlc3NlcyA6IDE7Ci0gICAgYm9vbCB3b3JkTGVhcm4gOiAxOwot
ICAgIGJvb2wgd29yZElnbm9yZSA6IDE7CisgICAgYm9vbCBzZXR0aW5nQ2hhbmdlOworICAgIGJv
b2wgc3BlbGxEb2N1bWVudFRhZzsKKyAgICBib29sIHNwZWxsRG9jdW1lbnRUYWdDbG9zZTsKKyAg
ICBib29sIHNwZWxsaW5nQ2hlY2s7CisgICAgYm9vbCB3b3JkR3Vlc3NlczsKKyAgICBib29sIHdv
cmRMZWFybjsKKyAgICBib29sIHdvcmRJZ25vcmU7CiB9IGNhbGxiYWNrc0V4ZWN1dGlvblN0YXRz
OwogCiBzdGF0aWMgdm9pZCByZXNldENhbGxiYWNrc0V4ZWN1dGlvblN0YXRzKCkKIHsKKyAgICBj
YWxsYmFja3NFeGVjdXRpb25TdGF0cy5zZXR0aW5nQ2hhbmdlID0gZmFsc2U7CiAgICAgY2FsbGJh
Y2tzRXhlY3V0aW9uU3RhdHMuc3BlbGxEb2N1bWVudFRhZyA9IGZhbHNlOwogICAgIGNhbGxiYWNr
c0V4ZWN1dGlvblN0YXRzLnNwZWxsRG9jdW1lbnRUYWdDbG9zZSA9IGZhbHNlOwogICAgIGNhbGxi
YWNrc0V4ZWN1dGlvblN0YXRzLnNwZWxsaW5nQ2hlY2sgPSBmYWxzZTsKQEAgLTEwMCwxMCArMTAy
LDcgQEAgc3RhdGljIEVpbmFfQm9vbCBvblRpbWVvdXQodm9pZCopCiBzdGF0aWMgdm9pZCBvblNl
dHRpbmdDaGFuZ2UoRWluYV9Cb29sIGZsYWcpCiB7CiAgICAgRVhQRUNUX0VRKGlzU2V0dGluZ0Vu
YWJsZWQsIGZsYWcpOwotCi0gICAgZWNvcmVfdGltZXJfZGVsKHRpbWVvdXRUaW1lcik7Ci0gICAg
dGltZW91dFRpbWVyID0gMDsKLSAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOworICAgIGNhbGxi
YWNrc0V4ZWN1dGlvblN0YXRzLnNldHRpbmdDaGFuZ2UgPSB0cnVlOwogfQogCiAvKioKQEAgLTIx
Nyw3ICsyMTYsMzEgQEAgc3RhdGljIHZvaWQgb25Xb3JkSWdub3JlKHVpbnQ2NF90IHRhZywgY29u
c3QgY2hhciogd29yZCkKICAgICBjYWxsYmFja3NFeGVjdXRpb25TdGF0cy53b3JkSWdub3JlID0g
dHJ1ZTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBvbkNvbnRleHRNZW51U2hvdyhFd2tfVmlld19T
bWFydF9EYXRhKiwgRXZhc19Db29yZCwgRXZhc19Db29yZCwgRXdrX0NvbnRleHRfTWVudSogY29u
dGV4dE1lbnUpCisvKioKKyAqIEhlbHBlciwgc2VsZWN0cyBvcHRpb24gZnJvbSBjb250ZXh0IG1l
bnUuCisgKgorICogQHBhcmFtIGNvbnRleHRNZW51IHRoZSBjb250ZXh0IG1lbnUgb2JqZWN0Cisg
KiBAcGFyYW0gaXRlbUFjdGlvbiBhY3Rpb24gb2YgaXRlbSB0byBzZWxlY3QKKyAqIEBwYXJhbSBp
dGVtVHlwZSB0eXBlIG9mIGl0ZW0gdG8gc2VsZWN0CisgKi8KK3N0YXRpYyB2b2lkIHNlbGVjdENv
bnRleHRNZW51T3B0aW9uKEV3a19Db250ZXh0X01lbnUqIGNvbnRleHRNZW51LCBjb25zdCBFd2tf
Q29udGV4dF9NZW51X0l0ZW1fQWN0aW9uJiBpdGVtQWN0aW9uLCBjb25zdCBFd2tfQ29udGV4dF9N
ZW51X0l0ZW1fVHlwZSYgaXRlbVR5cGUpCit7CisgICAgY29uc3QgRWluYV9MaXN0KiBjb250ZXh0
TWVudUl0ZW1zID0gZXdrX2NvbnRleHRfbWVudV9pdGVtc19nZXQoY29udGV4dE1lbnUpOworCisg
ICAgdm9pZCogaXRlbURhdGE7CisgICAgY29uc3QgRWluYV9MaXN0KiBsaXN0SXRlcmF0b3I7CisK
KyAgICBFSU5BX0xJU1RfRk9SRUFDSChjb250ZXh0TWVudUl0ZW1zLCBsaXN0SXRlcmF0b3IsIGl0
ZW1EYXRhKSB7CisgICAgICAgIEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSA9IHN0YXRpY19j
YXN0PEV3a19Db250ZXh0X01lbnVfSXRlbSo+KGl0ZW1EYXRhKTsKKyAgICAgICAgaWYgKGV3a19j
b250ZXh0X21lbnVfaXRlbV9hY3Rpb25fZ2V0KGl0ZW0pID09IGl0ZW1BY3Rpb24KKyAgICAgICAg
ICAgICYmIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dldChpdGVtKSA9PSBpdGVtVHlwZSkg
eworICAgICAgICAgICAgZXdrX2NvbnRleHRfbWVudV9pdGVtX3NlbGVjdChjb250ZXh0TWVudSwg
aXRlbSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGlj
IEVpbmFfQm9vbCBjaGVja0NvcnJlY3RuZXNzT2ZTcGVsbGluZ0l0ZW1zKEV3a19WaWV3X1NtYXJ0
X0RhdGEqLCBFdmFzX0Nvb3JkLCBFdmFzX0Nvb3JkLCBFd2tfQ29udGV4dF9NZW51KiBjb250ZXh0
TWVudSkKIHsKICAgICBjb25zdCBFaW5hX0xpc3QqIGNvbnRleHRNZW51SXRlbXMgPSBld2tfY29u
dGV4dF9tZW51X2l0ZW1zX2dldChjb250ZXh0TWVudSk7CiAKQEAgLTI0NSw2ICsyNjgsMjUgQEAg
c3RhdGljIEVpbmFfQm9vbCBvbkNvbnRleHRNZW51U2hvdyhFd2tfVmlld19TbWFydF9EYXRhKiwg
RXZhc19Db29yZCwgRXZhc19Db29yZCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIEVp
bmFfQm9vbCB0b29nbGVDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmcoRXdrX1ZpZXdfU21hcnRfRGF0
YSosIEV2YXNfQ29vcmQsIEV2YXNfQ29vcmQsIEV3a19Db250ZXh0X01lbnUqIGNvbnRleHRNZW51
KQoreworICAgIGNvbnN0IEVpbmFfTGlzdCogY29udGV4dE1lbnVJdGVtcyA9IGV3a19jb250ZXh0
X21lbnVfaXRlbXNfZ2V0KGNvbnRleHRNZW51KTsKKworICAgIHZvaWQqIGl0ZW1EYXRhOworICAg
IGNvbnN0IEVpbmFfTGlzdCogbGlzdEl0ZXJhdG9yOworCisgICAgRUlOQV9MSVNUX0ZPUkVBQ0go
Y29udGV4dE1lbnVJdGVtcywgbGlzdEl0ZXJhdG9yLCBpdGVtRGF0YSkgeworICAgICAgICBFd2tf
Q29udGV4dF9NZW51X0l0ZW0qIGl0ZW0gPSBzdGF0aWNfY2FzdDxFd2tfQ29udGV4dF9NZW51X0l0
ZW0qPihpdGVtRGF0YSk7CisgICAgICAgIC8vIExvb2tpbmcgZm9yICJTcGVsbGluZyBhbmQgR3Jh
bW1hciIgc3ViIG1lbnUgdG8gdG9nZ2xlICJDaGVjayBTcGVsbGluZyBXaGlsZSBUeXBpbmciIG9w
dGlvbi4KKyAgICAgICAgaWYgKGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fZ2V0KGl0ZW0p
ID09IEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU1BFTExJTkdfTUVOVQorICAgICAgICAgICAg
JiYgZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5cGVfZ2V0KGl0ZW0pID09IEVXS19TVUJNRU5VX1RZ
UEUpIHsKKyAgICAgICAgICAgIHNlbGVjdENvbnRleHRNZW51T3B0aW9uKGV3a19jb250ZXh0X21l
bnVfaXRlbV9zdWJtZW51X2dldChpdGVtKSwgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DSEVD
S19TUEVMTElOR19XSElMRV9UWVBJTkcsIEVXS19DSEVDS0FCTEVfQUNUSU9OX1RZUEUpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisK
IC8qKgogICogVGVzdCB3aGV0aGVyIHRoZSBkZWZhdWx0IGxhbmd1YWdlIGlzIGxvYWRlZCBpbmRl
cGVuZGVudGx5IG9mCiAgKiBjb250aW51b3VzIHNwZWxsIGNoZWNraW5nIHNldHRpbmcuCkBAIC0y
ODksNyArMzMxLDcgQEAgVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a190ZXh0X2NoZWNrZXJf
c3BlbGxfY2hlY2tpbmdfbGFuZ3VhZ2VzX2dldCkKIFRFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBj
b250ZXh0X21lbnVfc3BlbGxpbmdfaXRlbXNfYXZhaWxhYmlsaXR5KQogewogICAgIGV3a190ZXh0
X2NoZWNrZXJfY29udGludW91c19zcGVsbF9jaGVja2luZ19lbmFibGVkX3NldChmYWxzZSk7Ci0g
ICAgZXdrVmlld0NsYXNzKCktPmNvbnRleHRfbWVudV9zaG93ID0gb25Db250ZXh0TWVudVNob3c7
CisgICAgZXdrVmlld0NsYXNzKCktPmNvbnRleHRfbWVudV9zaG93ID0gY2hlY2tDb3JyZWN0bmVz
c09mU3BlbGxpbmdJdGVtczsKIAogICAgIEFTU0VSVF9UUlVFKGxvYWRVcmxTeW5jKGVudmlyb25t
ZW50LT51cmxGb3JSZXNvdXJjZSgic3BlbGxpbmdfdGVzdC5odG1sIikuZGF0YSgpKSk7CiAgICAg
bW91c2VDbGljaygxMCwgMjAsIDMgLyogUmlnaHQgYnV0dG9uICovKTsKQEAgLTMxNywxMiArMzU5
LDQ0IEBAIFRFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdGV4dF9jaGVja2VyX2NvbnRpbnVv
dXNfc3BlbGxfY2hlY2tpbmdfZW5hYmxlZCkKIH0KIAogLyoqCi0gKiBUZXN0IHdoZXRoZXIgdGhl
IGNhbGxiYWNrIGlzIGNhbGxlZCB3aGVuIHRoZSBzcGVsbCBjaGVja2luZyBzZXR0aW5nIHdhcyBj
aGFuZ2VkIGJ5IFdlYktpdC4KLSAqIENoYW5naW5nIG9mIHRoaXMgc2V0dGluZyBhdCB0aGUgV2Vi
S2l0IGxldmVsIGNhbiBiZSBtYWRlIGFzIGEgcmVzdWx0IG9mIG1vZGlmeWluZwotICogb3B0aW9u
cyBpbiBhIENvbnRleHQgTWVudSBieSBhIHVzZXIuCisgKiBUZXN0IHdoZXRoZXIgdGhlIG9uU2V0
dGluZ0NoYW5nZSBjYWxsYmFjayBpcyBjYWxsZWQgd2hlbiAiQ2hlY2sgU3BlbGxpbmcgV2hpbGUg
VHlwaW5nIiBzZXR0aW5nIHdhcyBjaGFuZ2VkIGluIGNvbnRleHQgbWVudS4KKyAqIFR3byBjYXNl
cyBhcmUgdGVzdGVkOgorICogIC0gIkNoZWNrIFNwZWxsaW5nIFdoaWxlIFR5cGluZyIgaXMgZW5h
YmxlZCwKKyAqICAtICJDaGVjayBTcGVsbGluZyBXaGlsZSBUeXBpbmciIGlzIGRpc2FibGVkLgor
ICovCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3RleHRfY2hlY2tlcl9jaGVja19zcGVs
bGluZ193aGlsZV90eXBpbmdfdG9nZ2xlKQoreworICAgIHJlc2V0Q2FsbGJhY2tzRXhlY3V0aW9u
U3RhdHMoKTsKKworICAgIGV3a190ZXh0X2NoZWNrZXJfY29udGludW91c19zcGVsbF9jaGVja2lu
Z19jaGFuZ2VfY2Jfc2V0KG9uU2V0dGluZ0NoYW5nZSk7CisKKyAgICBpc1NldHRpbmdFbmFibGVk
ID0gZXdrX3RleHRfY2hlY2tlcl9jb250aW51b3VzX3NwZWxsX2NoZWNraW5nX2VuYWJsZWRfZ2V0
KCk7CisgICAgaXNTZXR0aW5nRW5hYmxlZCA9ICFpc1NldHRpbmdFbmFibGVkOworCisgICAgZXdr
Vmlld0NsYXNzKCktPmNvbnRleHRfbWVudV9zaG93ID0gdG9vZ2xlQ2hlY2tTcGVsbGluZ1doaWxl
VHlwaW5nOworCisgICAgQVNTRVJUX1RSVUUobG9hZFVybFN5bmMoZW52aXJvbm1lbnQtPnVybEZv
clJlc291cmNlKCJzcGVsbGluZ190ZXN0Lmh0bWwiKS5kYXRhKCkpKTsKKworICAgIEVXSzJVbml0
VGVzdEJhc2U6Om1vdXNlQ2xpY2soMTAsIDIwLCAvKlJpZ2h0IGJ1dHRvbiovIDMpOworICAgIEFT
U0VSVF9UUlVFKHdhaXRVbnRpbFRydWUoY2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMuc2V0dGluZ0No
YW5nZSkpOworCisgICAgcmVzZXRDYWxsYmFja3NFeGVjdXRpb25TdGF0cygpOworCisgICAgLy8g
VGVzdCBjYXNlLCB3aGVuICJDaGVjayBTcGVsbGluZyBXaGlsZSBUeXBpbmciIGlzIGluIHJldmVy
c2UgdG8gdGhlIHByZXZpb3VzIG9uZS4KKyAgICBpc1NldHRpbmdFbmFibGVkID0gIWlzU2V0dGlu
Z0VuYWJsZWQ7CisKKyAgICBFV0syVW5pdFRlc3RCYXNlOjptb3VzZUNsaWNrKDEwLCAyMCwgLypS
aWdodCBidXR0b24qLyAzKTsKKyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxUcnVlKGNhbGxiYWNr
c0V4ZWN1dGlvblN0YXRzLnNldHRpbmdDaGFuZ2UpKTsKKyAgICBld2tfdGV4dF9jaGVja2VyX2Nv
bnRpbnVvdXNfc3BlbGxfY2hlY2tpbmdfY2hhbmdlX2NiX3NldCgwKTsKK30KKworLyoqCisgKiBU
ZXN0IHdoZXRoZXIgdGhlIG9uU2V0dGluZ0NoYW5nZSBjYWxsYmFjayBpcyBub3QgY2FsbGVkIHdo
ZW4gdGhlIHNwZWxsIGNoZWNraW5nIHNldHRpbmcgd2FzIGNoYW5nZWQgYnkgY2xpZW50LgogICov
CiBURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3RleHRfY2hlY2tlcl9jb250aW51b3VzX3Nw
ZWxsX2NoZWNraW5nX2NoYW5nZV9jYl9zZXQpCiB7CisgICAgcmVzZXRDYWxsYmFja3NFeGVjdXRp
b25TdGF0cygpOworCiAgICAgZXdrX3RleHRfY2hlY2tlcl9jb250aW51b3VzX3NwZWxsX2NoZWNr
aW5nX2NoYW5nZV9jYl9zZXQob25TZXR0aW5nQ2hhbmdlKTsKIAogICAgIGlzU2V0dGluZ0VuYWJs
ZWQgPSBld2tfdGV4dF9jaGVja2VyX2NvbnRpbnVvdXNfc3BlbGxfY2hlY2tpbmdfZW5hYmxlZF9n
ZXQoKTsKQEAgLTMzMSwzMSArNDA1LDI1IEBAIFRFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tf
dGV4dF9jaGVja2VyX2NvbnRpbnVvdXNfc3BlbGxfY2hlY2tpbmdfY2hhbmdlX2NiX3NlCiAgICAg
Ly8gb24gdGhlIGNsaWVudCdzIHJlcXVlc3QgKHB1YmxpYyBBUEkpLgogICAgIGV3a190ZXh0X2No
ZWNrZXJfY29udGludW91c19zcGVsbF9jaGVja2luZ19lbmFibGVkX3NldChpc1NldHRpbmdFbmFi
bGVkKTsKIAotICAgIHRpbWVvdXRUaW1lciA9IGVjb3JlX3RpbWVyX2FkZChkZWZhdWx0VGltZW91
dEluU2Vjb25kcywgb25UaW1lb3V0LCAwKTsKKyAgICAvLyBUaGUgbm90aWZpY2F0aW9uIGFib3V0
IHRoZSBjaGFuZ2Ugb2YgdGhlIHNwZWxsIGNoZWNraW5nIHNldHRpbmcgaXMgY2FsbGVkIG9uIGlk
bGVyLgorICAgIEFTU0VSVF9GQUxTRSh3YWl0VW50aWxUcnVlKGNhbGxiYWNrc0V4ZWN1dGlvblN0
YXRzLnNldHRpbmdDaGFuZ2UsIGRlZmF1bHRUaW1lb3V0SW5TZWNvbmRzKSk7CisgICAgZXdrX3Rl
eHRfY2hlY2tlcl9jb250aW51b3VzX3NwZWxsX2NoZWNraW5nX2NoYW5nZV9jYl9zZXQoMCk7Cit9
CiAKLSAgICAvLyBTdGFydCBwcm9jY2VzaW5nIEVjb3JlIGV2ZW50cywgdGhlIG5vdGlmaWNhdGlv
biBhYm91dCB0aGUgY2hhbmdlIG9mIHRoZSBzcGVsbAotICAgIC8vIGNoZWNraW5nIHNldHRpbmcg
aXMgY2FsbGVkIG9uIGlkbGVyLgotICAgIC8vIFdlIGNhbid0IGNhbGwgZWNvcmVfbWFpbl9sb29w
X2l0ZXJhdGUgYmVjYXVzZSBpdCBkb2Vzbid0IHByb2Nlc3MgdGhlIGlkbGVycy4KLSAgICBlY29y
ZV9tYWluX2xvb3BfYmVnaW4oKTsKKy8qKgorICogVGVzdCB3aGV0aGVyIHRoZSBvblNldHRpbmdD
aGFuZ2UgY2FsbGJhY2sgaXMgbm90IGNhbGxlZCwgaWYgdGhlIGNsaWVudCBkb2VzIG5vdCBzZXQg
aXQuCisgKiAiQ2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nIiBvcHRpb24gaXMgdG9nZ2xlZCBp
biBjb250ZXh0IG1lbnUuCisgKi8KK1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdGV4dF9j
aGVja2VyX2NvbnRpbnVvdXNfc3BlbGxfY2hlY2tpbmdfY2hhbmdlX2NiX3Vuc2V0KQoreworICAg
IHJlc2V0Q2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMoKTsKKworICAgIGV3a1ZpZXdDbGFzcygpLT5j
b250ZXh0X21lbnVfc2hvdyA9IHRvb2dsZUNoZWNrU3BlbGxpbmdXaGlsZVR5cGluZzsKKworICAg
IEFTU0VSVF9UUlVFKGxvYWRVcmxTeW5jKGVudmlyb25tZW50LT51cmxGb3JSZXNvdXJjZSgic3Bl
bGxpbmdfdGVzdC5odG1sIikuZGF0YSgpKSk7CiAKLSAgICBFWFBFQ1RfVFJVRSh0aW1lb3V0VGlt
ZXIpOwotCi0gICAgLyogVGhlIGNhbGxiYWNrIHNob3VsZCBiZSBjYWxsZWQgaWYgdGhlIGNvbnRl
eHQgbWVudSAiQ2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nIiBvcHRpb24KLSAgICAgICB3YXMg
dG9nZ2xlZCBieSB0aGUgdXNlci4KLSAgICBGSVhNRToKLSAgICAxKSBJbnZva2UgdGhlIGNvbnRl
eHQgbWVudSBvbiB0aGUgaW5wdXQgZmllbGQuCi0gICAgMikgQ2hvb3NlIHRoZSBzdWIgbWVudSAi
U3BlbGxpbmcgYW5kIEdyYW1tYXIiIG9wdGlvbiAobm90IGltcGxlbWVudGVkIGZvciBXSzIpLgot
ICAgIDMpIFRvZ2dsZSAiQ2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nIiBvcHRpb24uCi0gICAg
NCkgQ2hlY2sgd2hldGhlciB0aGUgY2FsbGJhY2sgaXMgY2FsbGVkLiAqLwotCi0gICAgLyogVGhl
IGNhbGxiYWNrIHNob3VsZG4ndCBiZSBjYWxsZWQgaWYgdGhlIHVzZXIgaGFzIGludmFsaWRhdGVk
IGl0LgotICAgIEZJWE1FOgotICAgIDEpIENhbGwgZXdrX3RleHRfY2hlY2tlcl9jb250aW51b3Vz
X3NwZWxsX2NoZWNraW5nX2NoYW5nZV9jYl9zZXQoMCkgdG8gbm90aWZ5IHRoZSBXZWJLaXQgdGhh
dAotICAgICAgIHRoZSBjbGllbnQgaXMgbm90IGludGVyZXN0ZWQgaW4gdGhlIHNldHRpbmcgY2hh
bmdlLgotICAgIDIpIEludm9rZSB0aGUgY29udGV4dCBtZW51IG9uIHRoZSBpbnB1dCBmaWVsZC4K
LSAgICAzKSBDaG9vc2UgdGhlIHN1YiBtZW51ICJTcGVsbGluZyBhbmQgR3JhbW1hciIgb3B0aW9u
IChub3QgaW1wbGVtZW50ZWQgZm9yIFdLMikuCi0gICAgNCkgVG9nZ2xlICJDaGVjayBTcGVsbGlu
ZyBXaGlsZSBUeXBpbmciIG9wdGlvbi4KLSAgICA1KSBDaGVjayB3aGV0aGVyIHRoZSBjYWxsYmFj
ayB3YXMgY2FsbGVkLiAqLworICAgIEVXSzJVbml0VGVzdEJhc2U6Om1vdXNlQ2xpY2soMTAsIDIw
LCAvKlJpZ2h0IGJ1dHRvbiovIDMpOworICAgIEFTU0VSVF9GQUxTRSh3YWl0VW50aWxUcnVlKGNh
bGxiYWNrc0V4ZWN1dGlvblN0YXRzLnNldHRpbmdDaGFuZ2UsIGRlZmF1bHRUaW1lb3V0SW5TZWNv
bmRzKSk7CiB9CiAKIC8qKgo=
</data>
<flag name="review"
          id="226312"
          type_id="1"
          status="-"
          setter="cdumez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204895</attachid>
            <date>2013-06-18 03:44:13 -0700</date>
            <delta_ts>2013-06-18 07:52:41 -0700</delta_ts>
            <desc>apply suggestions</desc>
            <filename>unit_test_onSettingChange.patch</filename>
            <type>text/plain</type>
            <size>10622</size>
            <attacher name="Krzysztof Wolanski">k.wolanski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhZjBjNmZkLi5hZjBiMThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTMtMDYtMTggIEtyenlzenRvZiBXb2xhbnNraSAgPGsud29sYW5za2lAc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnQgdW5pdCB0ZXN0IGNhbGxiYWNrOiBv
blNldHRpbmdDaGFuZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTc3MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJdCBpcyBmaW5hbGx5IHBvc3NpYmxlIHRvIGltcGxlbWVudCBtaXNzaW5nIHVuaXQg
dGVzdHMgYXMgV2ViS2l0Mi1FRkwKKyAgICAgICAgaGFzIGRlbGl2ZXJlZCBzdWIgbWVudSAocjE1
MDI1NCkuCisgICAgICAgIEFkZCB0d28gdW5pdCB0ZXN0cyBmb3IgY2hlY2tpbmcgb25TZXR0aW5n
Q2hhbmdlIGNhbGxiYWNrIGJlaGF2aW91ciwKKyAgICAgICAgd2hlbiB0b2dnbGluZyAiQ2hlY2sg
U3BlbGxpbmcgV2hpbGUgVHlwaW5nIiBpbiBjb250ZXh0IG1lbnUuCisKKyAgICAgICAgQ2hhbmdl
ZCB0eXBlcyBpbnNpZGUgY2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMgc3RydWN0IGZyb20gYml0IGZp
ZWxkIHRvIGJvb2wsCisgICAgICAgIGJlY2F1c2UgY2FzdGluZyBmcm9tIGJpdCBmaWVsZCB0byAm
Ym9vbCBpcyBpbnZhbGlkIChpbiB1c2luZyB3YWl0VW50aWxUcnVlIG1ldGhvZCkuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdGV4dF9jaGVja2VyLmNwcDoK
KyAgICAgICAgKHJlc2V0Q2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMpOgorICAgICAgICAob25TZXR0
aW5nQ2hhbmdlKToKKyAgICAgICAgKHNlbGVjdENvbnRleHRNZW51T3B0aW9uKToKKyAgICAgICAg
U2VsZWN0cyBkZXRlcm1pbmVkIG9wdGlvbiBpbiBjb250ZXh0IG1lbnUuIEl0IGlzIHVzZWQgYXMg
Y2FsbGJhY2ssCisgICAgICAgIHdoZW4gc2hvd2luZyBjb250ZXh0IG1lbnUuCisKKyAgICAgICAg
KGNoZWNrQ29ycmVjdG5lc3NPZlNwZWxsaW5nSXRlbXMpOgorICAgICAgICBDaGFuZ2VkIHRoZSBu
YW1lIG9mIG9uQ29udGV4dE1lbnVTaG93IG1ldGhvZCB0byBiZSBjb25zaXN0ZW50IHdpdGggbmV3
IG1ldGhvZHMuCisKKyAgICAgICAgKHRvb2dsZUNoZWNrU3BlbGxpbmdXaGlsZVR5cGluZyk6Cisg
ICAgICAgIFNlbGVjdCAiQ2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nIiBpbiBjb250ZXh0IG1l
bnUgdG8gdGVzdCB3aGV0aGVyCisgICAgICAgIG9uU2V0dGluZ0NoYW5nZSBpcyBjYWxsZWQuCisK
IDIwMTMtMDYtMTcgIFNhbnRvc2ggTWFodG8gIDxzYW50b3NoLm1hQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIEV4dHJhIHdoaXRlc3BhY2UgaW4gYmxhbmsgbGluZSBpbiBQbGF0Zm9ybVBvcHVwTWVu
dURhdGEuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy90ZXN0X2V3azJfdGV4dF9jaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl90ZXh0X2NoZWNrZXIuY3BwCmluZGV4IGJhZmMwYjgu
LmFjNGE1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rl
c3RzL3Rlc3RfZXdrMl90ZXh0X2NoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl90ZXh0X2NoZWNrZXIuY3BwCkBAIC01NSwxNiAr
NTUsMTggQEAgc3RhdGljIGNvbnN0IGNoYXIgbGVhcm5TcGVsbGluZ1N0cmluZ1tdID0gIkxlYXJu
IFNwZWxsaW5nIjsKICAqIEl0cyB2YWx1ZXMgYXJlIHJlc2V0IGJlZm9yZSBlYWNoIHRlc3QuCiAg
Ki8KIHN0YXRpYyBzdHJ1Y3QgewotICAgIGJvb2wgc3BlbGxEb2N1bWVudFRhZyA6IDE7Ci0gICAg
Ym9vbCBzcGVsbERvY3VtZW50VGFnQ2xvc2UgOiAxOwotICAgIGJvb2wgc3BlbGxpbmdDaGVjayA6
IDE7Ci0gICAgYm9vbCB3b3JkR3Vlc3NlcyA6IDE7Ci0gICAgYm9vbCB3b3JkTGVhcm4gOiAxOwot
ICAgIGJvb2wgd29yZElnbm9yZSA6IDE7CisgICAgYm9vbCBzZXR0aW5nQ2hhbmdlOworICAgIGJv
b2wgc3BlbGxEb2N1bWVudFRhZzsKKyAgICBib29sIHNwZWxsRG9jdW1lbnRUYWdDbG9zZTsKKyAg
ICBib29sIHNwZWxsaW5nQ2hlY2s7CisgICAgYm9vbCB3b3JkR3Vlc3NlczsKKyAgICBib29sIHdv
cmRMZWFybjsKKyAgICBib29sIHdvcmRJZ25vcmU7CiB9IGNhbGxiYWNrc0V4ZWN1dGlvblN0YXRz
OwogCiBzdGF0aWMgdm9pZCByZXNldENhbGxiYWNrc0V4ZWN1dGlvblN0YXRzKCkKIHsKKyAgICBj
YWxsYmFja3NFeGVjdXRpb25TdGF0cy5zZXR0aW5nQ2hhbmdlID0gZmFsc2U7CiAgICAgY2FsbGJh
Y2tzRXhlY3V0aW9uU3RhdHMuc3BlbGxEb2N1bWVudFRhZyA9IGZhbHNlOwogICAgIGNhbGxiYWNr
c0V4ZWN1dGlvblN0YXRzLnNwZWxsRG9jdW1lbnRUYWdDbG9zZSA9IGZhbHNlOwogICAgIGNhbGxi
YWNrc0V4ZWN1dGlvblN0YXRzLnNwZWxsaW5nQ2hlY2sgPSBmYWxzZTsKQEAgLTEwMCwxMCArMTAy
LDcgQEAgc3RhdGljIEVpbmFfQm9vbCBvblRpbWVvdXQodm9pZCopCiBzdGF0aWMgdm9pZCBvblNl
dHRpbmdDaGFuZ2UoRWluYV9Cb29sIGZsYWcpCiB7CiAgICAgRVhQRUNUX0VRKGlzU2V0dGluZ0Vu
YWJsZWQsIGZsYWcpOwotCi0gICAgZWNvcmVfdGltZXJfZGVsKHRpbWVvdXRUaW1lcik7Ci0gICAg
dGltZW91dFRpbWVyID0gMDsKLSAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOworICAgIGNhbGxi
YWNrc0V4ZWN1dGlvblN0YXRzLnNldHRpbmdDaGFuZ2UgPSB0cnVlOwogfQogCiAvKioKQEAgLTIx
Nyw3ICsyMTYsMzUgQEAgc3RhdGljIHZvaWQgb25Xb3JkSWdub3JlKHVpbnQ2NF90IHRhZywgY29u
c3QgY2hhciogd29yZCkKICAgICBjYWxsYmFja3NFeGVjdXRpb25TdGF0cy53b3JkSWdub3JlID0g
dHJ1ZTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBvbkNvbnRleHRNZW51U2hvdyhFd2tfVmlld19T
bWFydF9EYXRhKiwgRXZhc19Db29yZCwgRXZhc19Db29yZCwgRXdrX0NvbnRleHRfTWVudSogY29u
dGV4dE1lbnUpCisvKioKKyAqIEhlbHBlciwgc2VsZWN0cyBvcHRpb24gZnJvbSBjb250ZXh0IG1l
bnUuCisgKgorICogQHBhcmFtIGNvbnRleHRNZW51IHRoZSBjb250ZXh0IG1lbnUgb2JqZWN0Cisg
KiBAcGFyYW0gaXRlbUFjdGlvbiBhY3Rpb24gb2YgaXRlbSB0byBzZWxlY3QKKyAqIEBwYXJhbSBp
dGVtVHlwZSB0eXBlIG9mIGl0ZW0gdG8gc2VsZWN0CisgKi8KK3N0YXRpYyB2b2lkIHNlbGVjdENv
bnRleHRNZW51T3B0aW9uKEV3a19Db250ZXh0X01lbnUqIGNvbnRleHRNZW51LCBjb25zdCBFd2tf
Q29udGV4dF9NZW51X0l0ZW1fQWN0aW9uJiBpdGVtQWN0aW9uLCBjb25zdCBFd2tfQ29udGV4dF9N
ZW51X0l0ZW1fVHlwZSYgaXRlbVR5cGUpCit7CisgICAgY29uc3QgRWluYV9MaXN0KiBjb250ZXh0
TWVudUl0ZW1zID0gZXdrX2NvbnRleHRfbWVudV9pdGVtc19nZXQoY29udGV4dE1lbnUpOworCisg
ICAgdm9pZCogaXRlbURhdGE7CisgICAgY29uc3QgRWluYV9MaXN0KiBsaXN0SXRlcmF0b3I7CisK
KyAgICB1bnNpZ25lZCBjb250ZXh0TWVudUl0ZW1zQ291bnQgPSBlaW5hX2xpc3RfY291bnQoY29u
dGV4dE1lbnVJdGVtcyk7CisgICAgdW5zaWduZWQgaSA9IDA7CisgICAgRUlOQV9MSVNUX0ZPUkVB
Q0goY29udGV4dE1lbnVJdGVtcywgbGlzdEl0ZXJhdG9yLCBpdGVtRGF0YSkgeworICAgICAgICBF
d2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0gPSBzdGF0aWNfY2FzdDxFd2tfQ29udGV4dF9NZW51
X0l0ZW0qPihpdGVtRGF0YSk7CisgICAgICAgIGlmIChld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0
aW9uX2dldChpdGVtKSA9PSBpdGVtQWN0aW9uCisgICAgICAgICAgICAmJiBld2tfY29udGV4dF9t
ZW51X2l0ZW1fdHlwZV9nZXQoaXRlbSkgPT0gaXRlbVR5cGUpIHsKKyAgICAgICAgICAgIGV3a19j
b250ZXh0X21lbnVfaXRlbV9zZWxlY3QoY29udGV4dE1lbnUsIGl0ZW0pOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCsraSA9PSBjb250ZXh0TWVudUl0ZW1zQ291
bnQpCisgICAgICAgICAgICBBRERfRkFJTFVSRSgpOworICAgIH0KK30KKworc3RhdGljIEVpbmFf
Qm9vbCBjaGVja0NvcnJlY3RuZXNzT2ZTcGVsbGluZ0l0ZW1zKEV3a19WaWV3X1NtYXJ0X0RhdGEq
LCBFdmFzX0Nvb3JkLCBFdmFzX0Nvb3JkLCBFd2tfQ29udGV4dF9NZW51KiBjb250ZXh0TWVudSkK
IHsKICAgICBjb25zdCBFaW5hX0xpc3QqIGNvbnRleHRNZW51SXRlbXMgPSBld2tfY29udGV4dF9t
ZW51X2l0ZW1zX2dldChjb250ZXh0TWVudSk7CiAKQEAgLTI0NSw2ICsyNzIsMjkgQEAgc3RhdGlj
IEVpbmFfQm9vbCBvbkNvbnRleHRNZW51U2hvdyhFd2tfVmlld19TbWFydF9EYXRhKiwgRXZhc19D
b29yZCwgRXZhc19Db29yZCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIEVpbmFfQm9v
bCB0b29nbGVDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmcoRXdrX1ZpZXdfU21hcnRfRGF0YSosIEV2
YXNfQ29vcmQsIEV2YXNfQ29vcmQsIEV3a19Db250ZXh0X01lbnUqIGNvbnRleHRNZW51KQorewor
ICAgIGNvbnN0IEVpbmFfTGlzdCogY29udGV4dE1lbnVJdGVtcyA9IGV3a19jb250ZXh0X21lbnVf
aXRlbXNfZ2V0KGNvbnRleHRNZW51KTsKKworICAgIHZvaWQqIGl0ZW1EYXRhOworICAgIGNvbnN0
IEVpbmFfTGlzdCogbGlzdEl0ZXJhdG9yOworCisgICAgdW5zaWduZWQgY29udGV4dE1lbnVJdGVt
c0NvdW50ID0gZWluYV9saXN0X2NvdW50KGNvbnRleHRNZW51SXRlbXMpOworICAgIHVuc2lnbmVk
IGkgPSAwOworICAgIEVJTkFfTElTVF9GT1JFQUNIKGNvbnRleHRNZW51SXRlbXMsIGxpc3RJdGVy
YXRvciwgaXRlbURhdGEpIHsKKyAgICAgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtID0g
c3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9JdGVtKj4oaXRlbURhdGEpOworICAgICAgICAv
LyBMb29raW5nIGZvciAiU3BlbGxpbmcgYW5kIEdyYW1tYXIiIHN1YiBtZW51IHRvIHRvZ2dsZSAi
Q2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nIiBvcHRpb24uCisgICAgICAgIGlmIChld2tfY29u
dGV4dF9tZW51X2l0ZW1fYWN0aW9uX2dldChpdGVtKSA9PSBFV0tfQ09OVEVYVF9NRU5VX0lURU1f
VEFHX1NQRUxMSU5HX01FTlUKKyAgICAgICAgICAgICYmIGV3a19jb250ZXh0X21lbnVfaXRlbV90
eXBlX2dldChpdGVtKSA9PSBFV0tfU1VCTUVOVV9UWVBFKSB7CisgICAgICAgICAgICBzZWxlY3RD
b250ZXh0TWVudU9wdGlvbihld2tfY29udGV4dF9tZW51X2l0ZW1fc3VibWVudV9nZXQoaXRlbSks
IEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfQ0hFQ0tfU1BFTExJTkdfV0hJTEVfVFlQSU5HLCBF
V0tfQ0hFQ0tBQkxFX0FDVElPTl9UWVBFKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIGlmICgrK2kgPT0gY29udGV4dE1lbnVJdGVtc0NvdW50KQorICAgICAgICAgICAg
QUREX0ZBSUxVUkUoKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIC8qKgogICogVGVz
dCB3aGV0aGVyIHRoZSBkZWZhdWx0IGxhbmd1YWdlIGlzIGxvYWRlZCBpbmRlcGVuZGVudGx5IG9m
CiAgKiBjb250aW51b3VzIHNwZWxsIGNoZWNraW5nIHNldHRpbmcuCkBAIC0yODksNyArMzM5LDcg
QEAgVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a190ZXh0X2NoZWNrZXJfc3BlbGxfY2hlY2tp
bmdfbGFuZ3VhZ2VzX2dldCkKIFRFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBjb250ZXh0X21lbnVf
c3BlbGxpbmdfaXRlbXNfYXZhaWxhYmlsaXR5KQogewogICAgIGV3a190ZXh0X2NoZWNrZXJfY29u
dGludW91c19zcGVsbF9jaGVja2luZ19lbmFibGVkX3NldChmYWxzZSk7Ci0gICAgZXdrVmlld0Ns
YXNzKCktPmNvbnRleHRfbWVudV9zaG93ID0gb25Db250ZXh0TWVudVNob3c7CisgICAgZXdrVmll
d0NsYXNzKCktPmNvbnRleHRfbWVudV9zaG93ID0gY2hlY2tDb3JyZWN0bmVzc09mU3BlbGxpbmdJ
dGVtczsKIAogICAgIEFTU0VSVF9UUlVFKGxvYWRVcmxTeW5jKGVudmlyb25tZW50LT51cmxGb3JS
ZXNvdXJjZSgic3BlbGxpbmdfdGVzdC5odG1sIikuZGF0YSgpKSk7CiAgICAgbW91c2VDbGljaygx
MCwgMjAsIDMgLyogUmlnaHQgYnV0dG9uICovKTsKQEAgLTMxNywxMiArMzY3LDQzIEBAIFRFU1Rf
RihFV0syVW5pdFRlc3RCYXNlLCBld2tfdGV4dF9jaGVja2VyX2NvbnRpbnVvdXNfc3BlbGxfY2hl
Y2tpbmdfZW5hYmxlZCkKIH0KIAogLyoqCi0gKiBUZXN0IHdoZXRoZXIgdGhlIGNhbGxiYWNrIGlz
IGNhbGxlZCB3aGVuIHRoZSBzcGVsbCBjaGVja2luZyBzZXR0aW5nIHdhcyBjaGFuZ2VkIGJ5IFdl
YktpdC4KLSAqIENoYW5naW5nIG9mIHRoaXMgc2V0dGluZyBhdCB0aGUgV2ViS2l0IGxldmVsIGNh
biBiZSBtYWRlIGFzIGEgcmVzdWx0IG9mIG1vZGlmeWluZwotICogb3B0aW9ucyBpbiBhIENvbnRl
eHQgTWVudSBieSBhIHVzZXIuCisgKiBUZXN0IHdoZXRoZXIgdGhlIG9uU2V0dGluZ0NoYW5nZSBj
YWxsYmFjayBpcyBjYWxsZWQgd2hlbiAiQ2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nIiBzZXR0
aW5nIHdhcyBjaGFuZ2VkIGluIGNvbnRleHQgbWVudS4KKyAqIFR3byBjYXNlcyBhcmUgdGVzdGVk
OgorICogIC0gIkNoZWNrIFNwZWxsaW5nIFdoaWxlIFR5cGluZyIgaXMgZW5hYmxlZCwKKyAqICAt
ICJDaGVjayBTcGVsbGluZyBXaGlsZSBUeXBpbmciIGlzIGRpc2FibGVkLgorICovCitURVNUX0Yo
RVdLMlVuaXRUZXN0QmFzZSwgZXdrX3RleHRfY2hlY2tlcl9jaGVja19zcGVsbGluZ193aGlsZV90
eXBpbmdfdG9nZ2xlKQoreworICAgIHJlc2V0Q2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMoKTsKKwor
ICAgIGV3a190ZXh0X2NoZWNrZXJfY29udGludW91c19zcGVsbF9jaGVja2luZ19jaGFuZ2VfY2Jf
c2V0KG9uU2V0dGluZ0NoYW5nZSk7CisKKyAgICBpc1NldHRpbmdFbmFibGVkID0gIWV3a190ZXh0
X2NoZWNrZXJfY29udGludW91c19zcGVsbF9jaGVja2luZ19lbmFibGVkX2dldCgpOworCisgICAg
ZXdrVmlld0NsYXNzKCktPmNvbnRleHRfbWVudV9zaG93ID0gdG9vZ2xlQ2hlY2tTcGVsbGluZ1do
aWxlVHlwaW5nOworCisgICAgQVNTRVJUX1RSVUUobG9hZFVybFN5bmMoZW52aXJvbm1lbnQtPnVy
bEZvclJlc291cmNlKCJzcGVsbGluZ190ZXN0Lmh0bWwiKS5kYXRhKCkpKTsKKworICAgIEVXSzJV
bml0VGVzdEJhc2U6Om1vdXNlQ2xpY2soMTAsIDIwLCAvKlJpZ2h0IGJ1dHRvbiovIDMpOworICAg
IEFTU0VSVF9UUlVFKHdhaXRVbnRpbFRydWUoY2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMuc2V0dGlu
Z0NoYW5nZSkpOworCisgICAgcmVzZXRDYWxsYmFja3NFeGVjdXRpb25TdGF0cygpOworCisgICAg
Ly8gVGVzdCBjYXNlLCB3aGVuICJDaGVjayBTcGVsbGluZyBXaGlsZSBUeXBpbmciIGlzIGluIHJl
dmVyc2UgdG8gdGhlIHByZXZpb3VzIG9uZS4KKyAgICBpc1NldHRpbmdFbmFibGVkID0gIWlzU2V0
dGluZ0VuYWJsZWQ7CisKKyAgICBFV0syVW5pdFRlc3RCYXNlOjptb3VzZUNsaWNrKDEwLCAyMCwg
LypSaWdodCBidXR0b24qLyAzKTsKKyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxUcnVlKGNhbGxi
YWNrc0V4ZWN1dGlvblN0YXRzLnNldHRpbmdDaGFuZ2UpKTsKKyAgICBld2tfdGV4dF9jaGVja2Vy
X2NvbnRpbnVvdXNfc3BlbGxfY2hlY2tpbmdfY2hhbmdlX2NiX3NldCgwKTsKK30KKworLyoqCisg
KiBUZXN0IHdoZXRoZXIgdGhlIG9uU2V0dGluZ0NoYW5nZSBjYWxsYmFjayBpcyBub3QgY2FsbGVk
IHdoZW4gdGhlIHNwZWxsIGNoZWNraW5nIHNldHRpbmcgd2FzIGNoYW5nZWQgYnkgY2xpZW50Lgog
ICovCiBURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3RleHRfY2hlY2tlcl9jb250aW51b3Vz
X3NwZWxsX2NoZWNraW5nX2NoYW5nZV9jYl9zZXQpCiB7CisgICAgcmVzZXRDYWxsYmFja3NFeGVj
dXRpb25TdGF0cygpOworCiAgICAgZXdrX3RleHRfY2hlY2tlcl9jb250aW51b3VzX3NwZWxsX2No
ZWNraW5nX2NoYW5nZV9jYl9zZXQob25TZXR0aW5nQ2hhbmdlKTsKIAogICAgIGlzU2V0dGluZ0Vu
YWJsZWQgPSBld2tfdGV4dF9jaGVja2VyX2NvbnRpbnVvdXNfc3BlbGxfY2hlY2tpbmdfZW5hYmxl
ZF9nZXQoKTsKQEAgLTMzMSwzMSArNDEyLDI1IEBAIFRFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBl
d2tfdGV4dF9jaGVja2VyX2NvbnRpbnVvdXNfc3BlbGxfY2hlY2tpbmdfY2hhbmdlX2NiX3NlCiAg
ICAgLy8gb24gdGhlIGNsaWVudCdzIHJlcXVlc3QgKHB1YmxpYyBBUEkpLgogICAgIGV3a190ZXh0
X2NoZWNrZXJfY29udGludW91c19zcGVsbF9jaGVja2luZ19lbmFibGVkX3NldChpc1NldHRpbmdF
bmFibGVkKTsKIAotICAgIHRpbWVvdXRUaW1lciA9IGVjb3JlX3RpbWVyX2FkZChkZWZhdWx0VGlt
ZW91dEluU2Vjb25kcywgb25UaW1lb3V0LCAwKTsKKyAgICAvLyBUaGUgbm90aWZpY2F0aW9uIGFi
b3V0IHRoZSBjaGFuZ2Ugb2YgdGhlIHNwZWxsIGNoZWNraW5nIHNldHRpbmcgaXMgY2FsbGVkIG9u
IGlkbGVyLgorICAgIEFTU0VSVF9GQUxTRSh3YWl0VW50aWxUcnVlKGNhbGxiYWNrc0V4ZWN1dGlv
blN0YXRzLnNldHRpbmdDaGFuZ2UsIGRlZmF1bHRUaW1lb3V0SW5TZWNvbmRzKSk7CisgICAgZXdr
X3RleHRfY2hlY2tlcl9jb250aW51b3VzX3NwZWxsX2NoZWNraW5nX2NoYW5nZV9jYl9zZXQoMCk7
Cit9CiAKLSAgICAvLyBTdGFydCBwcm9jY2VzaW5nIEVjb3JlIGV2ZW50cywgdGhlIG5vdGlmaWNh
dGlvbiBhYm91dCB0aGUgY2hhbmdlIG9mIHRoZSBzcGVsbAotICAgIC8vIGNoZWNraW5nIHNldHRp
bmcgaXMgY2FsbGVkIG9uIGlkbGVyLgotICAgIC8vIFdlIGNhbid0IGNhbGwgZWNvcmVfbWFpbl9s
b29wX2l0ZXJhdGUgYmVjYXVzZSBpdCBkb2Vzbid0IHByb2Nlc3MgdGhlIGlkbGVycy4KLSAgICBl
Y29yZV9tYWluX2xvb3BfYmVnaW4oKTsKKy8qKgorICogVGVzdCB3aGV0aGVyIHRoZSBvblNldHRp
bmdDaGFuZ2UgY2FsbGJhY2sgaXMgbm90IGNhbGxlZCwgaWYgdGhlIGNsaWVudCBkb2VzIG5vdCBz
ZXQgaXQuCisgKiAiQ2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nIiBvcHRpb24gaXMgdG9nZ2xl
ZCBpbiBjb250ZXh0IG1lbnUuCisgKi8KK1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdGV4
dF9jaGVja2VyX2NvbnRpbnVvdXNfc3BlbGxfY2hlY2tpbmdfY2hhbmdlX2NiX3Vuc2V0KQorewor
ICAgIHJlc2V0Q2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMoKTsKKworICAgIGV3a1ZpZXdDbGFzcygp
LT5jb250ZXh0X21lbnVfc2hvdyA9IHRvb2dsZUNoZWNrU3BlbGxpbmdXaGlsZVR5cGluZzsKKwor
ICAgIEFTU0VSVF9UUlVFKGxvYWRVcmxTeW5jKGVudmlyb25tZW50LT51cmxGb3JSZXNvdXJjZSgi
c3BlbGxpbmdfdGVzdC5odG1sIikuZGF0YSgpKSk7CiAKLSAgICBFWFBFQ1RfVFJVRSh0aW1lb3V0
VGltZXIpOwotCi0gICAgLyogVGhlIGNhbGxiYWNrIHNob3VsZCBiZSBjYWxsZWQgaWYgdGhlIGNv
bnRleHQgbWVudSAiQ2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nIiBvcHRpb24KLSAgICAgICB3
YXMgdG9nZ2xlZCBieSB0aGUgdXNlci4KLSAgICBGSVhNRToKLSAgICAxKSBJbnZva2UgdGhlIGNv
bnRleHQgbWVudSBvbiB0aGUgaW5wdXQgZmllbGQuCi0gICAgMikgQ2hvb3NlIHRoZSBzdWIgbWVu
dSAiU3BlbGxpbmcgYW5kIEdyYW1tYXIiIG9wdGlvbiAobm90IGltcGxlbWVudGVkIGZvciBXSzIp
LgotICAgIDMpIFRvZ2dsZSAiQ2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nIiBvcHRpb24uCi0g
ICAgNCkgQ2hlY2sgd2hldGhlciB0aGUgY2FsbGJhY2sgaXMgY2FsbGVkLiAqLwotCi0gICAgLyog
VGhlIGNhbGxiYWNrIHNob3VsZG4ndCBiZSBjYWxsZWQgaWYgdGhlIHVzZXIgaGFzIGludmFsaWRh
dGVkIGl0LgotICAgIEZJWE1FOgotICAgIDEpIENhbGwgZXdrX3RleHRfY2hlY2tlcl9jb250aW51
b3VzX3NwZWxsX2NoZWNraW5nX2NoYW5nZV9jYl9zZXQoMCkgdG8gbm90aWZ5IHRoZSBXZWJLaXQg
dGhhdAotICAgICAgIHRoZSBjbGllbnQgaXMgbm90IGludGVyZXN0ZWQgaW4gdGhlIHNldHRpbmcg
Y2hhbmdlLgotICAgIDIpIEludm9rZSB0aGUgY29udGV4dCBtZW51IG9uIHRoZSBpbnB1dCBmaWVs
ZC4KLSAgICAzKSBDaG9vc2UgdGhlIHN1YiBtZW51ICJTcGVsbGluZyBhbmQgR3JhbW1hciIgb3B0
aW9uIChub3QgaW1wbGVtZW50ZWQgZm9yIFdLMikuCi0gICAgNCkgVG9nZ2xlICJDaGVjayBTcGVs
bGluZyBXaGlsZSBUeXBpbmciIG9wdGlvbi4KLSAgICA1KSBDaGVjayB3aGV0aGVyIHRoZSBjYWxs
YmFjayB3YXMgY2FsbGVkLiAqLworICAgIEVXSzJVbml0VGVzdEJhc2U6Om1vdXNlQ2xpY2soMTAs
IDIwLCAvKlJpZ2h0IGJ1dHRvbiovIDMpOworICAgIEFTU0VSVF9GQUxTRSh3YWl0VW50aWxUcnVl
KGNhbGxiYWNrc0V4ZWN1dGlvblN0YXRzLnNldHRpbmdDaGFuZ2UsIGRlZmF1bHRUaW1lb3V0SW5T
ZWNvbmRzKSk7CiB9CiAKIC8qKgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204914</attachid>
            <date>2013-06-18 07:52:41 -0700</date>
            <delta_ts>2013-06-18 09:31:06 -0700</delta_ts>
            <desc>apply suggestions</desc>
            <filename>unit_test_onSettingChange.patch</filename>
            <type>text/plain</type>
            <size>10316</size>
            <attacher name="Krzysztof Wolanski">k.wolanski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhZjBjNmZkLi5hZjBiMThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTMtMDYtMTggIEtyenlzenRvZiBXb2xhbnNraSAgPGsud29sYW5za2lAc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnQgdW5pdCB0ZXN0IGNhbGxiYWNrOiBv
blNldHRpbmdDaGFuZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTc3MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJdCBpcyBmaW5hbGx5IHBvc3NpYmxlIHRvIGltcGxlbWVudCBtaXNzaW5nIHVuaXQg
dGVzdHMgYXMgV2ViS2l0Mi1FRkwKKyAgICAgICAgaGFzIGRlbGl2ZXJlZCBzdWIgbWVudSAocjE1
MDI1NCkuCisgICAgICAgIEFkZCB0d28gdW5pdCB0ZXN0cyBmb3IgY2hlY2tpbmcgb25TZXR0aW5n
Q2hhbmdlIGNhbGxiYWNrIGJlaGF2aW91ciwKKyAgICAgICAgd2hlbiB0b2dnbGluZyAiQ2hlY2sg
U3BlbGxpbmcgV2hpbGUgVHlwaW5nIiBpbiBjb250ZXh0IG1lbnUuCisKKyAgICAgICAgQ2hhbmdl
ZCB0eXBlcyBpbnNpZGUgY2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMgc3RydWN0IGZyb20gYml0IGZp
ZWxkIHRvIGJvb2wsCisgICAgICAgIGJlY2F1c2UgY2FzdGluZyBmcm9tIGJpdCBmaWVsZCB0byAm
Ym9vbCBpcyBpbnZhbGlkIChpbiB1c2luZyB3YWl0VW50aWxUcnVlIG1ldGhvZCkuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdGV4dF9jaGVja2VyLmNwcDoK
KyAgICAgICAgKHJlc2V0Q2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMpOgorICAgICAgICAob25TZXR0
aW5nQ2hhbmdlKToKKyAgICAgICAgKHNlbGVjdENvbnRleHRNZW51T3B0aW9uKToKKyAgICAgICAg
U2VsZWN0cyBkZXRlcm1pbmVkIG9wdGlvbiBpbiBjb250ZXh0IG1lbnUuIEl0IGlzIHVzZWQgYXMg
Y2FsbGJhY2ssCisgICAgICAgIHdoZW4gc2hvd2luZyBjb250ZXh0IG1lbnUuCisKKyAgICAgICAg
KGNoZWNrQ29ycmVjdG5lc3NPZlNwZWxsaW5nSXRlbXMpOgorICAgICAgICBDaGFuZ2VkIHRoZSBu
YW1lIG9mIG9uQ29udGV4dE1lbnVTaG93IG1ldGhvZCB0byBiZSBjb25zaXN0ZW50IHdpdGggbmV3
IG1ldGhvZHMuCisKKyAgICAgICAgKHRvb2dsZUNoZWNrU3BlbGxpbmdXaGlsZVR5cGluZyk6Cisg
ICAgICAgIFNlbGVjdCAiQ2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nIiBpbiBjb250ZXh0IG1l
bnUgdG8gdGVzdCB3aGV0aGVyCisgICAgICAgIG9uU2V0dGluZ0NoYW5nZSBpcyBjYWxsZWQuCisK
IDIwMTMtMDYtMTcgIFNhbnRvc2ggTWFodG8gIDxzYW50b3NoLm1hQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIEV4dHJhIHdoaXRlc3BhY2UgaW4gYmxhbmsgbGluZSBpbiBQbGF0Zm9ybVBvcHVwTWVu
dURhdGEuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy90ZXN0X2V3azJfdGV4dF9jaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl90ZXh0X2NoZWNrZXIuY3BwCmluZGV4IGJhZmMwYjgu
LjUyMGI4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rl
c3RzL3Rlc3RfZXdrMl90ZXh0X2NoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl90ZXh0X2NoZWNrZXIuY3BwCkBAIC01NSwxNiAr
NTUsMTggQEAgc3RhdGljIGNvbnN0IGNoYXIgbGVhcm5TcGVsbGluZ1N0cmluZ1tdID0gIkxlYXJu
IFNwZWxsaW5nIjsKICAqIEl0cyB2YWx1ZXMgYXJlIHJlc2V0IGJlZm9yZSBlYWNoIHRlc3QuCiAg
Ki8KIHN0YXRpYyBzdHJ1Y3QgewotICAgIGJvb2wgc3BlbGxEb2N1bWVudFRhZyA6IDE7Ci0gICAg
Ym9vbCBzcGVsbERvY3VtZW50VGFnQ2xvc2UgOiAxOwotICAgIGJvb2wgc3BlbGxpbmdDaGVjayA6
IDE7Ci0gICAgYm9vbCB3b3JkR3Vlc3NlcyA6IDE7Ci0gICAgYm9vbCB3b3JkTGVhcm4gOiAxOwot
ICAgIGJvb2wgd29yZElnbm9yZSA6IDE7CisgICAgYm9vbCBzZXR0aW5nQ2hhbmdlOworICAgIGJv
b2wgc3BlbGxEb2N1bWVudFRhZzsKKyAgICBib29sIHNwZWxsRG9jdW1lbnRUYWdDbG9zZTsKKyAg
ICBib29sIHNwZWxsaW5nQ2hlY2s7CisgICAgYm9vbCB3b3JkR3Vlc3NlczsKKyAgICBib29sIHdv
cmRMZWFybjsKKyAgICBib29sIHdvcmRJZ25vcmU7CiB9IGNhbGxiYWNrc0V4ZWN1dGlvblN0YXRz
OwogCiBzdGF0aWMgdm9pZCByZXNldENhbGxiYWNrc0V4ZWN1dGlvblN0YXRzKCkKIHsKKyAgICBj
YWxsYmFja3NFeGVjdXRpb25TdGF0cy5zZXR0aW5nQ2hhbmdlID0gZmFsc2U7CiAgICAgY2FsbGJh
Y2tzRXhlY3V0aW9uU3RhdHMuc3BlbGxEb2N1bWVudFRhZyA9IGZhbHNlOwogICAgIGNhbGxiYWNr
c0V4ZWN1dGlvblN0YXRzLnNwZWxsRG9jdW1lbnRUYWdDbG9zZSA9IGZhbHNlOwogICAgIGNhbGxi
YWNrc0V4ZWN1dGlvblN0YXRzLnNwZWxsaW5nQ2hlY2sgPSBmYWxzZTsKQEAgLTEwMCwxMCArMTAy
LDcgQEAgc3RhdGljIEVpbmFfQm9vbCBvblRpbWVvdXQodm9pZCopCiBzdGF0aWMgdm9pZCBvblNl
dHRpbmdDaGFuZ2UoRWluYV9Cb29sIGZsYWcpCiB7CiAgICAgRVhQRUNUX0VRKGlzU2V0dGluZ0Vu
YWJsZWQsIGZsYWcpOwotCi0gICAgZWNvcmVfdGltZXJfZGVsKHRpbWVvdXRUaW1lcik7Ci0gICAg
dGltZW91dFRpbWVyID0gMDsKLSAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOworICAgIGNhbGxi
YWNrc0V4ZWN1dGlvblN0YXRzLnNldHRpbmdDaGFuZ2UgPSB0cnVlOwogfQogCiAvKioKQEAgLTIx
Nyw3ICsyMTYsMzIgQEAgc3RhdGljIHZvaWQgb25Xb3JkSWdub3JlKHVpbnQ2NF90IHRhZywgY29u
c3QgY2hhciogd29yZCkKICAgICBjYWxsYmFja3NFeGVjdXRpb25TdGF0cy53b3JkSWdub3JlID0g
dHJ1ZTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBvbkNvbnRleHRNZW51U2hvdyhFd2tfVmlld19T
bWFydF9EYXRhKiwgRXZhc19Db29yZCwgRXZhc19Db29yZCwgRXdrX0NvbnRleHRfTWVudSogY29u
dGV4dE1lbnUpCisvKioKKyAqIEhlbHBlciwgc2VsZWN0cyBvcHRpb24gZnJvbSBjb250ZXh0IG1l
bnUuCisgKgorICogQHBhcmFtIGNvbnRleHRNZW51IHRoZSBjb250ZXh0IG1lbnUgb2JqZWN0Cisg
KiBAcGFyYW0gaXRlbUFjdGlvbiBhY3Rpb24gb2YgaXRlbSB0byBzZWxlY3QKKyAqIEBwYXJhbSBp
dGVtVHlwZSB0eXBlIG9mIGl0ZW0gdG8gc2VsZWN0CisgKi8KK3N0YXRpYyB2b2lkIHNlbGVjdENv
bnRleHRNZW51T3B0aW9uKEV3a19Db250ZXh0X01lbnUqIGNvbnRleHRNZW51LCBjb25zdCBFd2tf
Q29udGV4dF9NZW51X0l0ZW1fQWN0aW9uJiBpdGVtQWN0aW9uLCBjb25zdCBFd2tfQ29udGV4dF9N
ZW51X0l0ZW1fVHlwZSYgaXRlbVR5cGUpCit7CisgICAgY29uc3QgRWluYV9MaXN0KiBjb250ZXh0
TWVudUl0ZW1zID0gZXdrX2NvbnRleHRfbWVudV9pdGVtc19nZXQoY29udGV4dE1lbnUpOworCisg
ICAgdm9pZCogaXRlbURhdGE7CisgICAgY29uc3QgRWluYV9MaXN0KiBsaXN0SXRlcmF0b3I7CisK
KyAgICBFSU5BX0xJU1RfRk9SRUFDSChjb250ZXh0TWVudUl0ZW1zLCBsaXN0SXRlcmF0b3IsIGl0
ZW1EYXRhKSB7CisgICAgICAgIEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSA9IHN0YXRpY19j
YXN0PEV3a19Db250ZXh0X01lbnVfSXRlbSo+KGl0ZW1EYXRhKTsKKyAgICAgICAgaWYgKGV3a19j
b250ZXh0X21lbnVfaXRlbV9hY3Rpb25fZ2V0KGl0ZW0pID09IGl0ZW1BY3Rpb24KKyAgICAgICAg
ICAgICYmIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBlX2dldChpdGVtKSA9PSBpdGVtVHlwZSkg
eworICAgICAgICAgICAgZXdrX2NvbnRleHRfbWVudV9pdGVtX3NlbGVjdChjb250ZXh0TWVudSwg
aXRlbSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgRkFJTCgp
OworfQorCitzdGF0aWMgRWluYV9Cb29sIGNoZWNrQ29ycmVjdG5lc3NPZlNwZWxsaW5nSXRlbXMo
RXdrX1ZpZXdfU21hcnRfRGF0YSosIEV2YXNfQ29vcmQsIEV2YXNfQ29vcmQsIEV3a19Db250ZXh0
X01lbnUqIGNvbnRleHRNZW51KQogewogICAgIGNvbnN0IEVpbmFfTGlzdCogY29udGV4dE1lbnVJ
dGVtcyA9IGV3a19jb250ZXh0X21lbnVfaXRlbXNfZ2V0KGNvbnRleHRNZW51KTsKIApAQCAtMjQ1
LDYgKzI2OSwyNiBAQCBzdGF0aWMgRWluYV9Cb29sIG9uQ29udGV4dE1lbnVTaG93KEV3a19WaWV3
X1NtYXJ0X0RhdGEqLCBFdmFzX0Nvb3JkLCBFdmFzX0Nvb3JkLAogICAgIHJldHVybiB0cnVlOwog
fQogCitzdGF0aWMgRWluYV9Cb29sIHRvb2dsZUNoZWNrU3BlbGxpbmdXaGlsZVR5cGluZyhFd2tf
Vmlld19TbWFydF9EYXRhKiwgRXZhc19Db29yZCwgRXZhc19Db29yZCwgRXdrX0NvbnRleHRfTWVu
dSogY29udGV4dE1lbnUpCit7CisgICAgY29uc3QgRWluYV9MaXN0KiBjb250ZXh0TWVudUl0ZW1z
ID0gZXdrX2NvbnRleHRfbWVudV9pdGVtc19nZXQoY29udGV4dE1lbnUpOworCisgICAgdm9pZCog
aXRlbURhdGE7CisgICAgY29uc3QgRWluYV9MaXN0KiBsaXN0SXRlcmF0b3I7CisKKyAgICBFSU5B
X0xJU1RfRk9SRUFDSChjb250ZXh0TWVudUl0ZW1zLCBsaXN0SXRlcmF0b3IsIGl0ZW1EYXRhKSB7
CisgICAgICAgIEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSA9IHN0YXRpY19jYXN0PEV3a19D
b250ZXh0X01lbnVfSXRlbSo+KGl0ZW1EYXRhKTsKKyAgICAgICAgLy8gTG9va2luZyBmb3IgIlNw
ZWxsaW5nIGFuZCBHcmFtbWFyIiBzdWIgbWVudSB0byB0b2dnbGUgIkNoZWNrIFNwZWxsaW5nIFdo
aWxlIFR5cGluZyIgb3B0aW9uLgorICAgICAgICBpZiAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2Fj
dGlvbl9nZXQoaXRlbSkgPT0gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TUEVMTElOR19NRU5V
CisgICAgICAgICAgICAmJiBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9nZXQoaXRlbSkgPT0g
RVdLX1NVQk1FTlVfVFlQRSkgeworICAgICAgICAgICAgc2VsZWN0Q29udGV4dE1lbnVPcHRpb24o
ZXdrX2NvbnRleHRfbWVudV9pdGVtX3N1Ym1lbnVfZ2V0KGl0ZW0pLCBFV0tfQ09OVEVYVF9NRU5V
X0lURU1fVEFHX0NIRUNLX1NQRUxMSU5HX1dISUxFX1RZUElORywgRVdLX0NIRUNLQUJMRV9BQ1RJ
T05fVFlQRSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBBRERfRkFJTFVSRSgpOworICAgIHJldHVybiB0cnVlOworfQorCiAvKioKICAqIFRlc3Qgd2hl
dGhlciB0aGUgZGVmYXVsdCBsYW5ndWFnZSBpcyBsb2FkZWQgaW5kZXBlbmRlbnRseSBvZgogICog
Y29udGludW91cyBzcGVsbCBjaGVja2luZyBzZXR0aW5nLgpAQCAtMjg5LDcgKzMzMyw3IEBAIFRF
U1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdGV4dF9jaGVja2VyX3NwZWxsX2NoZWNraW5nX2xh
bmd1YWdlc19nZXQpCiBURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgY29udGV4dF9tZW51X3NwZWxs
aW5nX2l0ZW1zX2F2YWlsYWJpbGl0eSkKIHsKICAgICBld2tfdGV4dF9jaGVja2VyX2NvbnRpbnVv
dXNfc3BlbGxfY2hlY2tpbmdfZW5hYmxlZF9zZXQoZmFsc2UpOwotICAgIGV3a1ZpZXdDbGFzcygp
LT5jb250ZXh0X21lbnVfc2hvdyA9IG9uQ29udGV4dE1lbnVTaG93OworICAgIGV3a1ZpZXdDbGFz
cygpLT5jb250ZXh0X21lbnVfc2hvdyA9IGNoZWNrQ29ycmVjdG5lc3NPZlNwZWxsaW5nSXRlbXM7
CiAKICAgICBBU1NFUlRfVFJVRShsb2FkVXJsU3luYyhlbnZpcm9ubWVudC0+dXJsRm9yUmVzb3Vy
Y2UoInNwZWxsaW5nX3Rlc3QuaHRtbCIpLmRhdGEoKSkpOwogICAgIG1vdXNlQ2xpY2soMTAsIDIw
LCAzIC8qIFJpZ2h0IGJ1dHRvbiAqLyk7CkBAIC0zMTcsMTIgKzM2MSw0NCBAQCBURVNUX0YoRVdL
MlVuaXRUZXN0QmFzZSwgZXdrX3RleHRfY2hlY2tlcl9jb250aW51b3VzX3NwZWxsX2NoZWNraW5n
X2VuYWJsZWQpCiB9CiAKIC8qKgotICogVGVzdCB3aGV0aGVyIHRoZSBjYWxsYmFjayBpcyBjYWxs
ZWQgd2hlbiB0aGUgc3BlbGwgY2hlY2tpbmcgc2V0dGluZyB3YXMgY2hhbmdlZCBieSBXZWJLaXQu
Ci0gKiBDaGFuZ2luZyBvZiB0aGlzIHNldHRpbmcgYXQgdGhlIFdlYktpdCBsZXZlbCBjYW4gYmUg
bWFkZSBhcyBhIHJlc3VsdCBvZiBtb2RpZnlpbmcKLSAqIG9wdGlvbnMgaW4gYSBDb250ZXh0IE1l
bnUgYnkgYSB1c2VyLgorICogVGVzdCB3aGV0aGVyIHRoZSBvblNldHRpbmdDaGFuZ2UgY2FsbGJh
Y2sgaXMgY2FsbGVkIHdoZW4gIkNoZWNrIFNwZWxsaW5nIFdoaWxlIFR5cGluZyIgc2V0dGluZyB3
YXMgY2hhbmdlZCBpbiBjb250ZXh0IG1lbnUuCisgKiBUd28gY2FzZXMgYXJlIHRlc3RlZDoKKyAq
ICAtICJDaGVjayBTcGVsbGluZyBXaGlsZSBUeXBpbmciIGlzIGVuYWJsZWQsCisgKiAgLSAiQ2hl
Y2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nIiBpcyBkaXNhYmxlZC4KKyAqLworVEVTVF9GKEVXSzJV
bml0VGVzdEJhc2UsIGV3a190ZXh0X2NoZWNrZXJfY2hlY2tfc3BlbGxpbmdfd2hpbGVfdHlwaW5n
X3RvZ2dsZSkKK3sKKyAgICByZXNldENhbGxiYWNrc0V4ZWN1dGlvblN0YXRzKCk7CisKKyAgICBl
d2tfdGV4dF9jaGVja2VyX2NvbnRpbnVvdXNfc3BlbGxfY2hlY2tpbmdfY2hhbmdlX2NiX3NldChv
blNldHRpbmdDaGFuZ2UpOworCisgICAgaXNTZXR0aW5nRW5hYmxlZCA9ICFld2tfdGV4dF9jaGVj
a2VyX2NvbnRpbnVvdXNfc3BlbGxfY2hlY2tpbmdfZW5hYmxlZF9nZXQoKTsKKworICAgIGV3a1Zp
ZXdDbGFzcygpLT5jb250ZXh0X21lbnVfc2hvdyA9IHRvb2dsZUNoZWNrU3BlbGxpbmdXaGlsZVR5
cGluZzsKKworICAgIEFTU0VSVF9UUlVFKGxvYWRVcmxTeW5jKGVudmlyb25tZW50LT51cmxGb3JS
ZXNvdXJjZSgic3BlbGxpbmdfdGVzdC5odG1sIikuZGF0YSgpKSk7CisKKyAgICBFV0syVW5pdFRl
c3RCYXNlOjptb3VzZUNsaWNrKDEwLCAyMCwgLypSaWdodCBidXR0b24qLyAzKTsKKyAgICBBU1NF
UlRfVFJVRSh3YWl0VW50aWxUcnVlKGNhbGxiYWNrc0V4ZWN1dGlvblN0YXRzLnNldHRpbmdDaGFu
Z2UpKTsKKworICAgIHJlc2V0Q2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMoKTsKKworICAgIC8vIFRl
c3QgY2FzZSwgd2hlbiAiQ2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nIiBpcyBpbiByZXZlcnNl
IHRvIHRoZSBwcmV2aW91cyBvbmUuCisgICAgaXNTZXR0aW5nRW5hYmxlZCA9ICFpc1NldHRpbmdF
bmFibGVkOworCisgICAgRVdLMlVuaXRUZXN0QmFzZTo6bW91c2VDbGljaygxMCwgMjAsIC8qUmln
aHQgYnV0dG9uKi8gMyk7CisgICAgQVNTRVJUX1RSVUUod2FpdFVudGlsVHJ1ZShjYWxsYmFja3NF
eGVjdXRpb25TdGF0cy5zZXR0aW5nQ2hhbmdlKSk7CisKKyAgICBld2tfdGV4dF9jaGVja2VyX2Nv
bnRpbnVvdXNfc3BlbGxfY2hlY2tpbmdfY2hhbmdlX2NiX3NldCgwKTsKK30KKworLyoqCisgKiBU
ZXN0IHdoZXRoZXIgdGhlIG9uU2V0dGluZ0NoYW5nZSBjYWxsYmFjayBpcyBub3QgY2FsbGVkIHdo
ZW4gdGhlIHNwZWxsIGNoZWNraW5nIHNldHRpbmcgd2FzIGNoYW5nZWQgYnkgY2xpZW50LgogICov
CiBURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3RleHRfY2hlY2tlcl9jb250aW51b3VzX3Nw
ZWxsX2NoZWNraW5nX2NoYW5nZV9jYl9zZXQpCiB7CisgICAgcmVzZXRDYWxsYmFja3NFeGVjdXRp
b25TdGF0cygpOworCiAgICAgZXdrX3RleHRfY2hlY2tlcl9jb250aW51b3VzX3NwZWxsX2NoZWNr
aW5nX2NoYW5nZV9jYl9zZXQob25TZXR0aW5nQ2hhbmdlKTsKIAogICAgIGlzU2V0dGluZ0VuYWJs
ZWQgPSBld2tfdGV4dF9jaGVja2VyX2NvbnRpbnVvdXNfc3BlbGxfY2hlY2tpbmdfZW5hYmxlZF9n
ZXQoKTsKQEAgLTMzMSwzMSArNDA3LDI2IEBAIFRFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tf
dGV4dF9jaGVja2VyX2NvbnRpbnVvdXNfc3BlbGxfY2hlY2tpbmdfY2hhbmdlX2NiX3NlCiAgICAg
Ly8gb24gdGhlIGNsaWVudCdzIHJlcXVlc3QgKHB1YmxpYyBBUEkpLgogICAgIGV3a190ZXh0X2No
ZWNrZXJfY29udGludW91c19zcGVsbF9jaGVja2luZ19lbmFibGVkX3NldChpc1NldHRpbmdFbmFi
bGVkKTsKIAotICAgIHRpbWVvdXRUaW1lciA9IGVjb3JlX3RpbWVyX2FkZChkZWZhdWx0VGltZW91
dEluU2Vjb25kcywgb25UaW1lb3V0LCAwKTsKKyAgICAvLyBUaGUgbm90aWZpY2F0aW9uIGFib3V0
IHRoZSBjaGFuZ2Ugb2YgdGhlIHNwZWxsIGNoZWNraW5nIHNldHRpbmcgaXMgY2FsbGVkIG9uIGlk
bGVyLgorICAgIEFTU0VSVF9GQUxTRSh3YWl0VW50aWxUcnVlKGNhbGxiYWNrc0V4ZWN1dGlvblN0
YXRzLnNldHRpbmdDaGFuZ2UsIC8qVGltZW91dCovIDApKTsKIAotICAgIC8vIFN0YXJ0IHByb2Nj
ZXNpbmcgRWNvcmUgZXZlbnRzLCB0aGUgbm90aWZpY2F0aW9uIGFib3V0IHRoZSBjaGFuZ2Ugb2Yg
dGhlIHNwZWxsCi0gICAgLy8gY2hlY2tpbmcgc2V0dGluZyBpcyBjYWxsZWQgb24gaWRsZXIuCi0g
ICAgLy8gV2UgY2FuJ3QgY2FsbCBlY29yZV9tYWluX2xvb3BfaXRlcmF0ZSBiZWNhdXNlIGl0IGRv
ZXNuJ3QgcHJvY2VzcyB0aGUgaWRsZXJzLgotICAgIGVjb3JlX21haW5fbG9vcF9iZWdpbigpOwor
ICAgIGV3a190ZXh0X2NoZWNrZXJfY29udGludW91c19zcGVsbF9jaGVja2luZ19jaGFuZ2VfY2Jf
c2V0KDApOworfQorCisvKioKKyAqIFRlc3Qgd2hldGhlciB0aGUgb25TZXR0aW5nQ2hhbmdlIGNh
bGxiYWNrIGlzIG5vdCBjYWxsZWQsIGlmIHRoZSBjbGllbnQgZG9lcyBub3Qgc2V0IGl0LgorICog
IkNoZWNrIFNwZWxsaW5nIFdoaWxlIFR5cGluZyIgb3B0aW9uIGlzIHRvZ2dsZWQgaW4gY29udGV4
dCBtZW51LgorICovCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3RleHRfY2hlY2tlcl9j
b250aW51b3VzX3NwZWxsX2NoZWNraW5nX2NoYW5nZV9jYl91bnNldCkKK3sKKyAgICByZXNldENh
bGxiYWNrc0V4ZWN1dGlvblN0YXRzKCk7CisKKyAgICBld2tWaWV3Q2xhc3MoKS0+Y29udGV4dF9t
ZW51X3Nob3cgPSB0b29nbGVDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmc7CisKKyAgICBBU1NFUlRf
VFJVRShsb2FkVXJsU3luYyhlbnZpcm9ubWVudC0+dXJsRm9yUmVzb3VyY2UoInNwZWxsaW5nX3Rl
c3QuaHRtbCIpLmRhdGEoKSkpOwogCi0gICAgRVhQRUNUX1RSVUUodGltZW91dFRpbWVyKTsKLQot
ICAgIC8qIFRoZSBjYWxsYmFjayBzaG91bGQgYmUgY2FsbGVkIGlmIHRoZSBjb250ZXh0IG1lbnUg
IkNoZWNrIFNwZWxsaW5nIFdoaWxlIFR5cGluZyIgb3B0aW9uCi0gICAgICAgd2FzIHRvZ2dsZWQg
YnkgdGhlIHVzZXIuCi0gICAgRklYTUU6Ci0gICAgMSkgSW52b2tlIHRoZSBjb250ZXh0IG1lbnUg
b24gdGhlIGlucHV0IGZpZWxkLgotICAgIDIpIENob29zZSB0aGUgc3ViIG1lbnUgIlNwZWxsaW5n
IGFuZCBHcmFtbWFyIiBvcHRpb24gKG5vdCBpbXBsZW1lbnRlZCBmb3IgV0syKS4KLSAgICAzKSBU
b2dnbGUgIkNoZWNrIFNwZWxsaW5nIFdoaWxlIFR5cGluZyIgb3B0aW9uLgotICAgIDQpIENoZWNr
IHdoZXRoZXIgdGhlIGNhbGxiYWNrIGlzIGNhbGxlZC4gKi8KLQotICAgIC8qIFRoZSBjYWxsYmFj
ayBzaG91bGRuJ3QgYmUgY2FsbGVkIGlmIHRoZSB1c2VyIGhhcyBpbnZhbGlkYXRlZCBpdC4KLSAg
ICBGSVhNRToKLSAgICAxKSBDYWxsIGV3a190ZXh0X2NoZWNrZXJfY29udGludW91c19zcGVsbF9j
aGVja2luZ19jaGFuZ2VfY2Jfc2V0KDApIHRvIG5vdGlmeSB0aGUgV2ViS2l0IHRoYXQKLSAgICAg
ICB0aGUgY2xpZW50IGlzIG5vdCBpbnRlcmVzdGVkIGluIHRoZSBzZXR0aW5nIGNoYW5nZS4KLSAg
ICAyKSBJbnZva2UgdGhlIGNvbnRleHQgbWVudSBvbiB0aGUgaW5wdXQgZmllbGQuCi0gICAgMykg
Q2hvb3NlIHRoZSBzdWIgbWVudSAiU3BlbGxpbmcgYW5kIEdyYW1tYXIiIG9wdGlvbiAobm90IGlt
cGxlbWVudGVkIGZvciBXSzIpLgotICAgIDQpIFRvZ2dsZSAiQ2hlY2sgU3BlbGxpbmcgV2hpbGUg
VHlwaW5nIiBvcHRpb24uCi0gICAgNSkgQ2hlY2sgd2hldGhlciB0aGUgY2FsbGJhY2sgd2FzIGNh
bGxlZC4gKi8KKyAgICBFV0syVW5pdFRlc3RCYXNlOjptb3VzZUNsaWNrKDEwLCAyMCwgLypSaWdo
dCBidXR0b24qLyAzKTsKKyAgICBBU1NFUlRfRkFMU0Uod2FpdFVudGlsVHJ1ZShjYWxsYmFja3NF
eGVjdXRpb25TdGF0cy5zZXR0aW5nQ2hhbmdlLCAvKlRpbWVvdXQqLyAwKSk7CiB9CiAKIC8qKgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204920</attachid>
            <date>2013-06-18 09:31:06 -0700</date>
            <delta_ts>2013-06-19 01:50:32 -0700</delta_ts>
            <desc>apply suggestions</desc>
            <filename>unit_test_onSettingChange.patch</filename>
            <type>text/plain</type>
            <size>9942</size>
            <attacher name="Krzysztof Wolanski">k.wolanski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhZjBjNmZkLi5jYjk4YWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTMtMDYtMTggIEtyenlzenRvZiBXb2xhbnNraSAgPGsud29sYW5za2lAc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnQgdW5pdCB0ZXN0IGNhbGxiYWNrOiBv
blNldHRpbmdDaGFuZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTc3MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJdCBpcyBmaW5hbGx5IHBvc3NpYmxlIHRvIGltcGxlbWVudCBtaXNzaW5nIHVuaXQg
dGVzdHMgYXMgV2ViS2l0Mi1FRkwKKyAgICAgICAgaGFzIGRlbGl2ZXJlZCBzdWIgbWVudSAocjE1
MDI1NCkuCisgICAgICAgIEFkZCB0d28gdW5pdCB0ZXN0cyBmb3IgY2hlY2tpbmcgb25TZXR0aW5n
Q2hhbmdlIGNhbGxiYWNrIGJlaGF2aW91ciwKKyAgICAgICAgd2hlbiB0b2dnbGluZyAiQ2hlY2sg
U3BlbGxpbmcgV2hpbGUgVHlwaW5nIiBpbiBjb250ZXh0IG1lbnUuCisKKyAgICAgICAgQ2hhbmdl
ZCB0eXBlcyBpbnNpZGUgY2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMgc3RydWN0IGZyb20gYml0IGZp
ZWxkIHRvIGJvb2wsCisgICAgICAgIGJlY2F1c2UgY2FzdGluZyBmcm9tIGJpdCBmaWVsZCB0byAm
Ym9vbCBpcyBpbnZhbGlkIChpbiB1c2luZyB3YWl0VW50aWxUcnVlIG1ldGhvZCkuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdGV4dF9jaGVja2VyLmNwcDoK
KyAgICAgICAgKHJlc2V0Q2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMpOgorICAgICAgICAob25TZXR0
aW5nQ2hhbmdlKToKKyAgICAgICAgKGZpbmRDb250ZXh0TWVudUl0ZW0pOgorICAgICAgICBHZXQg
ZGV0ZXJtaW5lZCBvcHRpb24gZnJvbSBjb250ZXh0IG1lbnUuCisKKyAgICAgICAgKGNoZWNrQ29y
cmVjdG5lc3NPZlNwZWxsaW5nSXRlbXMpOgorICAgICAgICBDaGFuZ2VkIHRoZSBuYW1lIG9mIG9u
Q29udGV4dE1lbnVTaG93IG1ldGhvZCB0byBiZSBjb25zaXN0ZW50IHdpdGggbmV3IG1ldGhvZHMu
CisKKyAgICAgICAgKHRvb2dsZUNoZWNrU3BlbGxpbmdXaGlsZVR5cGluZyk6CisgICAgICAgIFNl
bGVjdCAiQ2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nIiBpbiBjb250ZXh0IG1lbnUgdG8gdGVz
dCB3aGV0aGVyCisgICAgICAgIG9uU2V0dGluZ0NoYW5nZSBpcyBjYWxsZWQuCisKIDIwMTMtMDYt
MTcgIFNhbnRvc2ggTWFodG8gIDxzYW50b3NoLm1hQHNhbXN1bmcuY29tPgogCiAgICAgICAgIEV4
dHJhIHdoaXRlc3BhY2UgaW4gYmxhbmsgbGluZSBpbiBQbGF0Zm9ybVBvcHVwTWVudURhdGEuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0
X2V3azJfdGV4dF9jaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L3Rlc3RzL3Rlc3RfZXdrMl90ZXh0X2NoZWNrZXIuY3BwCmluZGV4IGJhZmMwYjguLmQ0ZGQ3YWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3Rf
ZXdrMl90ZXh0X2NoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL3Rlc3RzL3Rlc3RfZXdrMl90ZXh0X2NoZWNrZXIuY3BwCkBAIC01NSwxNiArNTUsMTggQEAg
c3RhdGljIGNvbnN0IGNoYXIgbGVhcm5TcGVsbGluZ1N0cmluZ1tdID0gIkxlYXJuIFNwZWxsaW5n
IjsKICAqIEl0cyB2YWx1ZXMgYXJlIHJlc2V0IGJlZm9yZSBlYWNoIHRlc3QuCiAgKi8KIHN0YXRp
YyBzdHJ1Y3QgewotICAgIGJvb2wgc3BlbGxEb2N1bWVudFRhZyA6IDE7Ci0gICAgYm9vbCBzcGVs
bERvY3VtZW50VGFnQ2xvc2UgOiAxOwotICAgIGJvb2wgc3BlbGxpbmdDaGVjayA6IDE7Ci0gICAg
Ym9vbCB3b3JkR3Vlc3NlcyA6IDE7Ci0gICAgYm9vbCB3b3JkTGVhcm4gOiAxOwotICAgIGJvb2wg
d29yZElnbm9yZSA6IDE7CisgICAgYm9vbCBzZXR0aW5nQ2hhbmdlOworICAgIGJvb2wgc3BlbGxE
b2N1bWVudFRhZzsKKyAgICBib29sIHNwZWxsRG9jdW1lbnRUYWdDbG9zZTsKKyAgICBib29sIHNw
ZWxsaW5nQ2hlY2s7CisgICAgYm9vbCB3b3JkR3Vlc3NlczsKKyAgICBib29sIHdvcmRMZWFybjsK
KyAgICBib29sIHdvcmRJZ25vcmU7CiB9IGNhbGxiYWNrc0V4ZWN1dGlvblN0YXRzOwogCiBzdGF0
aWMgdm9pZCByZXNldENhbGxiYWNrc0V4ZWN1dGlvblN0YXRzKCkKIHsKKyAgICBjYWxsYmFja3NF
eGVjdXRpb25TdGF0cy5zZXR0aW5nQ2hhbmdlID0gZmFsc2U7CiAgICAgY2FsbGJhY2tzRXhlY3V0
aW9uU3RhdHMuc3BlbGxEb2N1bWVudFRhZyA9IGZhbHNlOwogICAgIGNhbGxiYWNrc0V4ZWN1dGlv
blN0YXRzLnNwZWxsRG9jdW1lbnRUYWdDbG9zZSA9IGZhbHNlOwogICAgIGNhbGxiYWNrc0V4ZWN1
dGlvblN0YXRzLnNwZWxsaW5nQ2hlY2sgPSBmYWxzZTsKQEAgLTEwMCwxMCArMTAyLDcgQEAgc3Rh
dGljIEVpbmFfQm9vbCBvblRpbWVvdXQodm9pZCopCiBzdGF0aWMgdm9pZCBvblNldHRpbmdDaGFu
Z2UoRWluYV9Cb29sIGZsYWcpCiB7CiAgICAgRVhQRUNUX0VRKGlzU2V0dGluZ0VuYWJsZWQsIGZs
YWcpOwotCi0gICAgZWNvcmVfdGltZXJfZGVsKHRpbWVvdXRUaW1lcik7Ci0gICAgdGltZW91dFRp
bWVyID0gMDsKLSAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOworICAgIGNhbGxiYWNrc0V4ZWN1
dGlvblN0YXRzLnNldHRpbmdDaGFuZ2UgPSB0cnVlOwogfQogCiAvKioKQEAgLTIxNyw3ICsyMTYs
MzMgQEAgc3RhdGljIHZvaWQgb25Xb3JkSWdub3JlKHVpbnQ2NF90IHRhZywgY29uc3QgY2hhciog
d29yZCkKICAgICBjYWxsYmFja3NFeGVjdXRpb25TdGF0cy53b3JkSWdub3JlID0gdHJ1ZTsKIH0K
IAotc3RhdGljIEVpbmFfQm9vbCBvbkNvbnRleHRNZW51U2hvdyhFd2tfVmlld19TbWFydF9EYXRh
KiwgRXZhc19Db29yZCwgRXZhc19Db29yZCwgRXdrX0NvbnRleHRfTWVudSogY29udGV4dE1lbnUp
CisvKioKKyAqIEhlbHBlciwgZ2V0IHJlcXVpcmVkIGl0ZW0gZnJvbSBjb250ZXh0IG1lbnUuCisg
KgorICogQHBhcmFtIGNvbnRleHRNZW51IHRoZSBjb250ZXh0IG1lbnUgb2JqZWN0CisgKiBAcGFy
YW0gaXRlbUFjdGlvbiBhY3Rpb24gb2YgaXRlbSB0byBnZXQKKyAqIEBwYXJhbSBpdGVtVHlwZSB0
eXBlIG9mIGl0ZW0gdG8gZ2V0CisgKgorICogQHJldHVybiByZXF1aXJlZCBpdGVtCisgKi8KK3N0
YXRpYyBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGZpbmRDb250ZXh0TWVudUl0ZW0oRXdrX0NvbnRl
eHRfTWVudSogY29udGV4dE1lbnUsIGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24m
IGl0ZW1BY3Rpb24sIGNvbnN0IEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlJiBpdGVtVHlwZSkK
K3sKKyAgICBjb25zdCBFaW5hX0xpc3QqIGNvbnRleHRNZW51SXRlbXMgPSBld2tfY29udGV4dF9t
ZW51X2l0ZW1zX2dldChjb250ZXh0TWVudSk7CisKKyAgICB2b2lkKiBpdGVtRGF0YTsKKyAgICBj
b25zdCBFaW5hX0xpc3QqIGxpc3RJdGVyYXRvcjsKKworICAgIEVJTkFfTElTVF9GT1JFQUNIKGNv
bnRleHRNZW51SXRlbXMsIGxpc3RJdGVyYXRvciwgaXRlbURhdGEpIHsKKyAgICAgICAgRXdrX0Nv
bnRleHRfTWVudV9JdGVtKiBpdGVtID0gc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9JdGVt
Kj4oaXRlbURhdGEpOworICAgICAgICBpZiAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlvbl9n
ZXQoaXRlbSkgPT0gaXRlbUFjdGlvbgorICAgICAgICAgICAgJiYgZXdrX2NvbnRleHRfbWVudV9p
dGVtX3R5cGVfZ2V0KGl0ZW0pID09IGl0ZW1UeXBlKQorICAgICAgICAgICAgcmV0dXJuIGl0ZW07
CisgICAgfQorICAgIEFERF9GQUlMVVJFKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBF
aW5hX0Jvb2wgY2hlY2tDb3JyZWN0bmVzc09mU3BlbGxpbmdJdGVtcyhFd2tfVmlld19TbWFydF9E
YXRhKiwgRXZhc19Db29yZCwgRXZhc19Db29yZCwgRXdrX0NvbnRleHRfTWVudSogY29udGV4dE1l
bnUpCiB7CiAgICAgY29uc3QgRWluYV9MaXN0KiBjb250ZXh0TWVudUl0ZW1zID0gZXdrX2NvbnRl
eHRfbWVudV9pdGVtc19nZXQoY29udGV4dE1lbnUpOwogCkBAIC0yNDUsNiArMjcwLDE2IEBAIHN0
YXRpYyBFaW5hX0Jvb2wgb25Db250ZXh0TWVudVNob3coRXdrX1ZpZXdfU21hcnRfRGF0YSosIEV2
YXNfQ29vcmQsIEV2YXNfQ29vcmQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBFaW5h
X0Jvb2wgdG9vZ2xlQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKEV3a19WaWV3X1NtYXJ0X0RhdGEq
LCBFdmFzX0Nvb3JkLCBFdmFzX0Nvb3JkLCBFd2tfQ29udGV4dF9NZW51KiBjb250ZXh0TWVudSkK
K3sKKyAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIHNwZWxsaW5nQW5kR3JhbW1hckl0ZW0gPSBm
aW5kQ29udGV4dE1lbnVJdGVtKGNvbnRleHRNZW51LCBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFH
X1NQRUxMSU5HX01FTlUsIEVXS19TVUJNRU5VX1RZUEUpOworICAgIEV3a19Db250ZXh0X01lbnVf
SXRlbSogY2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nSXRlbSA9IGZpbmRDb250ZXh0TWVudUl0ZW0o
ZXdrX2NvbnRleHRfbWVudV9pdGVtX3N1Ym1lbnVfZ2V0KHNwZWxsaW5nQW5kR3JhbW1hckl0ZW0p
LCBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NIRUNLX1NQRUxMSU5HX1dISUxFX1RZUElORywg
RVdLX0NIRUNLQUJMRV9BQ1RJT05fVFlQRSk7CisKKyAgICBld2tfY29udGV4dF9tZW51X2l0ZW1f
c2VsZWN0KGV3a19jb250ZXh0X21lbnVfaXRlbV9zdWJtZW51X2dldChzcGVsbGluZ0FuZEdyYW1t
YXJJdGVtKSwgY2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nSXRlbSk7CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogLyoqCiAgKiBUZXN0IHdoZXRoZXIgdGhlIGRlZmF1bHQgbGFuZ3VhZ2UgaXMgbG9h
ZGVkIGluZGVwZW5kZW50bHkgb2YKICAqIGNvbnRpbnVvdXMgc3BlbGwgY2hlY2tpbmcgc2V0dGlu
Zy4KQEAgLTI4OSw3ICszMjQsNyBAQCBURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3RleHRf
Y2hlY2tlcl9zcGVsbF9jaGVja2luZ19sYW5ndWFnZXNfZ2V0KQogVEVTVF9GKEVXSzJVbml0VGVz
dEJhc2UsIGNvbnRleHRfbWVudV9zcGVsbGluZ19pdGVtc19hdmFpbGFiaWxpdHkpCiB7CiAgICAg
ZXdrX3RleHRfY2hlY2tlcl9jb250aW51b3VzX3NwZWxsX2NoZWNraW5nX2VuYWJsZWRfc2V0KGZh
bHNlKTsKLSAgICBld2tWaWV3Q2xhc3MoKS0+Y29udGV4dF9tZW51X3Nob3cgPSBvbkNvbnRleHRN
ZW51U2hvdzsKKyAgICBld2tWaWV3Q2xhc3MoKS0+Y29udGV4dF9tZW51X3Nob3cgPSBjaGVja0Nv
cnJlY3RuZXNzT2ZTcGVsbGluZ0l0ZW1zOwogCiAgICAgQVNTRVJUX1RSVUUobG9hZFVybFN5bmMo
ZW52aXJvbm1lbnQtPnVybEZvclJlc291cmNlKCJzcGVsbGluZ190ZXN0Lmh0bWwiKS5kYXRhKCkp
KTsKICAgICBtb3VzZUNsaWNrKDEwLCAyMCwgMyAvKiBSaWdodCBidXR0b24gKi8pOwpAQCAtMzE3
LDEyICszNTIsNDQgQEAgVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a190ZXh0X2NoZWNrZXJf
Y29udGludW91c19zcGVsbF9jaGVja2luZ19lbmFibGVkKQogfQogCiAvKioKLSAqIFRlc3Qgd2hl
dGhlciB0aGUgY2FsbGJhY2sgaXMgY2FsbGVkIHdoZW4gdGhlIHNwZWxsIGNoZWNraW5nIHNldHRp
bmcgd2FzIGNoYW5nZWQgYnkgV2ViS2l0LgotICogQ2hhbmdpbmcgb2YgdGhpcyBzZXR0aW5nIGF0
IHRoZSBXZWJLaXQgbGV2ZWwgY2FuIGJlIG1hZGUgYXMgYSByZXN1bHQgb2YgbW9kaWZ5aW5nCi0g
KiBvcHRpb25zIGluIGEgQ29udGV4dCBNZW51IGJ5IGEgdXNlci4KKyAqIFRlc3Qgd2hldGhlciB0
aGUgb25TZXR0aW5nQ2hhbmdlIGNhbGxiYWNrIGlzIGNhbGxlZCB3aGVuICJDaGVjayBTcGVsbGlu
ZyBXaGlsZSBUeXBpbmciIHNldHRpbmcgd2FzIGNoYW5nZWQgaW4gY29udGV4dCBtZW51LgorICog
VHdvIGNhc2VzIGFyZSB0ZXN0ZWQ6CisgKiAgLSAiQ2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5n
IiBpcyBlbmFibGVkLAorICogIC0gIkNoZWNrIFNwZWxsaW5nIFdoaWxlIFR5cGluZyIgaXMgZGlz
YWJsZWQuCisgKi8KK1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdGV4dF9jaGVja2VyX2No
ZWNrX3NwZWxsaW5nX3doaWxlX3R5cGluZ190b2dnbGUpCit7CisgICAgcmVzZXRDYWxsYmFja3NF
eGVjdXRpb25TdGF0cygpOworCisgICAgZXdrX3RleHRfY2hlY2tlcl9jb250aW51b3VzX3NwZWxs
X2NoZWNraW5nX2NoYW5nZV9jYl9zZXQob25TZXR0aW5nQ2hhbmdlKTsKKworICAgIGlzU2V0dGlu
Z0VuYWJsZWQgPSAhZXdrX3RleHRfY2hlY2tlcl9jb250aW51b3VzX3NwZWxsX2NoZWNraW5nX2Vu
YWJsZWRfZ2V0KCk7CisKKyAgICBld2tWaWV3Q2xhc3MoKS0+Y29udGV4dF9tZW51X3Nob3cgPSB0
b29nbGVDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmc7CisKKyAgICBBU1NFUlRfVFJVRShsb2FkVXJs
U3luYyhlbnZpcm9ubWVudC0+dXJsRm9yUmVzb3VyY2UoInNwZWxsaW5nX3Rlc3QuaHRtbCIpLmRh
dGEoKSkpOworCisgICAgRVdLMlVuaXRUZXN0QmFzZTo6bW91c2VDbGljaygxMCwgMjAsIC8qUmln
aHQgYnV0dG9uKi8gMyk7CisgICAgQVNTRVJUX1RSVUUod2FpdFVudGlsVHJ1ZShjYWxsYmFja3NF
eGVjdXRpb25TdGF0cy5zZXR0aW5nQ2hhbmdlKSk7CisKKyAgICByZXNldENhbGxiYWNrc0V4ZWN1
dGlvblN0YXRzKCk7CisKKyAgICAvLyBUZXN0IGNhc2UsIHdoZW4gIkNoZWNrIFNwZWxsaW5nIFdo
aWxlIFR5cGluZyIgaXMgaW4gcmV2ZXJzZSB0byB0aGUgcHJldmlvdXMgb25lLgorICAgIGlzU2V0
dGluZ0VuYWJsZWQgPSAhaXNTZXR0aW5nRW5hYmxlZDsKKworICAgIEVXSzJVbml0VGVzdEJhc2U6
Om1vdXNlQ2xpY2soMTAsIDIwLCAvKlJpZ2h0IGJ1dHRvbiovIDMpOworICAgIEFTU0VSVF9UUlVF
KHdhaXRVbnRpbFRydWUoY2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMuc2V0dGluZ0NoYW5nZSkpOwor
CisgICAgZXdrX3RleHRfY2hlY2tlcl9jb250aW51b3VzX3NwZWxsX2NoZWNraW5nX2NoYW5nZV9j
Yl9zZXQoMCk7Cit9CisKKy8qKgorICogVGVzdCB3aGV0aGVyIHRoZSBvblNldHRpbmdDaGFuZ2Ug
Y2FsbGJhY2sgaXMgbm90IGNhbGxlZCB3aGVuIHRoZSBzcGVsbCBjaGVja2luZyBzZXR0aW5nIHdh
cyBjaGFuZ2VkIGJ5IGNsaWVudC4KICAqLwogVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a190
ZXh0X2NoZWNrZXJfY29udGludW91c19zcGVsbF9jaGVja2luZ19jaGFuZ2VfY2Jfc2V0KQogewor
ICAgIHJlc2V0Q2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMoKTsKKwogICAgIGV3a190ZXh0X2NoZWNr
ZXJfY29udGludW91c19zcGVsbF9jaGVja2luZ19jaGFuZ2VfY2Jfc2V0KG9uU2V0dGluZ0NoYW5n
ZSk7CiAKICAgICBpc1NldHRpbmdFbmFibGVkID0gZXdrX3RleHRfY2hlY2tlcl9jb250aW51b3Vz
X3NwZWxsX2NoZWNraW5nX2VuYWJsZWRfZ2V0KCk7CkBAIC0zMzEsMzEgKzM5OCwyNiBAQCBURVNU
X0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3RleHRfY2hlY2tlcl9jb250aW51b3VzX3NwZWxsX2No
ZWNraW5nX2NoYW5nZV9jYl9zZQogICAgIC8vIG9uIHRoZSBjbGllbnQncyByZXF1ZXN0IChwdWJs
aWMgQVBJKS4KICAgICBld2tfdGV4dF9jaGVja2VyX2NvbnRpbnVvdXNfc3BlbGxfY2hlY2tpbmdf
ZW5hYmxlZF9zZXQoaXNTZXR0aW5nRW5hYmxlZCk7CiAKLSAgICB0aW1lb3V0VGltZXIgPSBlY29y
ZV90aW1lcl9hZGQoZGVmYXVsdFRpbWVvdXRJblNlY29uZHMsIG9uVGltZW91dCwgMCk7CisgICAg
Ly8gVGhlIG5vdGlmaWNhdGlvbiBhYm91dCB0aGUgY2hhbmdlIG9mIHRoZSBzcGVsbCBjaGVja2lu
ZyBzZXR0aW5nIGlzIGNhbGxlZCBvbiBpZGxlci4KKyAgICBBU1NFUlRfRkFMU0Uod2FpdFVudGls
VHJ1ZShjYWxsYmFja3NFeGVjdXRpb25TdGF0cy5zZXR0aW5nQ2hhbmdlLCAvKlRpbWVvdXQqLyAw
KSk7CiAKLSAgICAvLyBTdGFydCBwcm9jY2VzaW5nIEVjb3JlIGV2ZW50cywgdGhlIG5vdGlmaWNh
dGlvbiBhYm91dCB0aGUgY2hhbmdlIG9mIHRoZSBzcGVsbAotICAgIC8vIGNoZWNraW5nIHNldHRp
bmcgaXMgY2FsbGVkIG9uIGlkbGVyLgotICAgIC8vIFdlIGNhbid0IGNhbGwgZWNvcmVfbWFpbl9s
b29wX2l0ZXJhdGUgYmVjYXVzZSBpdCBkb2Vzbid0IHByb2Nlc3MgdGhlIGlkbGVycy4KLSAgICBl
Y29yZV9tYWluX2xvb3BfYmVnaW4oKTsKKyAgICBld2tfdGV4dF9jaGVja2VyX2NvbnRpbnVvdXNf
c3BlbGxfY2hlY2tpbmdfY2hhbmdlX2NiX3NldCgwKTsKK30KKworLyoqCisgKiBUZXN0IHdoZXRo
ZXIgdGhlIG9uU2V0dGluZ0NoYW5nZSBjYWxsYmFjayBpcyBub3QgY2FsbGVkLCBpZiB0aGUgY2xp
ZW50IGRvZXMgbm90IHNldCBpdC4KKyAqICJDaGVjayBTcGVsbGluZyBXaGlsZSBUeXBpbmciIG9w
dGlvbiBpcyB0b2dnbGVkIGluIGNvbnRleHQgbWVudS4KKyAqLworVEVTVF9GKEVXSzJVbml0VGVz
dEJhc2UsIGV3a190ZXh0X2NoZWNrZXJfY29udGludW91c19zcGVsbF9jaGVja2luZ19jaGFuZ2Vf
Y2JfdW5zZXQpCit7CisgICAgcmVzZXRDYWxsYmFja3NFeGVjdXRpb25TdGF0cygpOworCisgICAg
ZXdrVmlld0NsYXNzKCktPmNvbnRleHRfbWVudV9zaG93ID0gdG9vZ2xlQ2hlY2tTcGVsbGluZ1do
aWxlVHlwaW5nOworCisgICAgQVNTRVJUX1RSVUUobG9hZFVybFN5bmMoZW52aXJvbm1lbnQtPnVy
bEZvclJlc291cmNlKCJzcGVsbGluZ190ZXN0Lmh0bWwiKS5kYXRhKCkpKTsKIAotICAgIEVYUEVD
VF9UUlVFKHRpbWVvdXRUaW1lcik7Ci0KLSAgICAvKiBUaGUgY2FsbGJhY2sgc2hvdWxkIGJlIGNh
bGxlZCBpZiB0aGUgY29udGV4dCBtZW51ICJDaGVjayBTcGVsbGluZyBXaGlsZSBUeXBpbmciIG9w
dGlvbgotICAgICAgIHdhcyB0b2dnbGVkIGJ5IHRoZSB1c2VyLgotICAgIEZJWE1FOgotICAgIDEp
IEludm9rZSB0aGUgY29udGV4dCBtZW51IG9uIHRoZSBpbnB1dCBmaWVsZC4KLSAgICAyKSBDaG9v
c2UgdGhlIHN1YiBtZW51ICJTcGVsbGluZyBhbmQgR3JhbW1hciIgb3B0aW9uIChub3QgaW1wbGVt
ZW50ZWQgZm9yIFdLMikuCi0gICAgMykgVG9nZ2xlICJDaGVjayBTcGVsbGluZyBXaGlsZSBUeXBp
bmciIG9wdGlvbi4KLSAgICA0KSBDaGVjayB3aGV0aGVyIHRoZSBjYWxsYmFjayBpcyBjYWxsZWQu
ICovCi0KLSAgICAvKiBUaGUgY2FsbGJhY2sgc2hvdWxkbid0IGJlIGNhbGxlZCBpZiB0aGUgdXNl
ciBoYXMgaW52YWxpZGF0ZWQgaXQuCi0gICAgRklYTUU6Ci0gICAgMSkgQ2FsbCBld2tfdGV4dF9j
aGVja2VyX2NvbnRpbnVvdXNfc3BlbGxfY2hlY2tpbmdfY2hhbmdlX2NiX3NldCgwKSB0byBub3Rp
ZnkgdGhlIFdlYktpdCB0aGF0Ci0gICAgICAgdGhlIGNsaWVudCBpcyBub3QgaW50ZXJlc3RlZCBp
biB0aGUgc2V0dGluZyBjaGFuZ2UuCi0gICAgMikgSW52b2tlIHRoZSBjb250ZXh0IG1lbnUgb24g
dGhlIGlucHV0IGZpZWxkLgotICAgIDMpIENob29zZSB0aGUgc3ViIG1lbnUgIlNwZWxsaW5nIGFu
ZCBHcmFtbWFyIiBvcHRpb24gKG5vdCBpbXBsZW1lbnRlZCBmb3IgV0syKS4KLSAgICA0KSBUb2dn
bGUgIkNoZWNrIFNwZWxsaW5nIFdoaWxlIFR5cGluZyIgb3B0aW9uLgotICAgIDUpIENoZWNrIHdo
ZXRoZXIgdGhlIGNhbGxiYWNrIHdhcyBjYWxsZWQuICovCisgICAgRVdLMlVuaXRUZXN0QmFzZTo6
bW91c2VDbGljaygxMCwgMjAsIC8qUmlnaHQgYnV0dG9uKi8gMyk7CisgICAgQVNTRVJUX0ZBTFNF
KHdhaXRVbnRpbFRydWUoY2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMuc2V0dGluZ0NoYW5nZSwgLypU
aW1lb3V0Ki8gMCkpOwogfQogCiAvKioK
</data>
<flag name="review"
          id="226339"
          type_id="1"
          status="+"
          setter="cdumez"
    />
    <flag name="commit-queue"
          id="226341"
          type_id="3"
          status="-"
          setter="cdumez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204976</attachid>
            <date>2013-06-19 01:50:32 -0700</date>
            <delta_ts>2013-06-19 03:19:13 -0700</delta_ts>
            <desc>apply suggestions</desc>
            <filename>unit_test_onSettingChange.patch</filename>
            <type>text/plain</type>
            <size>9977</size>
            <attacher name="Krzysztof Wolanski">k.wolanski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhZjBjNmZkLi5jMDA4YjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTMtMDYtMTkgIEtyenlzenRvZiBXb2xhbnNraSAgPGsud29sYW5za2lAc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnQgdW5pdCB0ZXN0IGNhbGxiYWNrOiBv
blNldHRpbmdDaGFuZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTc3MjgKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpc3RvcGhlIER1bWV6Lgor
CisgICAgICAgIEl0IGlzIGZpbmFsbHkgcG9zc2libGUgdG8gaW1wbGVtZW50IG1pc3NpbmcgdW5p
dCB0ZXN0cyBhcyBXZWJLaXQyLUVGTAorICAgICAgICBoYXMgZGVsaXZlcmVkIHN1YiBtZW51IChy
MTUwMjU0KS4KKyAgICAgICAgQWRkIHR3byB1bml0IHRlc3RzIGZvciBjaGVja2luZyBvblNldHRp
bmdDaGFuZ2UgY2FsbGJhY2sgYmVoYXZpb3VyLAorICAgICAgICB3aGVuIHRvZ2dsaW5nICJDaGVj
ayBTcGVsbGluZyBXaGlsZSBUeXBpbmciIGluIGNvbnRleHQgbWVudS4KKworICAgICAgICBDaGFu
Z2VkIHR5cGVzIGluc2lkZSBjYWxsYmFja3NFeGVjdXRpb25TdGF0cyBzdHJ1Y3QgZnJvbSBiaXQg
ZmllbGQgdG8gYm9vbCwKKyAgICAgICAgYmVjYXVzZSBjYXN0aW5nIGZyb20gYml0IGZpZWxkIHRv
ICZib29sIGlzIGludmFsaWQgKGluIHVzaW5nIHdhaXRVbnRpbFRydWUgbWV0aG9kKS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl90ZXh0X2NoZWNrZXIuY3Bw
OgorICAgICAgICAocmVzZXRDYWxsYmFja3NFeGVjdXRpb25TdGF0cyk6CisgICAgICAgIChvblNl
dHRpbmdDaGFuZ2UpOgorICAgICAgICAoZmluZENvbnRleHRNZW51SXRlbSk6CisgICAgICAgIEdl
dCBkZXRlcm1pbmVkIG9wdGlvbiBmcm9tIGNvbnRleHQgbWVudS4KKworICAgICAgICAoY2hlY2tD
b3JyZWN0bmVzc09mU3BlbGxpbmdJdGVtcyk6CisgICAgICAgIENoYW5nZWQgdGhlIG5hbWUgb2Yg
b25Db250ZXh0TWVudVNob3cgbWV0aG9kIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBuZXcgbWV0aG9k
cy4KKworICAgICAgICAodG9vZ2xlQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKToKKyAgICAgICAg
U2VsZWN0ICJDaGVjayBTcGVsbGluZyBXaGlsZSBUeXBpbmciIGluIGNvbnRleHQgbWVudSB0byB0
ZXN0IHdoZXRoZXIKKyAgICAgICAgb25TZXR0aW5nQ2hhbmdlIGlzIGNhbGxlZC4KKwogMjAxMy0w
Ni0xNyAgU2FudG9zaCBNYWh0byAgPHNhbnRvc2gubWFAc2Ftc3VuZy5jb20+CiAKICAgICAgICAg
RXh0cmEgd2hpdGVzcGFjZSBpbiBibGFuayBsaW5lIGluIFBsYXRmb3JtUG9wdXBNZW51RGF0YS5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rl
c3RfZXdrMl90ZXh0X2NoZWNrZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvdGVzdF9ld2syX3RleHRfY2hlY2tlci5jcHAKaW5kZXggYmFmYzBiOC4uODE0MzQw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVz
dF9ld2syX3RleHRfY2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvdGVzdHMvdGVzdF9ld2syX3RleHRfY2hlY2tlci5jcHAKQEAgLTU1LDE2ICs1NSwxOCBA
QCBzdGF0aWMgY29uc3QgY2hhciBsZWFyblNwZWxsaW5nU3RyaW5nW10gPSAiTGVhcm4gU3BlbGxp
bmciOwogICogSXRzIHZhbHVlcyBhcmUgcmVzZXQgYmVmb3JlIGVhY2ggdGVzdC4KICAqLwogc3Rh
dGljIHN0cnVjdCB7Ci0gICAgYm9vbCBzcGVsbERvY3VtZW50VGFnIDogMTsKLSAgICBib29sIHNw
ZWxsRG9jdW1lbnRUYWdDbG9zZSA6IDE7Ci0gICAgYm9vbCBzcGVsbGluZ0NoZWNrIDogMTsKLSAg
ICBib29sIHdvcmRHdWVzc2VzIDogMTsKLSAgICBib29sIHdvcmRMZWFybiA6IDE7Ci0gICAgYm9v
bCB3b3JkSWdub3JlIDogMTsKKyAgICBib29sIHNldHRpbmdDaGFuZ2U7CisgICAgYm9vbCBzcGVs
bERvY3VtZW50VGFnOworICAgIGJvb2wgc3BlbGxEb2N1bWVudFRhZ0Nsb3NlOworICAgIGJvb2wg
c3BlbGxpbmdDaGVjazsKKyAgICBib29sIHdvcmRHdWVzc2VzOworICAgIGJvb2wgd29yZExlYXJu
OworICAgIGJvb2wgd29yZElnbm9yZTsKIH0gY2FsbGJhY2tzRXhlY3V0aW9uU3RhdHM7CiAKIHN0
YXRpYyB2b2lkIHJlc2V0Q2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMoKQogeworICAgIGNhbGxiYWNr
c0V4ZWN1dGlvblN0YXRzLnNldHRpbmdDaGFuZ2UgPSBmYWxzZTsKICAgICBjYWxsYmFja3NFeGVj
dXRpb25TdGF0cy5zcGVsbERvY3VtZW50VGFnID0gZmFsc2U7CiAgICAgY2FsbGJhY2tzRXhlY3V0
aW9uU3RhdHMuc3BlbGxEb2N1bWVudFRhZ0Nsb3NlID0gZmFsc2U7CiAgICAgY2FsbGJhY2tzRXhl
Y3V0aW9uU3RhdHMuc3BlbGxpbmdDaGVjayA9IGZhbHNlOwpAQCAtMTAwLDEwICsxMDIsNyBAQCBz
dGF0aWMgRWluYV9Cb29sIG9uVGltZW91dCh2b2lkKikKIHN0YXRpYyB2b2lkIG9uU2V0dGluZ0No
YW5nZShFaW5hX0Jvb2wgZmxhZykKIHsKICAgICBFWFBFQ1RfRVEoaXNTZXR0aW5nRW5hYmxlZCwg
ZmxhZyk7Ci0KLSAgICBlY29yZV90aW1lcl9kZWwodGltZW91dFRpbWVyKTsKLSAgICB0aW1lb3V0
VGltZXIgPSAwOwotICAgIGVjb3JlX21haW5fbG9vcF9xdWl0KCk7CisgICAgY2FsbGJhY2tzRXhl
Y3V0aW9uU3RhdHMuc2V0dGluZ0NoYW5nZSA9IHRydWU7CiB9CiAKIC8qKgpAQCAtMjE3LDcgKzIx
NiwzMyBAQCBzdGF0aWMgdm9pZCBvbldvcmRJZ25vcmUodWludDY0X3QgdGFnLCBjb25zdCBjaGFy
KiB3b3JkKQogICAgIGNhbGxiYWNrc0V4ZWN1dGlvblN0YXRzLndvcmRJZ25vcmUgPSB0cnVlOwog
fQogCi1zdGF0aWMgRWluYV9Cb29sIG9uQ29udGV4dE1lbnVTaG93KEV3a19WaWV3X1NtYXJ0X0Rh
dGEqLCBFdmFzX0Nvb3JkLCBFdmFzX0Nvb3JkLCBFd2tfQ29udGV4dF9NZW51KiBjb250ZXh0TWVu
dSkKKy8qKgorICogSGVscGVyLCBnZXQgcmVxdWlyZWQgaXRlbSBmcm9tIGNvbnRleHQgbWVudS4K
KyAqCisgKiBAcGFyYW0gY29udGV4dE1lbnUgdGhlIGNvbnRleHQgbWVudSBvYmplY3QKKyAqIEBw
YXJhbSBpdGVtQWN0aW9uIGFjdGlvbiBvZiBpdGVtIHRvIGdldAorICogQHBhcmFtIGl0ZW1UeXBl
IHR5cGUgb2YgaXRlbSB0byBnZXQKKyAqCisgKiBAcmV0dXJuIHJlcXVpcmVkIGl0ZW0KKyAqLwor
c3RhdGljIEV3a19Db250ZXh0X01lbnVfSXRlbSogZmluZENvbnRleHRNZW51SXRlbShjb25zdCBF
d2tfQ29udGV4dF9NZW51KiBjb250ZXh0TWVudSwgY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVt
X0FjdGlvbiYgaXRlbUFjdGlvbiwgY29uc3QgRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUmIGl0
ZW1UeXBlKQoreworICAgIGNvbnN0IEVpbmFfTGlzdCogY29udGV4dE1lbnVJdGVtcyA9IGV3a19j
b250ZXh0X21lbnVfaXRlbXNfZ2V0KGNvbnRleHRNZW51KTsKKworICAgIHZvaWQqIGl0ZW1EYXRh
OworICAgIGNvbnN0IEVpbmFfTGlzdCogbGlzdEl0ZXJhdG9yOworICAgIEVJTkFfTElTVF9GT1JF
QUNIKGNvbnRleHRNZW51SXRlbXMsIGxpc3RJdGVyYXRvciwgaXRlbURhdGEpIHsKKyAgICAgICAg
RXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtID0gc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVu
dV9JdGVtKj4oaXRlbURhdGEpOworICAgICAgICBpZiAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2Fj
dGlvbl9nZXQoaXRlbSkgPT0gaXRlbUFjdGlvbgorICAgICAgICAgICAgJiYgZXdrX2NvbnRleHRf
bWVudV9pdGVtX3R5cGVfZ2V0KGl0ZW0pID09IGl0ZW1UeXBlKQorICAgICAgICAgICAgcmV0dXJu
IGl0ZW07CisgICAgfQorICAgIEFERF9GQUlMVVJFKCk7CisKKyAgICByZXR1cm4gMDsKK30KKwor
c3RhdGljIEVpbmFfQm9vbCBjaGVja0NvcnJlY3RuZXNzT2ZTcGVsbGluZ0l0ZW1zKEV3a19WaWV3
X1NtYXJ0X0RhdGEqLCBFdmFzX0Nvb3JkLCBFdmFzX0Nvb3JkLCBFd2tfQ29udGV4dF9NZW51KiBj
b250ZXh0TWVudSkKIHsKICAgICBjb25zdCBFaW5hX0xpc3QqIGNvbnRleHRNZW51SXRlbXMgPSBl
d2tfY29udGV4dF9tZW51X2l0ZW1zX2dldChjb250ZXh0TWVudSk7CiAKQEAgLTI0NSw2ICsyNzAs
MTUgQEAgc3RhdGljIEVpbmFfQm9vbCBvbkNvbnRleHRNZW51U2hvdyhFd2tfVmlld19TbWFydF9E
YXRhKiwgRXZhc19Db29yZCwgRXZhc19Db29yZCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3Rh
dGljIEVpbmFfQm9vbCB0b29nbGVDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmcoRXdrX1ZpZXdfU21h
cnRfRGF0YSosIEV2YXNfQ29vcmQsIEV2YXNfQ29vcmQsIEV3a19Db250ZXh0X01lbnUqIGNvbnRl
eHRNZW51KQoreworICAgIEV3a19Db250ZXh0X01lbnVfSXRlbSogc3BlbGxpbmdBbmRHcmFtbWFy
SXRlbSA9IGZpbmRDb250ZXh0TWVudUl0ZW0oY29udGV4dE1lbnUsIEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfU1BFTExJTkdfTUVOVSwgRVdLX1NVQk1FTlVfVFlQRSk7CisgICAgRXdrX0NvbnRl
eHRfTWVudSogc3BlbGxpbmdBbmRHcmFtbWFyU3VibWVudSA9IGV3a19jb250ZXh0X21lbnVfaXRl
bV9zdWJtZW51X2dldChzcGVsbGluZ0FuZEdyYW1tYXJJdGVtKTsKKyAgICBFd2tfQ29udGV4dF9N
ZW51X0l0ZW0qIGNoZWNrU3BlbGxpbmdXaGlsZVR5cGluZ0l0ZW0gPSBmaW5kQ29udGV4dE1lbnVJ
dGVtKHNwZWxsaW5nQW5kR3JhbW1hclN1Ym1lbnUsIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdf
Q0hFQ0tfU1BFTExJTkdfV0hJTEVfVFlQSU5HLCBFV0tfQ0hFQ0tBQkxFX0FDVElPTl9UWVBFKTsK
KworICAgIHJldHVybiBld2tfY29udGV4dF9tZW51X2l0ZW1fc2VsZWN0KHNwZWxsaW5nQW5kR3Jh
bW1hclN1Ym1lbnUsIGNoZWNrU3BlbGxpbmdXaGlsZVR5cGluZ0l0ZW0pOworfQorCiAvKioKICAq
IFRlc3Qgd2hldGhlciB0aGUgZGVmYXVsdCBsYW5ndWFnZSBpcyBsb2FkZWQgaW5kZXBlbmRlbnRs
eSBvZgogICogY29udGludW91cyBzcGVsbCBjaGVja2luZyBzZXR0aW5nLgpAQCAtMjg5LDcgKzMy
Myw3IEBAIFRFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdGV4dF9jaGVja2VyX3NwZWxsX2No
ZWNraW5nX2xhbmd1YWdlc19nZXQpCiBURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgY29udGV4dF9t
ZW51X3NwZWxsaW5nX2l0ZW1zX2F2YWlsYWJpbGl0eSkKIHsKICAgICBld2tfdGV4dF9jaGVja2Vy
X2NvbnRpbnVvdXNfc3BlbGxfY2hlY2tpbmdfZW5hYmxlZF9zZXQoZmFsc2UpOwotICAgIGV3a1Zp
ZXdDbGFzcygpLT5jb250ZXh0X21lbnVfc2hvdyA9IG9uQ29udGV4dE1lbnVTaG93OworICAgIGV3
a1ZpZXdDbGFzcygpLT5jb250ZXh0X21lbnVfc2hvdyA9IGNoZWNrQ29ycmVjdG5lc3NPZlNwZWxs
aW5nSXRlbXM7CiAKICAgICBBU1NFUlRfVFJVRShsb2FkVXJsU3luYyhlbnZpcm9ubWVudC0+dXJs
Rm9yUmVzb3VyY2UoInNwZWxsaW5nX3Rlc3QuaHRtbCIpLmRhdGEoKSkpOwogICAgIG1vdXNlQ2xp
Y2soMTAsIDIwLCAzIC8qIFJpZ2h0IGJ1dHRvbiAqLyk7CkBAIC0zMTcsMTIgKzM1MSw0MiBAQCBU
RVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3RleHRfY2hlY2tlcl9jb250aW51b3VzX3NwZWxs
X2NoZWNraW5nX2VuYWJsZWQpCiB9CiAKIC8qKgotICogVGVzdCB3aGV0aGVyIHRoZSBjYWxsYmFj
ayBpcyBjYWxsZWQgd2hlbiB0aGUgc3BlbGwgY2hlY2tpbmcgc2V0dGluZyB3YXMgY2hhbmdlZCBi
eSBXZWJLaXQuCi0gKiBDaGFuZ2luZyBvZiB0aGlzIHNldHRpbmcgYXQgdGhlIFdlYktpdCBsZXZl
bCBjYW4gYmUgbWFkZSBhcyBhIHJlc3VsdCBvZiBtb2RpZnlpbmcKLSAqIG9wdGlvbnMgaW4gYSBD
b250ZXh0IE1lbnUgYnkgYSB1c2VyLgorICogVGVzdCB3aGV0aGVyIHRoZSBvblNldHRpbmdDaGFu
Z2UgY2FsbGJhY2sgaXMgY2FsbGVkIHdoZW4gIkNoZWNrIFNwZWxsaW5nIFdoaWxlIFR5cGluZyIg
c2V0dGluZyB3YXMgY2hhbmdlZCBpbiBjb250ZXh0IG1lbnUuCisgKiBUd28gY2FzZXMgYXJlIHRl
c3RlZDoKKyAqICAtICJDaGVjayBTcGVsbGluZyBXaGlsZSBUeXBpbmciIGlzIGVuYWJsZWQsCisg
KiAgLSAiQ2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nIiBpcyBkaXNhYmxlZC4KKyAqLworVEVT
VF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a190ZXh0X2NoZWNrZXJfY2hlY2tfc3BlbGxpbmdfd2hp
bGVfdHlwaW5nX3RvZ2dsZSkKK3sKKyAgICByZXNldENhbGxiYWNrc0V4ZWN1dGlvblN0YXRzKCk7
CisgICAgZXdrVmlld0NsYXNzKCktPmNvbnRleHRfbWVudV9zaG93ID0gdG9vZ2xlQ2hlY2tTcGVs
bGluZ1doaWxlVHlwaW5nOworCisgICAgZXdrX3RleHRfY2hlY2tlcl9jb250aW51b3VzX3NwZWxs
X2NoZWNraW5nX2NoYW5nZV9jYl9zZXQob25TZXR0aW5nQ2hhbmdlKTsKKyAgICBpc1NldHRpbmdF
bmFibGVkID0gIWV3a190ZXh0X2NoZWNrZXJfY29udGludW91c19zcGVsbF9jaGVja2luZ19lbmFi
bGVkX2dldCgpOworCisgICAgQVNTRVJUX1RSVUUobG9hZFVybFN5bmMoZW52aXJvbm1lbnQtPnVy
bEZvclJlc291cmNlKCJzcGVsbGluZ190ZXN0Lmh0bWwiKS5kYXRhKCkpKTsKKworICAgIEVXSzJV
bml0VGVzdEJhc2U6Om1vdXNlQ2xpY2soMTAsIDIwLCAvKlJpZ2h0IGJ1dHRvbiovIDMpOworICAg
IEFTU0VSVF9UUlVFKHdhaXRVbnRpbFRydWUoY2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMuc2V0dGlu
Z0NoYW5nZSkpOworCisgICAgcmVzZXRDYWxsYmFja3NFeGVjdXRpb25TdGF0cygpOworCisgICAg
Ly8gVGVzdCBjYXNlLCB3aGVuICJDaGVjayBTcGVsbGluZyBXaGlsZSBUeXBpbmciIGlzIGluIHJl
dmVyc2UgdG8gdGhlIHByZXZpb3VzIG9uZS4KKyAgICBpc1NldHRpbmdFbmFibGVkID0gIWlzU2V0
dGluZ0VuYWJsZWQ7CisKKyAgICBFV0syVW5pdFRlc3RCYXNlOjptb3VzZUNsaWNrKDEwLCAyMCwg
LypSaWdodCBidXR0b24qLyAzKTsKKyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxUcnVlKGNhbGxi
YWNrc0V4ZWN1dGlvblN0YXRzLnNldHRpbmdDaGFuZ2UpKTsKKworICAgIGV3a190ZXh0X2NoZWNr
ZXJfY29udGludW91c19zcGVsbF9jaGVja2luZ19jaGFuZ2VfY2Jfc2V0KDApOworfQorCisvKioK
KyAqIFRlc3Qgd2hldGhlciB0aGUgb25TZXR0aW5nQ2hhbmdlIGNhbGxiYWNrIGlzIG5vdCBjYWxs
ZWQgd2hlbiB0aGUgc3BlbGwgY2hlY2tpbmcgc2V0dGluZyB3YXMgY2hhbmdlZCBieSBjbGllbnQu
CiAgKi8KIFRFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdGV4dF9jaGVja2VyX2NvbnRpbnVv
dXNfc3BlbGxfY2hlY2tpbmdfY2hhbmdlX2NiX3NldCkKIHsKKyAgICByZXNldENhbGxiYWNrc0V4
ZWN1dGlvblN0YXRzKCk7CisKICAgICBld2tfdGV4dF9jaGVja2VyX2NvbnRpbnVvdXNfc3BlbGxf
Y2hlY2tpbmdfY2hhbmdlX2NiX3NldChvblNldHRpbmdDaGFuZ2UpOwogCiAgICAgaXNTZXR0aW5n
RW5hYmxlZCA9IGV3a190ZXh0X2NoZWNrZXJfY29udGludW91c19zcGVsbF9jaGVja2luZ19lbmFi
bGVkX2dldCgpOwpAQCAtMzMxLDMxICszOTUsMjUgQEAgVEVTVF9GKEVXSzJVbml0VGVzdEJhc2Us
IGV3a190ZXh0X2NoZWNrZXJfY29udGludW91c19zcGVsbF9jaGVja2luZ19jaGFuZ2VfY2Jfc2UK
ICAgICAvLyBvbiB0aGUgY2xpZW50J3MgcmVxdWVzdCAocHVibGljIEFQSSkuCiAgICAgZXdrX3Rl
eHRfY2hlY2tlcl9jb250aW51b3VzX3NwZWxsX2NoZWNraW5nX2VuYWJsZWRfc2V0KGlzU2V0dGlu
Z0VuYWJsZWQpOwogCi0gICAgdGltZW91dFRpbWVyID0gZWNvcmVfdGltZXJfYWRkKGRlZmF1bHRU
aW1lb3V0SW5TZWNvbmRzLCBvblRpbWVvdXQsIDApOworICAgIC8vIFRoZSBub3RpZmljYXRpb24g
YWJvdXQgdGhlIGNoYW5nZSBvZiB0aGUgc3BlbGwgY2hlY2tpbmcgc2V0dGluZyBpcyBjYWxsZWQg
b24gaWRsZXIuCisgICAgQVNTRVJUX0ZBTFNFKHdhaXRVbnRpbFRydWUoY2FsbGJhY2tzRXhlY3V0
aW9uU3RhdHMuc2V0dGluZ0NoYW5nZSwgLypUaW1lb3V0Ki8gMCkpOwogCi0gICAgLy8gU3RhcnQg
cHJvY2Nlc2luZyBFY29yZSBldmVudHMsIHRoZSBub3RpZmljYXRpb24gYWJvdXQgdGhlIGNoYW5n
ZSBvZiB0aGUgc3BlbGwKLSAgICAvLyBjaGVja2luZyBzZXR0aW5nIGlzIGNhbGxlZCBvbiBpZGxl
ci4KLSAgICAvLyBXZSBjYW4ndCBjYWxsIGVjb3JlX21haW5fbG9vcF9pdGVyYXRlIGJlY2F1c2Ug
aXQgZG9lc24ndCBwcm9jZXNzIHRoZSBpZGxlcnMuCi0gICAgZWNvcmVfbWFpbl9sb29wX2JlZ2lu
KCk7CisgICAgZXdrX3RleHRfY2hlY2tlcl9jb250aW51b3VzX3NwZWxsX2NoZWNraW5nX2NoYW5n
ZV9jYl9zZXQoMCk7Cit9CisKKy8qKgorICogVGVzdCB3aGV0aGVyIHRoZSBvblNldHRpbmdDaGFu
Z2UgY2FsbGJhY2sgaXMgbm90IGNhbGxlZCwgaWYgdGhlIGNsaWVudCBkb2VzIG5vdCBzZXQgaXQu
CisgKiAiQ2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nIiBvcHRpb24gaXMgdG9nZ2xlZCBpbiBj
b250ZXh0IG1lbnUuCisgKi8KK1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdGV4dF9jaGVj
a2VyX2NvbnRpbnVvdXNfc3BlbGxfY2hlY2tpbmdfY2hhbmdlX2NiX3Vuc2V0KQoreworICAgIHJl
c2V0Q2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMoKTsKKyAgICBld2tWaWV3Q2xhc3MoKS0+Y29udGV4
dF9tZW51X3Nob3cgPSB0b29nbGVDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmc7CisKKyAgICBBU1NF
UlRfVFJVRShsb2FkVXJsU3luYyhlbnZpcm9ubWVudC0+dXJsRm9yUmVzb3VyY2UoInNwZWxsaW5n
X3Rlc3QuaHRtbCIpLmRhdGEoKSkpOwogCi0gICAgRVhQRUNUX1RSVUUodGltZW91dFRpbWVyKTsK
LQotICAgIC8qIFRoZSBjYWxsYmFjayBzaG91bGQgYmUgY2FsbGVkIGlmIHRoZSBjb250ZXh0IG1l
bnUgIkNoZWNrIFNwZWxsaW5nIFdoaWxlIFR5cGluZyIgb3B0aW9uCi0gICAgICAgd2FzIHRvZ2ds
ZWQgYnkgdGhlIHVzZXIuCi0gICAgRklYTUU6Ci0gICAgMSkgSW52b2tlIHRoZSBjb250ZXh0IG1l
bnUgb24gdGhlIGlucHV0IGZpZWxkLgotICAgIDIpIENob29zZSB0aGUgc3ViIG1lbnUgIlNwZWxs
aW5nIGFuZCBHcmFtbWFyIiBvcHRpb24gKG5vdCBpbXBsZW1lbnRlZCBmb3IgV0syKS4KLSAgICAz
KSBUb2dnbGUgIkNoZWNrIFNwZWxsaW5nIFdoaWxlIFR5cGluZyIgb3B0aW9uLgotICAgIDQpIENo
ZWNrIHdoZXRoZXIgdGhlIGNhbGxiYWNrIGlzIGNhbGxlZC4gKi8KLQotICAgIC8qIFRoZSBjYWxs
YmFjayBzaG91bGRuJ3QgYmUgY2FsbGVkIGlmIHRoZSB1c2VyIGhhcyBpbnZhbGlkYXRlZCBpdC4K
LSAgICBGSVhNRToKLSAgICAxKSBDYWxsIGV3a190ZXh0X2NoZWNrZXJfY29udGludW91c19zcGVs
bF9jaGVja2luZ19jaGFuZ2VfY2Jfc2V0KDApIHRvIG5vdGlmeSB0aGUgV2ViS2l0IHRoYXQKLSAg
ICAgICB0aGUgY2xpZW50IGlzIG5vdCBpbnRlcmVzdGVkIGluIHRoZSBzZXR0aW5nIGNoYW5nZS4K
LSAgICAyKSBJbnZva2UgdGhlIGNvbnRleHQgbWVudSBvbiB0aGUgaW5wdXQgZmllbGQuCi0gICAg
MykgQ2hvb3NlIHRoZSBzdWIgbWVudSAiU3BlbGxpbmcgYW5kIEdyYW1tYXIiIG9wdGlvbiAobm90
IGltcGxlbWVudGVkIGZvciBXSzIpLgotICAgIDQpIFRvZ2dsZSAiQ2hlY2sgU3BlbGxpbmcgV2hp
bGUgVHlwaW5nIiBvcHRpb24uCi0gICAgNSkgQ2hlY2sgd2hldGhlciB0aGUgY2FsbGJhY2sgd2Fz
IGNhbGxlZC4gKi8KKyAgICBFV0syVW5pdFRlc3RCYXNlOjptb3VzZUNsaWNrKDEwLCAyMCwgLypS
aWdodCBidXR0b24qLyAzKTsKKyAgICBBU1NFUlRfRkFMU0Uod2FpdFVudGlsVHJ1ZShjYWxsYmFj
a3NFeGVjdXRpb25TdGF0cy5zZXR0aW5nQ2hhbmdlLCAvKlRpbWVvdXQqLyAwKSk7CiB9CiAKIC8q
Kgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204983</attachid>
            <date>2013-06-19 03:19:13 -0700</date>
            <delta_ts>2013-06-19 03:54:07 -0700</delta_ts>
            <desc>apply suggestions</desc>
            <filename>unit_test_onSettingChange.patch</filename>
            <type>text/plain</type>
            <size>9963</size>
            <attacher name="Krzysztof Wolanski">k.wolanski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhZjBjNmZkLi5jMDA4YjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTMtMDYtMTkgIEtyenlzenRvZiBXb2xhbnNraSAgPGsud29sYW5za2lAc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnQgdW5pdCB0ZXN0IGNhbGxiYWNrOiBv
blNldHRpbmdDaGFuZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTc3MjgKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpc3RvcGhlIER1bWV6Lgor
CisgICAgICAgIEl0IGlzIGZpbmFsbHkgcG9zc2libGUgdG8gaW1wbGVtZW50IG1pc3NpbmcgdW5p
dCB0ZXN0cyBhcyBXZWJLaXQyLUVGTAorICAgICAgICBoYXMgZGVsaXZlcmVkIHN1YiBtZW51IChy
MTUwMjU0KS4KKyAgICAgICAgQWRkIHR3byB1bml0IHRlc3RzIGZvciBjaGVja2luZyBvblNldHRp
bmdDaGFuZ2UgY2FsbGJhY2sgYmVoYXZpb3VyLAorICAgICAgICB3aGVuIHRvZ2dsaW5nICJDaGVj
ayBTcGVsbGluZyBXaGlsZSBUeXBpbmciIGluIGNvbnRleHQgbWVudS4KKworICAgICAgICBDaGFu
Z2VkIHR5cGVzIGluc2lkZSBjYWxsYmFja3NFeGVjdXRpb25TdGF0cyBzdHJ1Y3QgZnJvbSBiaXQg
ZmllbGQgdG8gYm9vbCwKKyAgICAgICAgYmVjYXVzZSBjYXN0aW5nIGZyb20gYml0IGZpZWxkIHRv
ICZib29sIGlzIGludmFsaWQgKGluIHVzaW5nIHdhaXRVbnRpbFRydWUgbWV0aG9kKS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl90ZXh0X2NoZWNrZXIuY3Bw
OgorICAgICAgICAocmVzZXRDYWxsYmFja3NFeGVjdXRpb25TdGF0cyk6CisgICAgICAgIChvblNl
dHRpbmdDaGFuZ2UpOgorICAgICAgICAoZmluZENvbnRleHRNZW51SXRlbSk6CisgICAgICAgIEdl
dCBkZXRlcm1pbmVkIG9wdGlvbiBmcm9tIGNvbnRleHQgbWVudS4KKworICAgICAgICAoY2hlY2tD
b3JyZWN0bmVzc09mU3BlbGxpbmdJdGVtcyk6CisgICAgICAgIENoYW5nZWQgdGhlIG5hbWUgb2Yg
b25Db250ZXh0TWVudVNob3cgbWV0aG9kIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBuZXcgbWV0aG9k
cy4KKworICAgICAgICAodG9vZ2xlQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKToKKyAgICAgICAg
U2VsZWN0ICJDaGVjayBTcGVsbGluZyBXaGlsZSBUeXBpbmciIGluIGNvbnRleHQgbWVudSB0byB0
ZXN0IHdoZXRoZXIKKyAgICAgICAgb25TZXR0aW5nQ2hhbmdlIGlzIGNhbGxlZC4KKwogMjAxMy0w
Ni0xNyAgU2FudG9zaCBNYWh0byAgPHNhbnRvc2gubWFAc2Ftc3VuZy5jb20+CiAKICAgICAgICAg
RXh0cmEgd2hpdGVzcGFjZSBpbiBibGFuayBsaW5lIGluIFBsYXRmb3JtUG9wdXBNZW51RGF0YS5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rl
c3RfZXdrMl90ZXh0X2NoZWNrZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvdGVzdF9ld2syX3RleHRfY2hlY2tlci5jcHAKaW5kZXggYmFmYzBiOC4uNmI0MzFm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVz
dF9ld2syX3RleHRfY2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvdGVzdHMvdGVzdF9ld2syX3RleHRfY2hlY2tlci5jcHAKQEAgLTU1LDE2ICs1NSwxOCBA
QCBzdGF0aWMgY29uc3QgY2hhciBsZWFyblNwZWxsaW5nU3RyaW5nW10gPSAiTGVhcm4gU3BlbGxp
bmciOwogICogSXRzIHZhbHVlcyBhcmUgcmVzZXQgYmVmb3JlIGVhY2ggdGVzdC4KICAqLwogc3Rh
dGljIHN0cnVjdCB7Ci0gICAgYm9vbCBzcGVsbERvY3VtZW50VGFnIDogMTsKLSAgICBib29sIHNw
ZWxsRG9jdW1lbnRUYWdDbG9zZSA6IDE7Ci0gICAgYm9vbCBzcGVsbGluZ0NoZWNrIDogMTsKLSAg
ICBib29sIHdvcmRHdWVzc2VzIDogMTsKLSAgICBib29sIHdvcmRMZWFybiA6IDE7Ci0gICAgYm9v
bCB3b3JkSWdub3JlIDogMTsKKyAgICBib29sIHNldHRpbmdDaGFuZ2U7CisgICAgYm9vbCBzcGVs
bERvY3VtZW50VGFnOworICAgIGJvb2wgc3BlbGxEb2N1bWVudFRhZ0Nsb3NlOworICAgIGJvb2wg
c3BlbGxpbmdDaGVjazsKKyAgICBib29sIHdvcmRHdWVzc2VzOworICAgIGJvb2wgd29yZExlYXJu
OworICAgIGJvb2wgd29yZElnbm9yZTsKIH0gY2FsbGJhY2tzRXhlY3V0aW9uU3RhdHM7CiAKIHN0
YXRpYyB2b2lkIHJlc2V0Q2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMoKQogeworICAgIGNhbGxiYWNr
c0V4ZWN1dGlvblN0YXRzLnNldHRpbmdDaGFuZ2UgPSBmYWxzZTsKICAgICBjYWxsYmFja3NFeGVj
dXRpb25TdGF0cy5zcGVsbERvY3VtZW50VGFnID0gZmFsc2U7CiAgICAgY2FsbGJhY2tzRXhlY3V0
aW9uU3RhdHMuc3BlbGxEb2N1bWVudFRhZ0Nsb3NlID0gZmFsc2U7CiAgICAgY2FsbGJhY2tzRXhl
Y3V0aW9uU3RhdHMuc3BlbGxpbmdDaGVjayA9IGZhbHNlOwpAQCAtMTAwLDEwICsxMDIsNyBAQCBz
dGF0aWMgRWluYV9Cb29sIG9uVGltZW91dCh2b2lkKikKIHN0YXRpYyB2b2lkIG9uU2V0dGluZ0No
YW5nZShFaW5hX0Jvb2wgZmxhZykKIHsKICAgICBFWFBFQ1RfRVEoaXNTZXR0aW5nRW5hYmxlZCwg
ZmxhZyk7Ci0KLSAgICBlY29yZV90aW1lcl9kZWwodGltZW91dFRpbWVyKTsKLSAgICB0aW1lb3V0
VGltZXIgPSAwOwotICAgIGVjb3JlX21haW5fbG9vcF9xdWl0KCk7CisgICAgY2FsbGJhY2tzRXhl
Y3V0aW9uU3RhdHMuc2V0dGluZ0NoYW5nZSA9IHRydWU7CiB9CiAKIC8qKgpAQCAtMjE3LDcgKzIx
NiwzMyBAQCBzdGF0aWMgdm9pZCBvbldvcmRJZ25vcmUodWludDY0X3QgdGFnLCBjb25zdCBjaGFy
KiB3b3JkKQogICAgIGNhbGxiYWNrc0V4ZWN1dGlvblN0YXRzLndvcmRJZ25vcmUgPSB0cnVlOwog
fQogCi1zdGF0aWMgRWluYV9Cb29sIG9uQ29udGV4dE1lbnVTaG93KEV3a19WaWV3X1NtYXJ0X0Rh
dGEqLCBFdmFzX0Nvb3JkLCBFdmFzX0Nvb3JkLCBFd2tfQ29udGV4dF9NZW51KiBjb250ZXh0TWVu
dSkKKy8qKgorICogSGVscGVyLCBnZXQgcmVxdWlyZWQgaXRlbSBmcm9tIGNvbnRleHQgbWVudS4K
KyAqCisgKiBAcGFyYW0gY29udGV4dE1lbnUgdGhlIGNvbnRleHQgbWVudSBvYmplY3QKKyAqIEBw
YXJhbSBpdGVtQWN0aW9uIGFjdGlvbiBvZiBpdGVtIHRvIGdldAorICogQHBhcmFtIGl0ZW1UeXBl
IHR5cGUgb2YgaXRlbSB0byBnZXQKKyAqCisgKiBAcmV0dXJuIHJlcXVpcmVkIGl0ZW0KKyAqLwor
c3RhdGljIEV3a19Db250ZXh0X01lbnVfSXRlbSogZmluZENvbnRleHRNZW51SXRlbShjb25zdCBF
d2tfQ29udGV4dF9NZW51KiBjb250ZXh0TWVudSwgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlv
biBpdGVtQWN0aW9uLCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSBpdGVtVHlwZSkKK3sKKyAg
ICBjb25zdCBFaW5hX0xpc3QqIGNvbnRleHRNZW51SXRlbXMgPSBld2tfY29udGV4dF9tZW51X2l0
ZW1zX2dldChjb250ZXh0TWVudSk7CisKKyAgICB2b2lkKiBpdGVtRGF0YTsKKyAgICBjb25zdCBF
aW5hX0xpc3QqIGxpc3RJdGVyYXRvcjsKKyAgICBFSU5BX0xJU1RfRk9SRUFDSChjb250ZXh0TWVu
dUl0ZW1zLCBsaXN0SXRlcmF0b3IsIGl0ZW1EYXRhKSB7CisgICAgICAgIEV3a19Db250ZXh0X01l
bnVfSXRlbSogaXRlbSA9IHN0YXRpY19jYXN0PEV3a19Db250ZXh0X01lbnVfSXRlbSo+KGl0ZW1E
YXRhKTsKKyAgICAgICAgaWYgKGV3a19jb250ZXh0X21lbnVfaXRlbV9hY3Rpb25fZ2V0KGl0ZW0p
ID09IGl0ZW1BY3Rpb24KKyAgICAgICAgICAgICYmIGV3a19jb250ZXh0X21lbnVfaXRlbV90eXBl
X2dldChpdGVtKSA9PSBpdGVtVHlwZSkKKyAgICAgICAgICAgIHJldHVybiBpdGVtOworICAgIH0K
KworICAgIEFERF9GQUlMVVJFKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBFaW5hX0Jv
b2wgY2hlY2tDb3JyZWN0bmVzc09mU3BlbGxpbmdJdGVtcyhFd2tfVmlld19TbWFydF9EYXRhKiwg
RXZhc19Db29yZCwgRXZhc19Db29yZCwgRXdrX0NvbnRleHRfTWVudSogY29udGV4dE1lbnUpCiB7
CiAgICAgY29uc3QgRWluYV9MaXN0KiBjb250ZXh0TWVudUl0ZW1zID0gZXdrX2NvbnRleHRfbWVu
dV9pdGVtc19nZXQoY29udGV4dE1lbnUpOwogCkBAIC0yNDUsNiArMjcwLDE1IEBAIHN0YXRpYyBF
aW5hX0Jvb2wgb25Db250ZXh0TWVudVNob3coRXdrX1ZpZXdfU21hcnRfRGF0YSosIEV2YXNfQ29v
cmQsIEV2YXNfQ29vcmQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBFaW5hX0Jvb2wg
dG9vZ2xlQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKEV3a19WaWV3X1NtYXJ0X0RhdGEqLCBFdmFz
X0Nvb3JkLCBFdmFzX0Nvb3JkLCBFd2tfQ29udGV4dF9NZW51KiBjb250ZXh0TWVudSkKK3sKKyAg
ICBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIHNwZWxsaW5nQW5kR3JhbW1hckl0ZW0gPSBmaW5kQ29u
dGV4dE1lbnVJdGVtKGNvbnRleHRNZW51LCBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX1NQRUxM
SU5HX01FTlUsIEVXS19TVUJNRU5VX1RZUEUpOworICAgIEV3a19Db250ZXh0X01lbnUqIHNwZWxs
aW5nQW5kR3JhbW1hclN1Ym1lbnUgPSBld2tfY29udGV4dF9tZW51X2l0ZW1fc3VibWVudV9nZXQo
c3BlbGxpbmdBbmRHcmFtbWFySXRlbSk7CisgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBjaGVj
a1NwZWxsaW5nV2hpbGVUeXBpbmdJdGVtID0gZmluZENvbnRleHRNZW51SXRlbShzcGVsbGluZ0Fu
ZEdyYW1tYXJTdWJtZW51LCBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NIRUNLX1NQRUxMSU5H
X1dISUxFX1RZUElORywgRVdLX0NIRUNLQUJMRV9BQ1RJT05fVFlQRSk7CisKKyAgICByZXR1cm4g
ZXdrX2NvbnRleHRfbWVudV9pdGVtX3NlbGVjdChzcGVsbGluZ0FuZEdyYW1tYXJTdWJtZW51LCBj
aGVja1NwZWxsaW5nV2hpbGVUeXBpbmdJdGVtKTsKK30KKwogLyoqCiAgKiBUZXN0IHdoZXRoZXIg
dGhlIGRlZmF1bHQgbGFuZ3VhZ2UgaXMgbG9hZGVkIGluZGVwZW5kZW50bHkgb2YKICAqIGNvbnRp
bnVvdXMgc3BlbGwgY2hlY2tpbmcgc2V0dGluZy4KQEAgLTI4OSw3ICszMjMsNyBAQCBURVNUX0Yo
RVdLMlVuaXRUZXN0QmFzZSwgZXdrX3RleHRfY2hlY2tlcl9zcGVsbF9jaGVja2luZ19sYW5ndWFn
ZXNfZ2V0KQogVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGNvbnRleHRfbWVudV9zcGVsbGluZ19p
dGVtc19hdmFpbGFiaWxpdHkpCiB7CiAgICAgZXdrX3RleHRfY2hlY2tlcl9jb250aW51b3VzX3Nw
ZWxsX2NoZWNraW5nX2VuYWJsZWRfc2V0KGZhbHNlKTsKLSAgICBld2tWaWV3Q2xhc3MoKS0+Y29u
dGV4dF9tZW51X3Nob3cgPSBvbkNvbnRleHRNZW51U2hvdzsKKyAgICBld2tWaWV3Q2xhc3MoKS0+
Y29udGV4dF9tZW51X3Nob3cgPSBjaGVja0NvcnJlY3RuZXNzT2ZTcGVsbGluZ0l0ZW1zOwogCiAg
ICAgQVNTRVJUX1RSVUUobG9hZFVybFN5bmMoZW52aXJvbm1lbnQtPnVybEZvclJlc291cmNlKCJz
cGVsbGluZ190ZXN0Lmh0bWwiKS5kYXRhKCkpKTsKICAgICBtb3VzZUNsaWNrKDEwLCAyMCwgMyAv
KiBSaWdodCBidXR0b24gKi8pOwpAQCAtMzE3LDEyICszNTEsNDIgQEAgVEVTVF9GKEVXSzJVbml0
VGVzdEJhc2UsIGV3a190ZXh0X2NoZWNrZXJfY29udGludW91c19zcGVsbF9jaGVja2luZ19lbmFi
bGVkKQogfQogCiAvKioKLSAqIFRlc3Qgd2hldGhlciB0aGUgY2FsbGJhY2sgaXMgY2FsbGVkIHdo
ZW4gdGhlIHNwZWxsIGNoZWNraW5nIHNldHRpbmcgd2FzIGNoYW5nZWQgYnkgV2ViS2l0LgotICog
Q2hhbmdpbmcgb2YgdGhpcyBzZXR0aW5nIGF0IHRoZSBXZWJLaXQgbGV2ZWwgY2FuIGJlIG1hZGUg
YXMgYSByZXN1bHQgb2YgbW9kaWZ5aW5nCi0gKiBvcHRpb25zIGluIGEgQ29udGV4dCBNZW51IGJ5
IGEgdXNlci4KKyAqIFRlc3Qgd2hldGhlciB0aGUgb25TZXR0aW5nQ2hhbmdlIGNhbGxiYWNrIGlz
IGNhbGxlZCB3aGVuICJDaGVjayBTcGVsbGluZyBXaGlsZSBUeXBpbmciIHNldHRpbmcgd2FzIGNo
YW5nZWQgaW4gY29udGV4dCBtZW51LgorICogVHdvIGNhc2VzIGFyZSB0ZXN0ZWQ6CisgKiAgLSAi
Q2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nIiBpcyBlbmFibGVkLAorICogIC0gIkNoZWNrIFNw
ZWxsaW5nIFdoaWxlIFR5cGluZyIgaXMgZGlzYWJsZWQuCisgKi8KK1RFU1RfRihFV0syVW5pdFRl
c3RCYXNlLCBld2tfdGV4dF9jaGVja2VyX2NoZWNrX3NwZWxsaW5nX3doaWxlX3R5cGluZ190b2dn
bGUpCit7CisgICAgcmVzZXRDYWxsYmFja3NFeGVjdXRpb25TdGF0cygpOworICAgIGV3a1ZpZXdD
bGFzcygpLT5jb250ZXh0X21lbnVfc2hvdyA9IHRvb2dsZUNoZWNrU3BlbGxpbmdXaGlsZVR5cGlu
ZzsKKworICAgIGV3a190ZXh0X2NoZWNrZXJfY29udGludW91c19zcGVsbF9jaGVja2luZ19jaGFu
Z2VfY2Jfc2V0KG9uU2V0dGluZ0NoYW5nZSk7CisgICAgaXNTZXR0aW5nRW5hYmxlZCA9ICFld2tf
dGV4dF9jaGVja2VyX2NvbnRpbnVvdXNfc3BlbGxfY2hlY2tpbmdfZW5hYmxlZF9nZXQoKTsKKwor
ICAgIEFTU0VSVF9UUlVFKGxvYWRVcmxTeW5jKGVudmlyb25tZW50LT51cmxGb3JSZXNvdXJjZSgi
c3BlbGxpbmdfdGVzdC5odG1sIikuZGF0YSgpKSk7CisKKyAgICBFV0syVW5pdFRlc3RCYXNlOjpt
b3VzZUNsaWNrKDEwLCAyMCwgLypSaWdodCBidXR0b24qLyAzKTsKKyAgICBBU1NFUlRfVFJVRSh3
YWl0VW50aWxUcnVlKGNhbGxiYWNrc0V4ZWN1dGlvblN0YXRzLnNldHRpbmdDaGFuZ2UpKTsKKwor
ICAgIHJlc2V0Q2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMoKTsKKworICAgIC8vIFRlc3QgY2FzZSwg
d2hlbiAiQ2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nIiBpcyBpbiByZXZlcnNlIHRvIHRoZSBw
cmV2aW91cyBvbmUuCisgICAgaXNTZXR0aW5nRW5hYmxlZCA9ICFpc1NldHRpbmdFbmFibGVkOwor
CisgICAgRVdLMlVuaXRUZXN0QmFzZTo6bW91c2VDbGljaygxMCwgMjAsIC8qUmlnaHQgYnV0dG9u
Ki8gMyk7CisgICAgQVNTRVJUX1RSVUUod2FpdFVudGlsVHJ1ZShjYWxsYmFja3NFeGVjdXRpb25T
dGF0cy5zZXR0aW5nQ2hhbmdlKSk7CisKKyAgICBld2tfdGV4dF9jaGVja2VyX2NvbnRpbnVvdXNf
c3BlbGxfY2hlY2tpbmdfY2hhbmdlX2NiX3NldCgwKTsKK30KKworLyoqCisgKiBUZXN0IHdoZXRo
ZXIgdGhlIG9uU2V0dGluZ0NoYW5nZSBjYWxsYmFjayBpcyBub3QgY2FsbGVkIHdoZW4gdGhlIHNw
ZWxsIGNoZWNraW5nIHNldHRpbmcgd2FzIGNoYW5nZWQgYnkgY2xpZW50LgogICovCiBURVNUX0Yo
RVdLMlVuaXRUZXN0QmFzZSwgZXdrX3RleHRfY2hlY2tlcl9jb250aW51b3VzX3NwZWxsX2NoZWNr
aW5nX2NoYW5nZV9jYl9zZXQpCiB7CisgICAgcmVzZXRDYWxsYmFja3NFeGVjdXRpb25TdGF0cygp
OworCiAgICAgZXdrX3RleHRfY2hlY2tlcl9jb250aW51b3VzX3NwZWxsX2NoZWNraW5nX2NoYW5n
ZV9jYl9zZXQob25TZXR0aW5nQ2hhbmdlKTsKIAogICAgIGlzU2V0dGluZ0VuYWJsZWQgPSBld2tf
dGV4dF9jaGVja2VyX2NvbnRpbnVvdXNfc3BlbGxfY2hlY2tpbmdfZW5hYmxlZF9nZXQoKTsKQEAg
LTMzMSwzMSArMzk1LDI1IEBAIFRFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdGV4dF9jaGVj
a2VyX2NvbnRpbnVvdXNfc3BlbGxfY2hlY2tpbmdfY2hhbmdlX2NiX3NlCiAgICAgLy8gb24gdGhl
IGNsaWVudCdzIHJlcXVlc3QgKHB1YmxpYyBBUEkpLgogICAgIGV3a190ZXh0X2NoZWNrZXJfY29u
dGludW91c19zcGVsbF9jaGVja2luZ19lbmFibGVkX3NldChpc1NldHRpbmdFbmFibGVkKTsKIAot
ICAgIHRpbWVvdXRUaW1lciA9IGVjb3JlX3RpbWVyX2FkZChkZWZhdWx0VGltZW91dEluU2Vjb25k
cywgb25UaW1lb3V0LCAwKTsKKyAgICAvLyBUaGUgbm90aWZpY2F0aW9uIGFib3V0IHRoZSBjaGFu
Z2Ugb2YgdGhlIHNwZWxsIGNoZWNraW5nIHNldHRpbmcgaXMgY2FsbGVkIG9uIGlkbGVyLgorICAg
IEFTU0VSVF9GQUxTRSh3YWl0VW50aWxUcnVlKGNhbGxiYWNrc0V4ZWN1dGlvblN0YXRzLnNldHRp
bmdDaGFuZ2UsIC8qVGltZW91dCovIDApKTsKIAotICAgIC8vIFN0YXJ0IHByb2NjZXNpbmcgRWNv
cmUgZXZlbnRzLCB0aGUgbm90aWZpY2F0aW9uIGFib3V0IHRoZSBjaGFuZ2Ugb2YgdGhlIHNwZWxs
Ci0gICAgLy8gY2hlY2tpbmcgc2V0dGluZyBpcyBjYWxsZWQgb24gaWRsZXIuCi0gICAgLy8gV2Ug
Y2FuJ3QgY2FsbCBlY29yZV9tYWluX2xvb3BfaXRlcmF0ZSBiZWNhdXNlIGl0IGRvZXNuJ3QgcHJv
Y2VzcyB0aGUgaWRsZXJzLgotICAgIGVjb3JlX21haW5fbG9vcF9iZWdpbigpOworICAgIGV3a190
ZXh0X2NoZWNrZXJfY29udGludW91c19zcGVsbF9jaGVja2luZ19jaGFuZ2VfY2Jfc2V0KDApOwor
fQorCisvKioKKyAqIFRlc3Qgd2hldGhlciB0aGUgb25TZXR0aW5nQ2hhbmdlIGNhbGxiYWNrIGlz
IG5vdCBjYWxsZWQsIGlmIHRoZSBjbGllbnQgZG9lcyBub3Qgc2V0IGl0LgorICogIkNoZWNrIFNw
ZWxsaW5nIFdoaWxlIFR5cGluZyIgb3B0aW9uIGlzIHRvZ2dsZWQgaW4gY29udGV4dCBtZW51Lgor
ICovCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX3RleHRfY2hlY2tlcl9jb250aW51b3Vz
X3NwZWxsX2NoZWNraW5nX2NoYW5nZV9jYl91bnNldCkKK3sKKyAgICByZXNldENhbGxiYWNrc0V4
ZWN1dGlvblN0YXRzKCk7CisgICAgZXdrVmlld0NsYXNzKCktPmNvbnRleHRfbWVudV9zaG93ID0g
dG9vZ2xlQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nOworCisgICAgQVNTRVJUX1RSVUUobG9hZFVy
bFN5bmMoZW52aXJvbm1lbnQtPnVybEZvclJlc291cmNlKCJzcGVsbGluZ190ZXN0Lmh0bWwiKS5k
YXRhKCkpKTsKIAotICAgIEVYUEVDVF9UUlVFKHRpbWVvdXRUaW1lcik7Ci0KLSAgICAvKiBUaGUg
Y2FsbGJhY2sgc2hvdWxkIGJlIGNhbGxlZCBpZiB0aGUgY29udGV4dCBtZW51ICJDaGVjayBTcGVs
bGluZyBXaGlsZSBUeXBpbmciIG9wdGlvbgotICAgICAgIHdhcyB0b2dnbGVkIGJ5IHRoZSB1c2Vy
LgotICAgIEZJWE1FOgotICAgIDEpIEludm9rZSB0aGUgY29udGV4dCBtZW51IG9uIHRoZSBpbnB1
dCBmaWVsZC4KLSAgICAyKSBDaG9vc2UgdGhlIHN1YiBtZW51ICJTcGVsbGluZyBhbmQgR3JhbW1h
ciIgb3B0aW9uIChub3QgaW1wbGVtZW50ZWQgZm9yIFdLMikuCi0gICAgMykgVG9nZ2xlICJDaGVj
ayBTcGVsbGluZyBXaGlsZSBUeXBpbmciIG9wdGlvbi4KLSAgICA0KSBDaGVjayB3aGV0aGVyIHRo
ZSBjYWxsYmFjayBpcyBjYWxsZWQuICovCi0KLSAgICAvKiBUaGUgY2FsbGJhY2sgc2hvdWxkbid0
IGJlIGNhbGxlZCBpZiB0aGUgdXNlciBoYXMgaW52YWxpZGF0ZWQgaXQuCi0gICAgRklYTUU6Ci0g
ICAgMSkgQ2FsbCBld2tfdGV4dF9jaGVja2VyX2NvbnRpbnVvdXNfc3BlbGxfY2hlY2tpbmdfY2hh
bmdlX2NiX3NldCgwKSB0byBub3RpZnkgdGhlIFdlYktpdCB0aGF0Ci0gICAgICAgdGhlIGNsaWVu
dCBpcyBub3QgaW50ZXJlc3RlZCBpbiB0aGUgc2V0dGluZyBjaGFuZ2UuCi0gICAgMikgSW52b2tl
IHRoZSBjb250ZXh0IG1lbnUgb24gdGhlIGlucHV0IGZpZWxkLgotICAgIDMpIENob29zZSB0aGUg
c3ViIG1lbnUgIlNwZWxsaW5nIGFuZCBHcmFtbWFyIiBvcHRpb24gKG5vdCBpbXBsZW1lbnRlZCBm
b3IgV0syKS4KLSAgICA0KSBUb2dnbGUgIkNoZWNrIFNwZWxsaW5nIFdoaWxlIFR5cGluZyIgb3B0
aW9uLgotICAgIDUpIENoZWNrIHdoZXRoZXIgdGhlIGNhbGxiYWNrIHdhcyBjYWxsZWQuICovCisg
ICAgRVdLMlVuaXRUZXN0QmFzZTo6bW91c2VDbGljaygxMCwgMjAsIC8qUmlnaHQgYnV0dG9uKi8g
Myk7CisgICAgQVNTRVJUX0ZBTFNFKHdhaXRVbnRpbFRydWUoY2FsbGJhY2tzRXhlY3V0aW9uU3Rh
dHMuc2V0dGluZ0NoYW5nZSwgLypUaW1lb3V0Ki8gMCkpOwogfQogCiAvKioK
</data>

          </attachment>
      

    </bug>

</bugzilla>