2 var strShapeName
= "Shape Name";
3 var strShapeText
= "Shape Text";
4 var strProps
= "Custom Properties";
5 var strResults
= "Search results for:";
7 var strShape
= "Shape Name:";
8 var strNoCustomPropertiesToDisplayText
= "CTRL+click a shape in the drawing to view details.";
10 var FindShapeXML
= parent
.FindShapeXML
;
11 var Unquote
= parent
.Unquote
;
12 var put_Location
= parent
.put_Location
;
15 var strChkBox
= "Chkbox";
16 var strPropChkBox
= "PropChkbox";
18 function doExpando(xxx
,yyy
){
19 if (xxx
.style
.display
=="none"){
20 xxx
.style
.display
= ""
23 xxx
.style
.display
= "none"
28 function doExp(xxx
,yyy
){
29 if (xxx
.style
.display
=="none"){
30 xxx
.style
.display
= ""
31 yyy
.src
= "minus.gif";
33 xxx
.style
.display
= "none"
39 function FindOnClick()
41 var count
, indexOfString
;
43 var fieldsToSearchArray
= new Array();
44 if (parent
.xmlData
!= null && document
.theForm
[strProps
+ strChkBox
].checked
)
46 for( count
=0; count
< document
.theForm
.length
; count
++ )
48 indexOfString
= document
.theForm
[count
].name
.indexOf(strPropChkBox
);
49 if( -1 != indexOfString
&& document
.theForm
[count
].checked
)
51 fieldsToSearchArray
[ fieldsToSearchArray
.length
] = document
.theForm
[count
].name
.slice(0, indexOfString
);
56 var searchTokensArray
= CreateSearchTokens (document
.theForm
.findString
.value
);
58 if (searchTokensArray
.length
> 0)
60 var findArray
= Find(searchTokensArray
, fieldsToSearchArray
);
61 var ArrayLength
= findArray
.length
;
62 var strResultsHTML
= "No matches found.";
63 var lastPageID
= null;
69 strResultsHTML
= strResults
+ ' <b>'+ parent
.HTMLEscape(document
.theForm
.findString
.value
) +'</b>';
70 for ( count
= 0; count
< ArrayLength
; count
++)
73 if( lastPageID
!= findArray
[count
].PageID
)
75 lastPageID
= findArray
[count
].PageID
;
78 shapeID
= findArray
[count
].ShapeID
;
79 strResultsHTML
+= '<p class="results"><a href="javascript:populateSearchResultDetails(\'results_'+ lastPageID
+'_'+ shapeID
+'\', '+ lastPageID
+','+ shapeID
+'); TogglePlus(results_' + lastPageID
+ '_' + shapeID
+ ',\'img_' + lastPageID
+ '_' + shapeID
+ '\', hideResults)"><img src="plus.gif" alt="Shows/hides shape details" width="13" height="9" border="0" id="img_'+ lastPageID
+'_'+ shapeID
+'"></a>\n'
80 strResultsHTML
+= '<a class="blu1" href="JavaScript:FindQuerySelect(';
82 strResultsHTML
+= findArray
[count
].PageID
+ ",";
83 strResultsHTML
+= findArray
[count
].ShapeID
+ ",";
84 strResultsHTML
+= findArray
[count
].PinX
+ ",";
85 strResultsHTML
+= findArray
[count
].PinY
;
87 strResultsHTML
+= ')">'+ findArray
[count
].Title
+'</a></p>\n'
89 strResultsHTML
+= '</div>\n';
90 strResultsHTML
+= '<div class="indent" id="results_'+ lastPageID
+'_'+ shapeID
+'" style="display:none;width:100%;"></div>\n'
94 var divAdvSrch
= document
.all("hideAdvSrch");
95 var imgAS0
= document
.all("as0");
97 var tmpObj
= document
.all("hideResults");
100 tmpObj
.innerHTML
= strResultsHTML
;
101 tmpObj
.open
= "true";
102 tmpObj
.style
.display
= "block";
107 function CreateSearchTokens (strUserString
)
109 var searchTokensArray
= new Array();
114 for (var count
= 0; count
< strUserString
.length
; count
++)
116 chCurChar
= strUserString
.charAt(count
);
117 if (chCurChar
== '"')
119 var nNextQuote
= strUserString
.indexOf('"', count
+ 1);
122 strToken
= strUserString
.slice(count
+ 1, nNextQuote
);
123 searchTokensArray
[searchTokensArray
.length
] = strToken
;
128 else if (chCurChar
== ' ')
130 if (strToken
.length
> 0)
132 searchTokensArray
[searchTokensArray
.length
] = strToken
;
139 strToken
+= chCurChar
;
143 if (strToken
.length
> 0)
145 searchTokensArray
[searchTokensArray
.length
] = strToken
;
148 return searchTokensArray
;
151 function populateSearchResultDetails( divID
, pageID
, shapeID
)
153 var tmpShape
= FindShapeXML (pageID
, shapeID
);
154 var strOutput
= CreatePropTable( tmpShape
);
156 var tmpObj
= document
.all(divID
);
159 tmpObj
.innerHTML
= strOutput
;
163 function makeAdvancedFindCheckboxes(div
)
169 strOutput
+= "<INPUT type='checkbox' name='" + strShapeName
+ strChkBox
+ "' id='" + strShapeName
+ strChkBox
+ "' checked><label for='" + strShapeName
+ strChkBox
+ "'>" + strShapeName
+ "</label><br>\n";
170 strOutput
+= "<INPUT type='checkbox' name='" + strShapeText
+ strChkBox
+ "' id='" + strShapeText
+ strChkBox
+ "' checked><label for='" + strShapeText
+ strChkBox
+ "'>" + strShapeText
+ "</label><br>\n";
171 strOutput
+= "<INPUT type='checkbox' name='" + strProps
+ strChkBox
+ "' id='" + strProps
+ strChkBox
+ "' onclick='AdvSearchCustomPropCheck ()'checked ><label for='" + strProps
+ strChkBox
+ "'>" + strProps
+"</label><br>\n";
172 strOutput
+= "<div id='divCPBoxes' style='margin-left:1em;'>";
174 var objNodes
= parent
.xmlData
.selectNodes(".//Shape/Prop/Label");
176 var boolFirstPass
= true;
178 while( objNodes
.length
> 0)
180 tmpPropName
= objNodes
.item( 0 ).text
;
181 var escapedPropName
= parent
.EscapeString(tmpPropName
);
182 if( true == boolFirstPass
)
184 filter
= ". != '" + escapedPropName
+ "'";
185 boolFirstPass
= false;
189 filter
+= " and . != '" + escapedPropName
+ "'";
192 tmpPropName
= parent
.HTMLEscape (tmpPropName
);
193 strOutput
+= "<INPUT type='checkbox' name='" + tmpPropName
+ strPropChkBox
+ "' id='"+ tmpPropName
+ strPropChkBox
+ "' checked><label for='"+ tmpPropName
+ strPropChkBox
+ "'>" + tmpPropName
+"</label><br>\n";
195 objNodes
= parent
.xmlData
.selectNodes(".//Shape/Prop/Label["+ filter
+ "]");
197 strOutput
+= "</div>"
198 div
.innerHTML
= strOutput
;
202 function AdvSearchCustomPropCheck ()
204 for( count
=0; count
< document
.theForm
.length
; count
++ )
206 indexOfString
= document
.theForm
[count
].name
.indexOf(strPropChkBox
);
207 if( -1 != indexOfString
)
209 document
.theForm
[count
].disabled
= !document
.theForm
[strProps
+ strChkBox
].checked
;
215 function CResultItem(title
, pageID
, shapeID
, pinX
, pinY
)
217 this["Title"] = title
;
218 this["PageID"] = pageID
;
219 this["ShapeID"] = shapeID
;
224 function FindParentPage(nodeObject
)
226 if(nodeObject
== null)
230 if(nodeObject
.baseName
== "Page")
233 return FindParentPage(nodeObject
.parentNode
);
236 function QueryStringForMatch(shapeNode
, regTextForFind
, filterString
)
238 if (filterString
.length
> 0)
240 var nodesToCheck
= shapeNode
.selectNodes(filterString
);
242 var nodeCount
= nodesToCheck
.length
;
244 for(var ncount
= 0; ncount
< nodeCount
; ncount
++)
246 stringToParse
= nodesToCheck
.item(ncount
).text
;
247 stringToParse
= stringToParse
.toLowerCase ();
248 if(stringToParse
.indexOf(regTextForFind
) > -1)
256 function GetShapeTitle(shapeNode
)
258 var objTempName
= null;
259 var objTempTextElement
= shapeNode
.selectSingleNode("./Text");
260 if(objTempTextElement
!= null)
262 var objTextNode
= objTempTextElement
.selectSingleNode("textnode()");
263 if (objTextNode
!= null)
265 return parent
.HTMLEscape (objTextNode
.text
);
269 objTempName
= shapeNode
.selectSingleNode("./@Name");
270 if(objTempName
!= null)
272 return parent
.HTMLEscape (objTempName
.text
);
278 function GetPageTitle(pageID
)
280 var pagesObj
= parent
.xmlData
.selectSingleNode("VisioDocument/Pages");
286 var pageQuerryString
= './/Page[@ID = "' + pageID
+ '"]';
287 var pageObj
= pagesObj
.selectSingleNode(pageQuerryString
);
293 var pageNameNode
= pageObj
.selectSingleNode("@Name");
298 return pageNameNode
.text
;
301 function Find(searchTokensArray
, propsToSearchArray
)
303 var bXMLNotValid
= false;
304 var findArray
= new Array();
307 if (parent
.xmlData
!= null && searchTokensArray
.length
> 0)
309 var fieldsToSearchArray
= new Array();
310 var filterString
= "";
311 if( null != propsToSearchArray
&&
312 propsToSearchArray
.length
> 0 )
314 var propFilterString
= "";
315 for( var count
=0; count
< propsToSearchArray
.length
; count
++ )
319 propFilterString
= "[. = '" + parent
.EscapeString (propsToSearchArray
[count
]) + "'";
323 propFilterString
+= " or . = '"+ parent
.EscapeString (propsToSearchArray
[count
]) + "'";
326 propFilterString
+= "]";
328 fieldsToSearchArray
[fieldsToSearchArray
.length
] = "Prop[Label"+ propFilterString
+"]/Value";
331 if (document
.theForm
[strShapeText
+ strChkBox
].checked
)
333 fieldsToSearchArray
[fieldsToSearchArray
.length
] = "Text";
336 if (fieldsToSearchArray
.length
> 0)
338 filterString
= "(.//(";
340 for (var fieldCount
= 0; fieldCount
< fieldsToSearchArray
.length
; fieldCount
++)
344 filterString
+= " | ";
347 filterString
+= fieldsToSearchArray
[fieldCount
];
350 filterString
+= ")/textnode())";
355 if (document
.theForm
[strShapeName
+ strChkBox
].checked
)
357 if (filterString
.length
> 0)
359 filterString
+= " | ";
361 filterString
+= "(@Name)";
363 var objShapeNodes
= parent
.xmlData
.selectNodes(".//Shape");
367 var objShapeNodes
= parent
.xmlData
.selectNodes(".//Shape[(Prop/Value | Prop/Label | Text)]");
370 var shapeCount
= objShapeNodes
.length
;
371 var objTempData
= new CResultItem("A Label","PageID","ShapeID","PinX","PinY");
372 var objTempShape
= null;
374 for (count
= 0; count
< shapeCount
; count
++)
376 objTempShape
= objShapeNodes
.item(count
);
378 var objParentPageNode
= FindParentPage(objTempShape
);
379 if (objParentPageNode
== null)
384 var objPageIDNode
= objParentPageNode
.selectSingleNode("@ID/textnode()");
385 if(objPageIDNode
== null)
389 var pageID
= objPageIDNode
.text
;
391 var pageIndex
= parent
.PageIndexFromID (pageID
);
397 var objLayerMember
= objTempShape
.selectSingleNode("LayerMem/LayerMember");
398 if (objLayerMember
!= null && objLayerMember
.text
.length
> 0)
400 var layerArray
= objLayerMember
.text
.split (';');
401 var visibleLayer
= false;
402 for (var layerCount
= 0; (layerCount
< layerArray
.length
) && !visibleLayer
; layerCount
++)
404 var objLayerVisible
= objParentPageNode
.selectSingleNode("Layer[@IX=" + layerArray
[layerCount
] + "]/Visible");
405 if (objLayerVisible
!= null)
407 visibleLayer
= (objLayerVisible
.text
!= 0);
417 for (var tokenCount
= 0; tokenCount
< searchTokensArray
.length
; tokenCount
++)
419 var textToFind
= searchTokensArray
[tokenCount
];
420 textToFind
= textToFind
.toLowerCase ();
422 if (QueryStringForMatch(objTempShape
, textToFind
, filterString
))
424 objTempData
.Title
= GetShapeTitle(objTempShape
);
425 objTempData
.PageID
= pageID
;
427 objShapeIDNode
= objTempShape
.selectSingleNode("@ID/textnode()");
428 if(objShapeIDNode
== null)
433 objTempData
.ShapeID
= objShapeIDNode
.text
;
434 objPinXNode
= objTempShape
.selectSingleNode("XForm/PinX/textnode()");
435 if(objPinXNode
== null)
440 objTempData
.PinX
= objPinXNode
.text
;
441 objPinYNode
= objTempShape
.selectSingleNode("XForm/PinY/textnode()");
442 if(objPinYNode
== null)
447 objTempData
.PinY
= objPinYNode
.text
;
449 findArray
[findIndex
] = new CResultItem(objTempData
.Title
, objTempData
.PageID
, objTempData
.ShapeID
, objTempData
.PinX
, objTempData
.PinY
);
457 findArray
.length
= 0;
464 function FindQuerySelect(pageID
, shapeID
, pinX
, pinY
)
466 if (widgets
.GoTo
&& (parent
.g_FileList
[document
.all("Select1").value
].PageID
!= pageID
))
468 parent
.g_callBackFunctionArray
[parent
.g_callBackFunctionArray
.length
] = function () { parent
.viewMgr
.put_Location (pageID
, shapeID
, pinX
, pinY
); };
469 parent
.GoToPageByID(pageID
);
473 if (parent
.viewMgr
!= null)
475 parent
.viewMgr
.put_Location (pageID
, shapeID
, pinX
, pinY
);
480 function TreeSelect(pageID
, shapeID
)
482 var shapeNode
= FindShapeXML (pageID
, shapeID
);
483 if (shapeNode
!= null)
485 var pinXNode
= shapeNode
.selectSingleNode("XForm/PinX/textnode()");
486 var pinYNode
= shapeNode
.selectSingleNode("XForm/PinY/textnode()");
488 if (pinXNode
!= null && pinYNode
!= null)
490 FindQuerySelect (pageID
, shapeID
, pinXNode
.text
, pinYNode
.text
);
496 var g_RowStyleList
= parent
.g_RowStyleList
;
497 var FillPropPane
= parent
.FillPropPane
;
498 var CreatePropTable
= parent
.CreatePropTable
;
501 // SIG // Begin signature block
502 // SIG // MIIXNAYJKoZIhvcNAQcCoIIXJTCCFyECAQExCzAJBgUr
503 // SIG // DgMCGgUAMGcGCisGAQQBgjcCAQSgWTBXMDIGCisGAQQB
504 // SIG // gjcCAR4wJAIBAQQQEODJBs441BGiowAQS9NQkAIBAAIB
505 // SIG // AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFAaJ0KyTu99e
506 // SIG // uEaVCk9qqbqX4zjaoIISMTCCBGAwggNMoAMCAQICCi6r
507 // SIG // EdxQ/1ydy8AwCQYFKw4DAh0FADBwMSswKQYDVQQLEyJD
508 // SIG // b3B5cmlnaHQgKGMpIDE5OTcgTWljcm9zb2Z0IENvcnAu
509 // SIG // MR4wHAYDVQQLExVNaWNyb3NvZnQgQ29ycG9yYXRpb24x
510 // SIG // ITAfBgNVBAMTGE1pY3Jvc29mdCBSb290IEF1dGhvcml0
511 // SIG // eTAeFw0wNzA4MjIyMjMxMDJaFw0xMjA4MjUwNzAwMDBa
512 // SIG // MHkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5n
513 // SIG // dG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVN
514 // SIG // aWNyb3NvZnQgQ29ycG9yYXRpb24xIzAhBgNVBAMTGk1p
515 // SIG // Y3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBMIIBIjANBgkq
516 // SIG // hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt3l91l2zRTmo
517 // SIG // NKwx2vklNUl3wPsfnsdFce/RRujUjMNrTFJi9JkCw03Y
518 // SIG // SWwvJD5lv84jtwtIt3913UW9qo8OUMUlK/Kg5w0jH9FB
519 // SIG // JPpimc8ZRaWTSh+ZzbMvIsNKLXxv2RUeO4w5EDndvSn0
520 // SIG // ZjstATL//idIprVsAYec+7qyY3+C+VyggYSFjrDyuJSj
521 // SIG // zzimUIUXJ4dO3TD2AD30xvk9gb6G7Ww5py409rQurwp9
522 // SIG // YpF4ZpyYcw2Gr/LE8yC5TxKNY8ss2TJFGe67SpY7UFMY
523 // SIG // zmZReaqth8hWPp+CUIhuBbE1wXskvVJmPZlOzCt+M26E
524 // SIG // RwbRntBKhgJuhgCkwIffUwIDAQABo4H6MIH3MBMGA1Ud
525 // SIG // JQQMMAoGCCsGAQUFBwMDMIGiBgNVHQEEgZowgZeAEFvQ
526 // SIG // cO9pcp4jUX4Usk2O/8uhcjBwMSswKQYDVQQLEyJDb3B5
527 // SIG // cmlnaHQgKGMpIDE5OTcgTWljcm9zb2Z0IENvcnAuMR4w
528 // SIG // HAYDVQQLExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xITAf
529 // SIG // BgNVBAMTGE1pY3Jvc29mdCBSb290IEF1dGhvcml0eYIP
530 // SIG // AMEAizw8iBHRPvZj7N9AMA8GA1UdEwEB/wQFMAMBAf8w
531 // SIG // HQYDVR0OBBYEFMwdznYAcFuv8drETppRRC6jRGPwMAsG
532 // SIG // A1UdDwQEAwIBhjAJBgUrDgMCHQUAA4IBAQB7q65+Siby
533 // SIG // zrxOdKJYJ3QqdbOG/atMlHgATenK6xjcacUOonzzAkPG
534 // SIG // yofM+FPMwp+9Vm/wY0SpRADulsia1Ry4C58ZDZTX2h6t
535 // SIG // KX3v7aZzrI/eOY49mGq8OG3SiK8j/d/p1mkJkYi9/uEA
536 // SIG // uzTz93z5EBIuBesplpNCayhxtziP4AcNyV1ozb2AQWtm
537 // SIG // qLu3u440yvIDEHx69dLgQt97/uHhrP7239UNs3DWkuNP
538 // SIG // tjiifC3UPds0C2I3Ap+BaiOJ9lxjj7BauznXYIxVhBoz
539 // SIG // 9TuYoIIMol+Lsyy3oaXLq9ogtr8wGYUgFA0qvFL0QeBe
540 // SIG // MOOSKGmHwXDi86erzoBCcnYOMIIEejCCA2KgAwIBAgIK
541 // SIG // YQHPPgAAAAAADzANBgkqhkiG9w0BAQUFADB5MQswCQYD
542 // SIG // VQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G
543 // SIG // A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0
544 // SIG // IENvcnBvcmF0aW9uMSMwIQYDVQQDExpNaWNyb3NvZnQg
545 // SIG // Q29kZSBTaWduaW5nIFBDQTAeFw0wOTEyMDcyMjQwMjla
546 // SIG // Fw0xMTAzMDcyMjQwMjlaMIGDMQswCQYDVQQGEwJVUzET
547 // SIG // MBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVk
548 // SIG // bW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0
549 // SIG // aW9uMQ0wCwYDVQQLEwRNT1BSMR4wHAYDVQQDExVNaWNy
550 // SIG // b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEB
551 // SIG // AQUAA4IBDwAwggEKAoIBAQC9MIn7RXKoU2ueiU8AI8C+
552 // SIG // 1B09sVlAOPNzkYIm5pYSAFPZHIIOPM4du733Qo2X1Pw4
553 // SIG // GuS5+ePs02EDv6DT1nVNXEap7V7w0uJpWxpz6rMcjQTN
554 // SIG // KUSgZFkvHphdbserGDmCZcSnvKt1iBnqh5cUJrN/Jnak
555 // SIG // 1Dg5hOOzJtUY+Svp0skWWlQh8peNh4Yp/vRJLOaL+AQ/
556 // SIG // fc3NlpKGDXED4tD+DEI1/9e4P92ORQp99tdLrVvwdnId
557 // SIG // dyN9iTXEHF2yUANLR20Hp1WImAaApoGtVE7Ygdb6v0LA
558 // SIG // Mb5VDZnVU0kSMOvlpYh8XsR6WhSHCLQ3aaDrMiSMCOv5
559 // SIG // 1BS64PzN6qQVAgMBAAGjgfgwgfUwEwYDVR0lBAwwCgYI
560 // SIG // KwYBBQUHAwMwHQYDVR0OBBYEFDh4BXPIGzKbX5KGVa+J
561 // SIG // usaZsXSOMA4GA1UdDwEB/wQEAwIHgDAfBgNVHSMEGDAW
562 // SIG // gBTMHc52AHBbr/HaxE6aUUQuo0Rj8DBEBgNVHR8EPTA7
563 // SIG // MDmgN6A1hjNodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20v
564 // SIG // cGtpL2NybC9wcm9kdWN0cy9DU1BDQS5jcmwwSAYIKwYB
565 // SIG // BQUHAQEEPDA6MDgGCCsGAQUFBzAChixodHRwOi8vd3d3
566 // SIG // Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL0NTUENBLmNy
567 // SIG // dDANBgkqhkiG9w0BAQUFAAOCAQEAKAODqxMN8f4Rb0J2
568 // SIG // 2EOruMZC+iRlNK51sHEwjpa2g/py5P7NN+c6cJhRIA66
569 // SIG // cbTJ9NXkiugocHPV7eHCe+7xVjRagILrENdyA+oSTuzd
570 // SIG // DYx7RE8MYXX9bpwH3c4rWhgNObBg/dr/BKoCo9j6jqO7
571 // SIG // vcFqVDsxX+QsbsvxTSoc8h52e4avxofWsSrtrMwOwOSf
572 // SIG // f+jP6IRyVIIYbirInpW0Gh7Bb5PbYqbBS2utye09kuOy
573 // SIG // L6t6dzlnagB7gp0DEN5jlUkmQt6VIsGHC9AUo1/cczJy
574 // SIG // Nh7/yCnFJFJPZkjJHR2pxSY5aVBOp+zCBmwuchvxIdpt
575 // SIG // JEiAgRVAfJ/MdDhKTzCCBJ0wggOFoAMCAQICEGoLmU/A
576 // SIG // ACWrEdtFH1h6Z6IwDQYJKoZIhvcNAQEFBQAwcDErMCkG
577 // SIG // A1UECxMiQ29weXJpZ2h0IChjKSAxOTk3IE1pY3Jvc29m
578 // SIG // dCBDb3JwLjEeMBwGA1UECxMVTWljcm9zb2Z0IENvcnBv
579 // SIG // cmF0aW9uMSEwHwYDVQQDExhNaWNyb3NvZnQgUm9vdCBB
580 // SIG // dXRob3JpdHkwHhcNMDYwOTE2MDEwNDQ3WhcNMTkwOTE1
581 // SIG // MDcwMDAwWjB5MQswCQYDVQQGEwJVUzETMBEGA1UECBMK
582 // SIG // V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG
583 // SIG // A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSMwIQYD
584 // SIG // VQQDExpNaWNyb3NvZnQgVGltZXN0YW1waW5nIFBDQTCC
585 // SIG // ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANw3
586 // SIG // bvuvyEJKcRjIzkg+U8D6qxS6LDK7Ek9SyIPtPjPZSTGS
587 // SIG // KLaRZOAfUIS6wkvRfwX473W+i8eo1a5pcGZ4J2botrfv
588 // SIG // hbnN7qr9EqQLWSIpL89A2VYEG3a1bWRtSlTb3fHev5+D
589 // SIG // x4Dff0wCN5T1wJ4IVh5oR83ZwHZcL322JQS0VltqHGP/
590 // SIG // gHw87tUEJU05d3QHXcJc2IY3LHXJDuoeOQl8dv6dbG56
591 // SIG // 4Ow+j5eecQ5fKk8YYmAyntKDTisiXGhFi94vhBBQsvm1
592 // SIG // Go1s7iWbE/jLENeFDvSCdnM2xpV6osxgBuwFsIYzt/iU
593 // SIG // W4RBhFiFlG6wHyxIzG+cQ+Bq6H8mjmsCAwEAAaOCASgw
594 // SIG // ggEkMBMGA1UdJQQMMAoGCCsGAQUFBwMIMIGiBgNVHQEE
595 // SIG // gZowgZeAEFvQcO9pcp4jUX4Usk2O/8uhcjBwMSswKQYD
596 // SIG // VQQLEyJDb3B5cmlnaHQgKGMpIDE5OTcgTWljcm9zb2Z0
597 // SIG // IENvcnAuMR4wHAYDVQQLExVNaWNyb3NvZnQgQ29ycG9y
598 // SIG // YXRpb24xITAfBgNVBAMTGE1pY3Jvc29mdCBSb290IEF1
599 // SIG // dGhvcml0eYIPAMEAizw8iBHRPvZj7N9AMBAGCSsGAQQB
600 // SIG // gjcVAQQDAgEAMB0GA1UdDgQWBBRv6E4/l7k0q0uGj7yc
601 // SIG // 6qw7QUPG0DAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMA
602 // SIG // QTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAN
603 // SIG // BgkqhkiG9w0BAQUFAAOCAQEAlE0RMcJ8ULsRjqFhBwEO
604 // SIG // jHBFje9zVL0/CQUt/7hRU4Uc7TmRt6NWC96Mtjsb0fus
605 // SIG // p8m3sVEhG28IaX5rA6IiRu1stG18IrhG04TzjQ++B4o2
606 // SIG // wet+6XBdRZ+S0szO3Y7A4b8qzXzsya4y1Ye5y2PENtEY
607 // SIG // Ib923juasxtzniGI2LS0ElSM9JzCZUqaKCacYIoPO8cT
608 // SIG // ZXhIu8+tgzpPsGJY3jDp6Tkd44ny2jmB+RMhjGSAYwYE
609 // SIG // lvKaAkMve0aIuv8C2WX5St7aA3STswVuDMyd3ChhfEjx
610 // SIG // F5wRITgCHIesBsWWMrjlQMZTPb2pid7oZjeN9CKWnMyw
611 // SIG // d1RROtZyRLIj9jCCBKowggOSoAMCAQICCmEGlC0AAAAA
612 // SIG // AAkwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMCVVMx
613 // SIG // EzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1Jl
614 // SIG // ZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh
615 // SIG // dGlvbjEjMCEGA1UEAxMaTWljcm9zb2Z0IFRpbWVzdGFt
616 // SIG // cGluZyBQQ0EwHhcNMDgwNzI1MTkwMjE3WhcNMTMwNzI1
617 // SIG // MTkxMjE3WjCBszELMAkGA1UEBhMCVVMxEzARBgNVBAgT
618 // SIG // Cldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc
619 // SIG // BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjENMAsG
620 // SIG // A1UECxMETU9QUjEnMCUGA1UECxMebkNpcGhlciBEU0Ug
621 // SIG // RVNOOjdBODItNjg4QS05RjkyMSUwIwYDVQQDExxNaWNy
622 // SIG // b3NvZnQgVGltZS1TdGFtcCBTZXJ2aWNlMIIBIjANBgkq
623 // SIG // hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlYEKIEIYUXrZ
624 // SIG // le2b/dyH0fsOjxPqqjcoEnb+TVCrdpcqk0fgqVZpAuWU
625 // SIG // fk2F239x73UA27tDbPtvrHHwK9F8ks6UF52hxbr5937d
626 // SIG // YeEtMB6cJi12P+ZGlo6u2Ik32Mzv889bw/xo4PJkj5vo
627 // SIG // wxL5o76E/NaLzgU9vQF2UCcD+IS3FoaNYL5dKSw8z6X9
628 // SIG // mFo1HU8WwDjYHmE/PTazVhQVd5U7EPoAsJPiXTerJ7tj
629 // SIG // LEgUgVXjbOqpK5WNiA5+owCldyQHmCpwA7gqJJCa3sWi
630 // SIG // Iku/TFkGd1RyQ7A+ZN2ThAhYtv7ph0kJNrOz+DOpfkyi
631 // SIG // eX8yWSkOnrX14DyeP+xGOwIDAQABo4H4MIH1MB0GA1Ud
632 // SIG // DgQWBBQolYi/Ajvr2pS6fUYP+sv0fp3/0TAfBgNVHSME
633 // SIG // GDAWgBRv6E4/l7k0q0uGj7yc6qw7QUPG0DBEBgNVHR8E
634 // SIG // PTA7MDmgN6A1hjNodHRwOi8vY3JsLm1pY3Jvc29mdC5j
635 // SIG // b20vcGtpL2NybC9wcm9kdWN0cy90c3BjYS5jcmwwSAYI
636 // SIG // KwYBBQUHAQEEPDA6MDgGCCsGAQUFBzAChixodHRwOi8v
637 // SIG // d3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL3RzcGNh
638 // SIG // LmNydDATBgNVHSUEDDAKBggrBgEFBQcDCDAOBgNVHQ8B
639 // SIG // Af8EBAMCBsAwDQYJKoZIhvcNAQEFBQADggEBAADurPzi
640 // SIG // 0ohmyinjWrnNAIJ+F1zFJFkSu6j3a9eH/o3LtXYfGyL2
641 // SIG // 9+HKtLlBARo3rUg3lnD6zDOnKIy4C7Z0Eyi3s3XhKgni
642 // SIG // i0/fmD+XtzQSgeoQ3R3cumTPTlA7TIr9Gd0lrtWWh+pL
643 // SIG // xOXw+UEXXQHrV4h9dnrlb/6HIKyTnIyav18aoBUwJOCi
644 // SIG // fmGRHSkpw0mQOkODie7e1YPdTyw1O+dBQQGqAAwL8tZJ
645 // SIG // G85CjXuw8y2NXSnhvo1/kRV2tGD7FCeqbxJjQihYOoo7
646 // SIG // i0Dkt8XMklccRlZrj8uSTVYFAMr4MEBFTt8ZiL31EPDd
647 // SIG // Gt8oHrRR8nfgJuO7CYES3B460EUxggRvMIIEawIBATCB
648 // SIG // hzB5MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGlu
649 // SIG // Z3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMV
650 // SIG // TWljcm9zb2Z0IENvcnBvcmF0aW9uMSMwIQYDVQQDExpN
651 // SIG // aWNyb3NvZnQgQ29kZSBTaWduaW5nIFBDQQIKYQHPPgAA
652 // SIG // AAAADzAJBgUrDgMCGgUAoIGaMBkGCSqGSIb3DQEJAzEM
653 // SIG // BgorBgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgor
654 // SIG // BgEEAYI3AgEVMCMGCSqGSIb3DQEJBDEWBBTZReX2O+Gl
655 // SIG // UbtFJX7AkZYRAHjMFzA6BgorBgEEAYI3AgEMMSwwKqAQ
656 // SIG // gA4AZgBpAG4AZAAuAGoAc6EWgBRodHRwOi8vbWljcm9z
657 // SIG // b2Z0LmNvbTANBgkqhkiG9w0BAQEFAASCAQCDDNOPpe4F
658 // SIG // LmFTkErohx8HED4T8BBnEZ17FnhxN5Pjm6RUqL37D4a6
659 // SIG // 7cOlMl3SS91zIQxy6kb5/s7vKdiBcHCzf+k3pplmuySY
660 // SIG // XSKYIoQ2OG3B6yAo6F/488DVcoEZ+K1UmGgu94IEn5Rn
661 // SIG // OrjoiqtEHBbe/OACk+VkyhmdJpwD1ayIGjvFTzUIsJ04
662 // SIG // SmStmHMaKVzSIJmCYOHoXl4DEOcK5gfA38uJuO2U4F7I
663 // SIG // SKoJDWHnM0PZlXtx5iutQF4yda1KcidbGhsPUTZE6qi5
664 // SIG // KvLh5xR50k0ue8WM90h0dNl6xnj3IW2VuvfAnImrMWWb
665 // SIG // NvhXhq4r12/JtIBjKHt4uqaaoYICHzCCAhsGCSqGSIb3
666 // SIG // DQEJBjGCAgwwggIIAgEBMIGHMHkxCzAJBgNVBAYTAlVT
667 // SIG // MRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS
668 // SIG // ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y
669 // SIG // YXRpb24xIzAhBgNVBAMTGk1pY3Jvc29mdCBUaW1lc3Rh
670 // SIG // bXBpbmcgUENBAgphBpQtAAAAAAAJMAcGBSsOAwIaoF0w
671 // SIG // GAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG
672 // SIG // 9w0BCQUxDxcNMTEwMjIwMTkyNTMxWjAjBgkqhkiG9w0B
673 // SIG // CQQxFgQUycY99uXUQbotP1V5Dp08Fyyn4j8wDQYJKoZI
674 // SIG // hvcNAQEFBQAEggEAjwIOdRp9UuBGeDQ+ZjqfOMi20OTG
675 // SIG // 3otsaJbi7Bs5UxoNBXc2eOU4Rbi8uNgt6atTrBMEG76y
676 // SIG // k7qqwDiL+dRoy1nZiWK9LYz5/OvH2paW3UKKnyquEJDX
677 // SIG // D/J3fuDfh3zoYBHgRcjGkY7jSyHnMQT5OjInRXFt0ydi
678 // SIG // SDX5zQ6Sp1Jt6HNDgGBnzp2PkbvpGF/EyuchgGn863Kh
679 // SIG // +PPGnMBHdigkKLYghO+iVrNPnCX7qPOurJQpskaCvqEY
680 // SIG // D3QhrF0LHCWZDamBehRVjz3Lx6YIii9IsQg9x33XAKHQ
681 // SIG // vlAljpqQNIll6SwaOwQbYLHlb/2HpVRM20n7ja8kPywr
683 // SIG // End signature block