BUTR/Bannerlord.UIExtenderEx

View on GitHub
docs/articles/interface/Overview.svg

Summary

Maintainability
Test Coverage
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="2419" height="984" contentStyleType="text/css" preserveAspectRatio="none" style="width:2419px;height:984px;background:#fff" version="1.1" viewBox="0 0 2419 984" zoomAndPan="magnify"><g><g id="cluster_v2"><path fill="none" d="M1895,636.5 L1913,636.5 A3.75,3.75 0 0 1 1915.5,639 L1922.5,661.1211 L2410,661.1211 A2.5,2.5 0 0 1 2412.5,663.6211 L2412.5,772 A2.5,2.5 0 0 1 2410,774.5 L1895,774.5 A2.5,2.5 0 0 1 1892.5,772 L1892.5,639 A2.5,2.5 0 0 1 1895,636.5" style="stroke:#000;stroke-width:1.5"/><line style="stroke:#000;stroke-width:1.5" x1="1892.5" x2="1922.5" y1="661.121" y2="661.121"/><text x="1896.5" y="653.607" fill="#000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="17">v2</text></g><g id="cluster_v1"><path fill="none" d="M550,627 L568,627 A3.75,3.75 0 0 1 570.5,629.5 L577.5,651.6211 L1866,651.6211 A2.5,2.5 0 0 1 1868.5,654.1211 L1868.5,974.5 A2.5,2.5 0 0 1 1866,977 L550,977 A2.5,2.5 0 0 1 547.5,974.5 L547.5,629.5 A2.5,2.5 0 0 1 550,627" style="stroke:#000;stroke-width:1.5"/><line style="stroke:#000;stroke-width:1.5" x1="547.5" x2="577.5" y1="651.621" y2="651.621"/><text x="551.5" y="644.107" fill="#000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="17">v1</text></g><g id="elem_PrefabExtensionInsertPatch"><rect id="PrefabExtensionInsertPatch" width="207" height="85.242" x="2189" y="673.5" fill="#F1F1F1" codeLine="18" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:.5"/><ellipse cx="2204" cy="689.5" fill="#A9DCDF" rx="11" ry="11" style="stroke:#181818;stroke-width:1"/><path fill="#000" d="M2206.1875,691.2656 L2202.0469,691.2656 L2201.625,692.2969 L2202.0469,692.2969 Q2202.6563,692.2969 2202.9219,692.5313 Q2203.1875,692.7656 2203.1875,693.1563 Q2203.1875,693.5313 2202.9219,693.7656 Q2202.6563,694 2202.0469,694 L2199.75,694 Q2199.1406,694 2198.8906,693.7656 Q2198.625,693.5313 2198.625,693.1406 Q2198.625,692.7656 2198.9063,692.5313 Q2199.1719,692.2813 2199.7969,692.2969 L2202.4688,685.6406 L2201.3594,685.6406 Q2200.75,685.6406 2200.4844,685.4063 Q2200.2188,685.1719 2200.2188,684.7813 Q2200.2188,684.4063 2200.4844,684.1719 Q2200.75,683.9375 2201.3594,683.9375 L2205.0313,683.9375 L2208.4219,692.2969 Q2209.0156,692.2969 2209.2031,692.4375 Q2209.5938,692.7031 2209.5938,693.1563 Q2209.5938,693.5313 2209.3281,693.7656 Q2209.0781,694 2208.4688,694 L2206.1719,694 Q2205.5625,694 2205.2969,693.7656 Q2205.0313,693.5313 2205.0313,693.1406 Q2205.0313,692.7656 2205.2969,692.5313 Q2205.5625,692.2969 2206.1719,692.2969 L2206.5938,692.2969 L2206.1875,691.2656 Z M2205.4688,689.5625 L2204.1094,686.1875 L2202.7344,689.5625 L2205.4688,689.5625 Z"/><text x="2218" y="695.297" fill="#000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="175">PrefabExtensionInsertPatch</text><line style="stroke:#181818;stroke-width:.5" x1="2190" x2="2395" y1="705.5" y2="705.5"/><ellipse cx="2200" cy="720.311" fill="none" rx="3" ry="3" style="stroke:#038048;stroke-width:1"/><text x="2209" y="724.607" fill="#000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="104">InsertType Type</text><ellipse cx="2200" cy="738.932" fill="none" rx="3" ry="3" style="stroke:#038048;stroke-width:1"/><text x="2209" y="743.229" fill="#000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="53">int Index</text><line style="stroke:#181818;stroke-width:.5" x1="2190" x2="2395" y1="750.742" y2="750.742"/></g><g id="elem_PrefabExtensionSetAttributePatch"><rect id="PrefabExtensionSetAttributePatch" width="245" height="66.621" x="1909" y="682.5" fill="#F1F1F1" codeLine="22" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:.5"/><ellipse cx="1924" cy="698.5" fill="#A9DCDF" rx="11" ry="11" style="stroke:#181818;stroke-width:1"/><path fill="#000" d="M1926.1875,700.2656 L1922.0469,700.2656 L1921.625,701.2969 L1922.0469,701.2969 Q1922.6563,701.2969 1922.9219,701.5313 Q1923.1875,701.7656 1923.1875,702.1563 Q1923.1875,702.5313 1922.9219,702.7656 Q1922.6563,703 1922.0469,703 L1919.75,703 Q1919.1406,703 1918.8906,702.7656 Q1918.625,702.5313 1918.625,702.1406 Q1918.625,701.7656 1918.9063,701.5313 Q1919.1719,701.2813 1919.7969,701.2969 L1922.4688,694.6406 L1921.3594,694.6406 Q1920.75,694.6406 1920.4844,694.4063 Q1920.2188,694.1719 1920.2188,693.7813 Q1920.2188,693.4063 1920.4844,693.1719 Q1920.75,692.9375 1921.3594,692.9375 L1925.0313,692.9375 L1928.4219,701.2969 Q1929.0156,701.2969 1929.2031,701.4375 Q1929.5938,701.7031 1929.5938,702.1563 Q1929.5938,702.5313 1929.3281,702.7656 Q1929.0781,703 1928.4688,703 L1926.1719,703 Q1925.5625,703 1925.2969,702.7656 Q1925.0313,702.5313 1925.0313,702.1406 Q1925.0313,701.7656 1925.2969,701.5313 Q1925.5625,701.2969 1926.1719,701.2969 L1926.5938,701.2969 L1926.1875,700.2656 Z M1925.4688,698.5625 L1924.1094,695.1875 L1922.7344,698.5625 L1925.4688,698.5625 Z"/><text x="1938" y="704.297" fill="#000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="213">PrefabExtensionSetAttributePatch</text><line style="stroke:#181818;stroke-width:.5" x1="1910" x2="2153" y1="714.5" y2="714.5"/><ellipse cx="1920" cy="729.311" fill="none" rx="3" ry="3" style="stroke:#038048;stroke-width:1"/><text x="1929" y="733.607" fill="#000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="155">List&lt;Attribute&gt; Attributes</text><line style="stroke:#181818;stroke-width:.5" x1="1910" x2="2153" y1="741.121" y2="741.121"/></g><g id="elem_CustomPatch"><rect id="CustomPatch" width="132" height="85.242" x="563.5" y="673.5" fill="#F1F1F1" codeLine="25" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:.5"/><ellipse cx="580.75" cy="689.5" fill="#A9DCDF" rx="11" ry="11" style="stroke:#181818;stroke-width:1"/><path fill="#000" d="M582.9375,691.2656 L578.7969,691.2656 L578.375,692.2969 L578.7969,692.2969 Q579.4063,692.2969 579.6719,692.5313 Q579.9375,692.7656 579.9375,693.1563 Q579.9375,693.5313 579.6719,693.7656 Q579.4063,694 578.7969,694 L576.5,694 Q575.8906,694 575.6406,693.7656 Q575.375,693.5313 575.375,693.1406 Q575.375,692.7656 575.6563,692.5313 Q575.9219,692.2813 576.5469,692.2969 L579.2188,685.6406 L578.1094,685.6406 Q577.5,685.6406 577.2344,685.4063 Q576.9688,685.1719 576.9688,684.7813 Q576.9688,684.4063 577.2344,684.1719 Q577.5,683.9375 578.1094,683.9375 L581.7813,683.9375 L585.1719,692.2969 Q585.7656,692.2969 585.9531,692.4375 Q586.3438,692.7031 586.3438,693.1563 Q586.3438,693.5313 586.0781,693.7656 Q585.8281,694 585.2188,694 L582.9219,694 Q582.3125,694 582.0469,693.7656 Q581.7813,693.5313 581.7813,693.1406 Q581.7813,692.7656 582.0469,692.5313 Q582.3125,692.2969 582.9219,692.2969 L583.3438,692.2969 L582.9375,691.2656 Z M582.2188,689.5625 L580.8594,686.1875 L579.4844,689.5625 L582.2188,689.5625 Z"/><text x="595.25" y="695.297" fill="#000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="84">CustomPatch</text><rect width="9" height="17.961" x="689.5" fill="#FFF" style="stroke:#181818;stroke-width:1;stroke-dasharray:2,2" y="670.5"/><text x="690.5" y="684.449" fill="#000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="7">T</text><line style="stroke:#181818;stroke-width:.5" x1="564.5" x2="694.5" y1="705.5" y2="705.5"/><ellipse cx="574.5" cy="720.311" fill="none" rx="3" ry="3" style="stroke:#038048;stroke-width:1"/><text x="583.5" y="724.607" fill="#000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="51">string Id</text><line style="stroke:#181818;stroke-width:.5" x1="564.5" x2="694.5" y1="732.121" y2="732.121"/><ellipse cx="574.5" cy="746.932" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1"/><text x="583.5" y="751.229" fill="#000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="106">void Apply(T obj)</text></g><g id="elem_InsertPatch"><rect id="InsertPatch" width="253" height="103.863" x="731" y="664" fill="#F1F1F1" codeLine="29" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:.5"/><ellipse cx="817.25" cy="680" fill="#A9DCDF" rx="11" ry="11" style="stroke:#181818;stroke-width:1"/><path fill="#000" d="M819.4375,681.7656 L815.2969,681.7656 L814.875,682.7969 L815.2969,682.7969 Q815.9063,682.7969 816.1719,683.0313 Q816.4375,683.2656 816.4375,683.6563 Q816.4375,684.0313 816.1719,684.2656 Q815.9063,684.5 815.2969,684.5 L813,684.5 Q812.3906,684.5 812.1406,684.2656 Q811.875,684.0313 811.875,683.6406 Q811.875,683.2656 812.1563,683.0313 Q812.4219,682.7813 813.0469,682.7969 L815.7188,676.1406 L814.6094,676.1406 Q814,676.1406 813.7344,675.9063 Q813.4688,675.6719 813.4688,675.2813 Q813.4688,674.9063 813.7344,674.6719 Q814,674.4375 814.6094,674.4375 L818.2813,674.4375 L821.6719,682.7969 Q822.2656,682.7969 822.4531,682.9375 Q822.8438,683.2031 822.8438,683.6563 Q822.8438,684.0313 822.5781,684.2656 Q822.3281,684.5 821.7188,684.5 L819.4219,684.5 Q818.8125,684.5 818.5469,684.2656 Q818.2813,684.0313 818.2813,683.6406 Q818.2813,683.2656 818.5469,683.0313 Q818.8125,682.7969 819.4219,682.7969 L819.8438,682.7969 L819.4375,681.7656 Z M818.7188,680.0625 L817.3594,676.6875 L815.9844,680.0625 L818.7188,680.0625 Z"/><text x="837.75" y="685.797" fill="#000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="72">InsertPatch</text><line style="stroke:#181818;stroke-width:.5" x1="732" x2="983" y1="696" y2="696"/><ellipse cx="742" cy="710.811" fill="none" rx="3" ry="3" style="stroke:#038048;stroke-width:1"/><text x="751" y="715.107" fill="#000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="51">string Id</text><ellipse cx="742" cy="729.432" fill="none" rx="3" ry="3" style="stroke:#038048;stroke-width:1"/><text x="751" y="733.729" fill="#000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="69">int Position</text><line style="stroke:#181818;stroke-width:.5" x1="732" x2="983" y1="741.242" y2="741.242"/><ellipse cx="742" cy="756.053" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1"/><text x="751" y="760.35" fill="#000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="227">XmlDocument GetPrefabExtension()</text></g><g id="elem_PrefabExtensionInsertAsSiblingPatch"><rect id="PrefabExtensionInsertAsSiblingPatch" width="265" height="103.863" x="1019" y="664" fill="#F1F1F1" codeLine="34" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:.5"/><ellipse cx="1034" cy="680" fill="#A9DCDF" rx="11" ry="11" style="stroke:#181818;stroke-width:1"/><path fill="#000" d="M1036.1875,681.7656 L1032.0469,681.7656 L1031.625,682.7969 L1032.0469,682.7969 Q1032.6563,682.7969 1032.9219,683.0313 Q1033.1875,683.2656 1033.1875,683.6563 Q1033.1875,684.0313 1032.9219,684.2656 Q1032.6563,684.5 1032.0469,684.5 L1029.75,684.5 Q1029.1406,684.5 1028.8906,684.2656 Q1028.625,684.0313 1028.625,683.6406 Q1028.625,683.2656 1028.9063,683.0313 Q1029.1719,682.7813 1029.7969,682.7969 L1032.4688,676.1406 L1031.3594,676.1406 Q1030.75,676.1406 1030.4844,675.9063 Q1030.2188,675.6719 1030.2188,675.2813 Q1030.2188,674.9063 1030.4844,674.6719 Q1030.75,674.4375 1031.3594,674.4375 L1035.0313,674.4375 L1038.4219,682.7969 Q1039.0156,682.7969 1039.2031,682.9375 Q1039.5938,683.2031 1039.5938,683.6563 Q1039.5938,684.0313 1039.3281,684.2656 Q1039.0781,684.5 1038.4688,684.5 L1036.1719,684.5 Q1035.5625,684.5 1035.2969,684.2656 Q1035.0313,684.0313 1035.0313,683.6406 Q1035.0313,683.2656 1035.2969,683.0313 Q1035.5625,682.7969 1036.1719,682.7969 L1036.5938,682.7969 L1036.1875,681.7656 Z M1035.4688,680.0625 L1034.1094,676.6875 L1032.7344,680.0625 L1035.4688,680.0625 Z"/><text x="1048" y="685.797" fill="#000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="233">PrefabExtensionInsertAsSiblingPatch</text><line style="stroke:#181818;stroke-width:.5" x1="1020" x2="1283" y1="696" y2="696"/><ellipse cx="1030" cy="710.811" fill="none" rx="3" ry="3" style="stroke:#038048;stroke-width:1"/><text x="1039" y="715.107" fill="#000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="51">string Id</text><ellipse cx="1030" cy="729.432" fill="none" rx="3" ry="3" style="stroke:#038048;stroke-width:1"/><text x="1039" y="733.729" fill="#000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="104">InsertType Type</text><line style="stroke:#181818;stroke-width:.5" x1="1020" x2="1283" y1="741.242" y2="741.242"/><ellipse cx="1030" cy="756.053" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1"/><text x="1039" y="760.35" fill="#000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="227">XmlDocument GetPrefabExtension()</text></g><g id="elem_PrefabExtensionReplacePatch"><rect id="PrefabExtensionReplacePatch" width="253" height="85.242" x="1319" y="673.5" fill="#F1F1F1" codeLine="39" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:.5"/><ellipse cx="1347.5" cy="689.5" fill="#A9DCDF" rx="11" ry="11" style="stroke:#181818;stroke-width:1"/><path fill="#000" d="M1349.6875,691.2656 L1345.5469,691.2656 L1345.125,692.2969 L1345.5469,692.2969 Q1346.1563,692.2969 1346.4219,692.5313 Q1346.6875,692.7656 1346.6875,693.1563 Q1346.6875,693.5313 1346.4219,693.7656 Q1346.1563,694 1345.5469,694 L1343.25,694 Q1342.6406,694 1342.3906,693.7656 Q1342.125,693.5313 1342.125,693.1406 Q1342.125,692.7656 1342.4063,692.5313 Q1342.6719,692.2813 1343.2969,692.2969 L1345.9688,685.6406 L1344.8594,685.6406 Q1344.25,685.6406 1343.9844,685.4063 Q1343.7188,685.1719 1343.7188,684.7813 Q1343.7188,684.4063 1343.9844,684.1719 Q1344.25,683.9375 1344.8594,683.9375 L1348.5313,683.9375 L1351.9219,692.2969 Q1352.5156,692.2969 1352.7031,692.4375 Q1353.0938,692.7031 1353.0938,693.1563 Q1353.0938,693.5313 1352.8281,693.7656 Q1352.5781,694 1351.9688,694 L1349.6719,694 Q1349.0625,694 1348.7969,693.7656 Q1348.5313,693.5313 1348.5313,693.1406 Q1348.5313,692.7656 1348.7969,692.5313 Q1349.0625,692.2969 1349.6719,692.2969 L1350.0938,692.2969 L1349.6875,691.2656 Z M1348.9688,689.5625 L1347.6094,686.1875 L1346.2344,689.5625 L1348.9688,689.5625 Z"/><text x="1364.5" y="695.297" fill="#000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="191">PrefabExtensionReplacePatch</text><line style="stroke:#181818;stroke-width:.5" x1="1320" x2="1571" y1="705.5" y2="705.5"/><ellipse cx="1330" cy="720.311" fill="none" rx="3" ry="3" style="stroke:#038048;stroke-width:1"/><text x="1339" y="724.607" fill="#000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="51">string Id</text><line style="stroke:#181818;stroke-width:.5" x1="1320" x2="1571" y1="732.121" y2="732.121"/><ellipse cx="1330" cy="746.932" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1"/><text x="1339" y="751.229" fill="#000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="227">XmlDocument GetPrefabExtension()</text></g><g id="elem_PrefabExtensionSetAttributePatch"><rect id="PrefabExtensionSetAttributePatch" width="245" height="103.863" x="1607" y="664" fill="#F1F1F1" codeLine="43" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:.5"/><ellipse cx="1622" cy="680" fill="#A9DCDF" rx="11" ry="11" style="stroke:#181818;stroke-width:1"/><path fill="#000" d="M1624.1875,681.7656 L1620.0469,681.7656 L1619.625,682.7969 L1620.0469,682.7969 Q1620.6563,682.7969 1620.9219,683.0313 Q1621.1875,683.2656 1621.1875,683.6563 Q1621.1875,684.0313 1620.9219,684.2656 Q1620.6563,684.5 1620.0469,684.5 L1617.75,684.5 Q1617.1406,684.5 1616.8906,684.2656 Q1616.625,684.0313 1616.625,683.6406 Q1616.625,683.2656 1616.9063,683.0313 Q1617.1719,682.7813 1617.7969,682.7969 L1620.4688,676.1406 L1619.3594,676.1406 Q1618.75,676.1406 1618.4844,675.9063 Q1618.2188,675.6719 1618.2188,675.2813 Q1618.2188,674.9063 1618.4844,674.6719 Q1618.75,674.4375 1619.3594,674.4375 L1623.0313,674.4375 L1626.4219,682.7969 Q1627.0156,682.7969 1627.2031,682.9375 Q1627.5938,683.2031 1627.5938,683.6563 Q1627.5938,684.0313 1627.3281,684.2656 Q1627.0781,684.5 1626.4688,684.5 L1624.1719,684.5 Q1623.5625,684.5 1623.2969,684.2656 Q1623.0313,684.0313 1623.0313,683.6406 Q1623.0313,683.2656 1623.2969,683.0313 Q1623.5625,682.7969 1624.1719,682.7969 L1624.5938,682.7969 L1624.1875,681.7656 Z M1623.4688,680.0625 L1622.1094,676.6875 L1620.7344,680.0625 L1623.4688,680.0625 Z"/><text x="1636" y="685.797" fill="#000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="213">PrefabExtensionSetAttributePatch</text><line style="stroke:#181818;stroke-width:.5" x1="1608" x2="1851" y1="696" y2="696"/><ellipse cx="1618" cy="710.811" fill="none" rx="3" ry="3" style="stroke:#038048;stroke-width:1"/><text x="1627" y="715.107" fill="#000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="51">string Id</text><ellipse cx="1618" cy="729.432" fill="none" rx="3" ry="3" style="stroke:#038048;stroke-width:1"/><text x="1627" y="733.729" fill="#000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="92">string Attribute</text><ellipse cx="1618" cy="748.053" fill="none" rx="3" ry="3" style="stroke:#038048;stroke-width:1"/><text x="1627" y="752.35" fill="#000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="75">string Value</text><line style="stroke:#181818;stroke-width:.5" x1="1608" x2="1851" y1="759.863" y2="759.863"/></g><g id="elem_IPrefabPatch"><rect id="IPrefabPatch" width="114" height="66.621" x="1094.5" y="894" fill="#F1F1F1" codeLine="48" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:.5"/><ellipse cx="1109.5" cy="910" fill="#B4A7E5" rx="11" ry="11" style="stroke:#181818;stroke-width:1"/><path fill="#000" d="M1110.4531,906.6406 L1110.4531,913.2969 L1112.1719,913.2969 Q1112.7813,913.2969 1113.0469,913.5313 Q1113.3125,913.7656 1113.3125,914.1563 Q1113.3125,914.5313 1113.0469,914.7656 Q1112.7813,915 1112.1719,915 L1107.0313,915 Q1106.4219,915 1106.1563,914.7656 Q1105.8906,914.5313 1105.8906,914.1406 Q1105.8906,913.7656 1106.1563,913.5313 Q1106.4219,913.2969 1107.0313,913.2969 L1108.75,913.2969 L1108.75,906.6406 L1107.0313,906.6406 Q1106.4219,906.6406 1106.1563,906.4063 Q1105.8906,906.1719 1105.8906,905.7813 Q1105.8906,905.4063 1106.1563,905.1719 Q1106.4219,904.9375 1107.0313,904.9375 L1112.1719,904.9375 Q1112.7813,904.9375 1113.0469,905.1719 Q1113.3125,905.4063 1113.3125,905.7813 Q1113.3125,906.1719 1113.0469,906.4063 Q1112.7813,906.6406 1112.1719,906.6406 L1110.4531,906.6406 Z"/><text x="1123.5" y="915.797" fill="#000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="82">IPrefabPatch</text><line style="stroke:#181818;stroke-width:.5" x1="1095.5" x2="1207.5" y1="926" y2="926"/><ellipse cx="1105.5" cy="940.811" fill="none" rx="3" ry="3" style="stroke:#038048;stroke-width:1"/><text x="1114.5" y="945.107" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="50">string Id</text><line style="stroke:#181818;stroke-width:.5" x1="1095.5" x2="1207.5" y1="952.621" y2="952.621"/></g><g id="elem_MyVMMixin"><rect id="MyVMMixin" width="118" height="66.621" x="831.5" y="480" fill="#F1F1F1" codeLine="5" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:.5"/><ellipse cx="854.15" cy="496" fill="#ADD1B2" rx="11" ry="11" style="stroke:#181818;stroke-width:1"/><path fill="#000" d="M856.9156,491.875 Q857.0719,491.6563 857.2594,491.5469 Q857.4469,491.4375 857.6656,491.4375 Q858.0406,491.4375 858.275,491.7031 Q858.5094,491.9531 858.5094,492.5625 L858.5094,494.0156 Q858.5094,494.625 858.275,494.8906 Q858.0406,495.1563 857.6656,495.1563 Q857.3219,495.1563 857.1188,494.9531 Q856.9156,494.7656 856.8063,494.25 Q856.7594,493.8906 856.5719,493.7031 Q856.2438,493.3281 855.6344,493.1094 Q855.025,492.8906 854.4,492.8906 Q853.6344,492.8906 852.9938,493.2188 Q852.3688,493.5469 851.8688,494.2969 Q851.3844,495.0469 851.3844,496.0781 L851.3844,497.1719 Q851.3844,498.4063 852.275,499.2344 Q853.1656,500.0469 854.7594,500.0469 Q855.6969,500.0469 856.3531,499.7969 Q856.7438,499.6406 857.1656,499.2031 Q857.4313,498.9375 857.5719,498.8594 Q857.7281,498.7813 857.9313,498.7813 Q858.2594,498.7813 858.5094,499.0469 Q858.775,499.2969 858.775,499.6406 Q858.775,499.9844 858.4313,500.3906 Q857.9313,500.9688 857.1344,501.2969 Q856.0563,501.75 854.7594,501.75 Q853.2438,501.75 852.0406,501.125 Q851.0563,500.625 850.3688,499.5625 Q849.6813,498.4844 849.6813,497.2031 L849.6813,496.0469 Q849.6813,494.7188 850.2906,493.5781 Q850.9156,492.4219 852.0094,491.8125 Q853.1031,491.1875 854.3375,491.1875 Q855.0719,491.1875 855.7125,491.3594 Q856.3688,491.5156 856.9156,491.875 Z"/><text x="869.85" y="501.797" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="69">MyVMMixin</text><line style="stroke:#181818;stroke-width:.5" x1="832.5" x2="948.5" y1="512" y2="512"/><text x="837.5" y="531.107" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="106">[ViewModelMixin]</text><line style="stroke:#181818;stroke-width:.5" x1="832.5" x2="948.5" y1="538.621" y2="538.621"/></g><g id="elem_BaseViewModelMixin"><rect id="BaseViewModelMixin" width="519" height="215.59" x="9" y="608" fill="#F1F1F1" codeLine="8" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:.5"/><ellipse cx="163.25" cy="624" fill="#A9DCDF" rx="11" ry="11" style="stroke:#181818;stroke-width:1"/><path fill="#000" d="M165.4375,625.7656 L161.2969,625.7656 L160.875,626.7969 L161.2969,626.7969 Q161.9063,626.7969 162.1719,627.0313 Q162.4375,627.2656 162.4375,627.6563 Q162.4375,628.0313 162.1719,628.2656 Q161.9063,628.5 161.2969,628.5 L159,628.5 Q158.3906,628.5 158.1406,628.2656 Q157.875,628.0313 157.875,627.6406 Q157.875,627.2656 158.1563,627.0313 Q158.4219,626.7813 159.0469,626.7969 L161.7188,620.1406 L160.6094,620.1406 Q160,620.1406 159.7344,619.9063 Q159.4688,619.6719 159.4688,619.2813 Q159.4688,618.9063 159.7344,618.6719 Q160,618.4375 160.6094,618.4375 L164.2813,618.4375 L167.6719,626.7969 Q168.2656,626.7969 168.4531,626.9375 Q168.8438,627.2031 168.8438,627.6563 Q168.8438,628.0313 168.5781,628.2656 Q168.3281,628.5 167.7188,628.5 L165.4219,628.5 Q164.8125,628.5 164.5469,628.2656 Q164.2813,628.0313 164.2813,627.6406 Q164.2813,627.2656 164.5469,627.0313 Q164.8125,626.7969 165.4219,626.7969 L165.8438,626.7969 L165.4375,625.7656 Z M164.7188,624.0625 L163.3594,620.6875 L161.9844,624.0625 L164.7188,624.0625 Z"/><text x="183.75" y="629.797" fill="#000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="132">BaseViewModelMixin</text><rect width="68" height="17.961" x="463" fill="#FFF" style="stroke:#181818;stroke-width:1;stroke-dasharray:2,2" y="605"/><text x="464" y="618.949" fill="#000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="66">TViewModel</text><line style="stroke:#181818;stroke-width:.5" x1="10" x2="527" y1="640" y2="640"/><polygon fill="none" points="20 649.811 24 653.811 20 657.811 16 653.811" style="stroke:#b38d22;stroke-width:1"/><text x="29" y="659.107" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="155">TViewModel? ViewModel</text><line style="stroke:#181818;stroke-width:.5" x1="10" x2="527" y1="666.621" y2="666.621"/><ellipse cx="20" cy="681.432" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1"/><text x="29" y="685.729" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="238">BaseViewModelMixin(TViewModel vm)</text><ellipse cx="20" cy="700.053" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1"/><text x="29" y="704.35" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="109">void OnRefresh()</text><ellipse cx="20" cy="718.674" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1"/><text x="29" y="722.971" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="107">void OnFinalize()</text><polygon fill="#FF4" points="20 732.295 24 736.295 20 740.295 16 736.295" style="stroke:#b38d22;stroke-width:1"/><text x="29" y="741.592" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="345">void OnPropertyChanged(string? propertyName = null)</text><polygon fill="#FF4" points="20 750.916 24 754.916 20 758.916 16 754.916" style="stroke:#b38d22;stroke-width:1"/><text x="29" y="760.213" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="493">void OnPropertyChangedWithValue(object value, string? propertyName = null)</text><polygon fill="#FF4" points="20 769.537 24 773.537 20 777.537 16 773.537" style="stroke:#b38d22;stroke-width:1"/><text x="29" y="778.834" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="269">TValue? GetPrivate&lt;TValue&gt;(string name)</text><polygon fill="#FF4" points="20 788.158 24 792.158 20 796.158 16 792.158" style="stroke:#b38d22;stroke-width:1"/><text x="29" y="797.455" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="339">void SetPrivate&lt;TValue&gt;(string name, TValue? value)</text><polygon fill="#FF4" points="20 806.779 24 810.779 20 814.779 16 810.779" style="stroke:#b38d22;stroke-width:1"/><text x="29" y="816.076" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="369">bool SetField&lt;T&gt;(ref T field, T value, string propertyName)</text></g><g id="elem_IViewModel"><rect id="IViewModel" width="135" height="85.242" x="201" y="885" fill="#F1F1F1" codeLine="19" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:.5"/><ellipse cx="229.95" cy="901" fill="#B4A7E5" rx="11" ry="11" style="stroke:#181818;stroke-width:1"/><path fill="#000" d="M230.9031,897.6406 L230.9031,904.2969 L232.6219,904.2969 Q233.2313,904.2969 233.4969,904.5313 Q233.7625,904.7656 233.7625,905.1563 Q233.7625,905.5313 233.4969,905.7656 Q233.2313,906 232.6219,906 L227.4813,906 Q226.8719,906 226.6063,905.7656 Q226.3406,905.5313 226.3406,905.1406 Q226.3406,904.7656 226.6063,904.5313 Q226.8719,904.2969 227.4813,904.2969 L229.2,904.2969 L229.2,897.6406 L227.4813,897.6406 Q226.8719,897.6406 226.6063,897.4063 Q226.3406,897.1719 226.3406,896.7813 Q226.3406,896.4063 226.6063,896.1719 Q226.8719,895.9375 227.4813,895.9375 L232.6219,895.9375 Q233.2313,895.9375 233.4969,896.1719 Q233.7625,896.4063 233.7625,896.7813 Q233.7625,897.1719 233.4969,897.4063 Q233.2313,897.6406 232.6219,897.6406 L230.9031,897.6406 Z"/><text x="247.05" y="906.797" fill="#000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="72">IViewModel</text><line style="stroke:#181818;stroke-width:.5" x1="202" x2="335" y1="917" y2="917"/><line style="stroke:#181818;stroke-width:.5" x1="202" x2="335" y1="925" y2="925"/><ellipse cx="212" cy="939.811" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1"/><text x="221" y="944.107" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="109">void OnRefresh()</text><ellipse cx="212" cy="958.432" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1"/><text x="221" y="962.729" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="107">void OnFinalize()</text></g><g id="elem_MyPrefabComponent"><rect id="MyPrefabComponent" width="235" height="66.621" x="1181" y="480" fill="#F1F1F1" codeLine="15" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:.5"/><ellipse cx="1227.75" cy="496" fill="#ADD1B2" rx="11" ry="11" style="stroke:#181818;stroke-width:1"/><path fill="#000" d="M1230.5156,491.875 Q1230.6719,491.6563 1230.8594,491.5469 Q1231.0469,491.4375 1231.2656,491.4375 Q1231.6406,491.4375 1231.875,491.7031 Q1232.1094,491.9531 1232.1094,492.5625 L1232.1094,494.0156 Q1232.1094,494.625 1231.875,494.8906 Q1231.6406,495.1563 1231.2656,495.1563 Q1230.9219,495.1563 1230.7188,494.9531 Q1230.5156,494.7656 1230.4063,494.25 Q1230.3594,493.8906 1230.1719,493.7031 Q1229.8438,493.3281 1229.2344,493.1094 Q1228.625,492.8906 1228,492.8906 Q1227.2344,492.8906 1226.5938,493.2188 Q1225.9688,493.5469 1225.4688,494.2969 Q1224.9844,495.0469 1224.9844,496.0781 L1224.9844,497.1719 Q1224.9844,498.4063 1225.875,499.2344 Q1226.7656,500.0469 1228.3594,500.0469 Q1229.2969,500.0469 1229.9531,499.7969 Q1230.3438,499.6406 1230.7656,499.2031 Q1231.0313,498.9375 1231.1719,498.8594 Q1231.3281,498.7813 1231.5313,498.7813 Q1231.8594,498.7813 1232.1094,499.0469 Q1232.375,499.2969 1232.375,499.6406 Q1232.375,499.9844 1232.0313,500.3906 Q1231.5313,500.9688 1230.7344,501.2969 Q1229.6563,501.75 1228.3594,501.75 Q1226.8438,501.75 1225.6406,501.125 Q1224.6563,500.625 1223.9688,499.5625 Q1223.2813,498.4844 1223.2813,497.2031 L1223.2813,496.0469 Q1223.2813,494.7188 1223.8906,493.5781 Q1224.5156,492.4219 1225.6094,491.8125 Q1226.7031,491.1875 1227.9375,491.1875 Q1228.6719,491.1875 1229.3125,491.3594 Q1229.9688,491.5156 1230.5156,491.875 Z"/><text x="1248.25" y="501.797" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="133">MyPrefabComponent</text><line style="stroke:#181818;stroke-width:.5" x1="1182" x2="1415" y1="512" y2="512"/><line style="stroke:#181818;stroke-width:.5" x1="1182" x2="1415" y1="520" y2="520"/><text x="1187" y="539.107" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="223">[PrefabExtension(&quot;Movie&quot;, &quot;XPath&quot;)]</text></g><g id="elem_SubModule"><rect id="SubModule" width="404" height="66.621" x="797.5" y="7" fill="#F1F1F1" codeLine="13" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:.5"/><ellipse cx="959.75" cy="23" fill="#ADD1B2" rx="11" ry="11" style="stroke:#181818;stroke-width:1"/><path fill="#000" d="M962.5156,18.875 Q962.6719,18.6563 962.8594,18.5469 Q963.0469,18.4375 963.2656,18.4375 Q963.6406,18.4375 963.875,18.7031 Q964.1094,18.9531 964.1094,19.5625 L964.1094,21.0156 Q964.1094,21.625 963.875,21.8906 Q963.6406,22.1563 963.2656,22.1563 Q962.9219,22.1563 962.7188,21.9531 Q962.5156,21.7656 962.4063,21.25 Q962.3594,20.8906 962.1719,20.7031 Q961.8438,20.3281 961.2344,20.1094 Q960.625,19.8906 960,19.8906 Q959.2344,19.8906 958.5938,20.2188 Q957.9688,20.5469 957.4688,21.2969 Q956.9844,22.0469 956.9844,23.0781 L956.9844,24.1719 Q956.9844,25.4063 957.875,26.2344 Q958.7656,27.0469 960.3594,27.0469 Q961.2969,27.0469 961.9531,26.7969 Q962.3438,26.6406 962.7656,26.2031 Q963.0313,25.9375 963.1719,25.8594 Q963.3281,25.7813 963.5313,25.7813 Q963.8594,25.7813 964.1094,26.0469 Q964.375,26.2969 964.375,26.6406 Q964.375,26.9844 964.0313,27.3906 Q963.5313,27.9688 962.7344,28.2969 Q961.6563,28.75 960.3594,28.75 Q958.8438,28.75 957.6406,28.125 Q956.6563,27.625 955.9688,26.5625 Q955.2813,25.4844 955.2813,24.2031 L955.2813,23.0469 Q955.2813,21.7188 955.8906,20.5781 Q956.5156,19.4219 957.6094,18.8125 Q958.7031,18.1875 959.9375,18.1875 Q960.6719,18.1875 961.3125,18.3594 Q961.9688,18.5156 962.5156,18.875 Z"/><text x="980.25" y="28.797" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="71">SubModule</text><line style="stroke:#181818;stroke-width:.5" x1="798.5" x2="1200.5" y1="39" y2="39"/><line style="stroke:#181818;stroke-width:.5" x1="798.5" x2="1200.5" y1="47" y2="47"/><text x="803.5" y="66.107" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="392">UIExtenderEx _uiExtenderEx = UIExtenderEx.Create(&quot;MyMod&quot;);</text></g><g id="elem_UIExtenderEx"><rect id="UIExtenderEx" width="115" height="48" x="942" y="135" fill="#F1F1F1" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:.5"/><ellipse cx="957" cy="151" fill="#ADD1B2" rx="11" ry="11" style="stroke:#181818;stroke-width:1"/><path fill="#000" d="M959.7656,146.875 Q959.9219,146.6563 960.1094,146.5469 Q960.2969,146.4375 960.5156,146.4375 Q960.8906,146.4375 961.125,146.7031 Q961.3594,146.9531 961.3594,147.5625 L961.3594,149.0156 Q961.3594,149.625 961.125,149.8906 Q960.8906,150.1563 960.5156,150.1563 Q960.1719,150.1563 959.9688,149.9531 Q959.7656,149.7656 959.6563,149.25 Q959.6094,148.8906 959.4219,148.7031 Q959.0938,148.3281 958.4844,148.1094 Q957.875,147.8906 957.25,147.8906 Q956.4844,147.8906 955.8438,148.2188 Q955.2188,148.5469 954.7188,149.2969 Q954.2344,150.0469 954.2344,151.0781 L954.2344,152.1719 Q954.2344,153.4063 955.125,154.2344 Q956.0156,155.0469 957.6094,155.0469 Q958.5469,155.0469 959.2031,154.7969 Q959.5938,154.6406 960.0156,154.2031 Q960.2813,153.9375 960.4219,153.8594 Q960.5781,153.7813 960.7813,153.7813 Q961.1094,153.7813 961.3594,154.0469 Q961.625,154.2969 961.625,154.6406 Q961.625,154.9844 961.2813,155.3906 Q960.7813,155.9688 959.9844,156.2969 Q958.9063,156.75 957.6094,156.75 Q956.0938,156.75 954.8906,156.125 Q953.9063,155.625 953.2188,154.5625 Q952.5313,153.4844 952.5313,152.2031 L952.5313,151.0469 Q952.5313,149.7188 953.1406,148.5781 Q953.7656,147.4219 954.8594,146.8125 Q955.9531,146.1875 957.1875,146.1875 Q957.9219,146.1875 958.5625,146.3594 Q959.2188,146.5156 959.7656,146.875 Z"/><text x="971" y="156.797" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="83">UIExtenderEx</text><line style="stroke:#181818;stroke-width:.5" x1="943" x2="1056" y1="167" y2="167"/><line style="stroke:#181818;stroke-width:.5" x1="943" x2="1056" y1="175" y2="175"/></g><g id="elem_UIExtenderExRuntime"><rect id="UIExtenderExRuntime" width="167" height="48" x="916" y="244" fill="#F1F1F1" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:.5"/><ellipse cx="931" cy="260" fill="#ADD1B2" rx="11" ry="11" style="stroke:#181818;stroke-width:1"/><path fill="#000" d="M933.7656,255.875 Q933.9219,255.6563 934.1094,255.5469 Q934.2969,255.4375 934.5156,255.4375 Q934.8906,255.4375 935.125,255.7031 Q935.3594,255.9531 935.3594,256.5625 L935.3594,258.0156 Q935.3594,258.625 935.125,258.8906 Q934.8906,259.1563 934.5156,259.1563 Q934.1719,259.1563 933.9688,258.9531 Q933.7656,258.7656 933.6563,258.25 Q933.6094,257.8906 933.4219,257.7031 Q933.0938,257.3281 932.4844,257.1094 Q931.875,256.8906 931.25,256.8906 Q930.4844,256.8906 929.8438,257.2188 Q929.2188,257.5469 928.7188,258.2969 Q928.2344,259.0469 928.2344,260.0781 L928.2344,261.1719 Q928.2344,262.4063 929.125,263.2344 Q930.0156,264.0469 931.6094,264.0469 Q932.5469,264.0469 933.2031,263.7969 Q933.5938,263.6406 934.0156,263.2031 Q934.2813,262.9375 934.4219,262.8594 Q934.5781,262.7813 934.7813,262.7813 Q935.1094,262.7813 935.3594,263.0469 Q935.625,263.2969 935.625,263.6406 Q935.625,263.9844 935.2813,264.3906 Q934.7813,264.9688 933.9844,265.2969 Q932.9063,265.75 931.6094,265.75 Q930.0938,265.75 928.8906,265.125 Q927.9063,264.625 927.2188,263.5625 Q926.5313,262.4844 926.5313,261.2031 L926.5313,260.0469 Q926.5313,258.7188 927.1406,257.5781 Q927.7656,256.4219 928.8594,255.8125 Q929.9531,255.1875 931.1875,255.1875 Q931.9219,255.1875 932.5625,255.3594 Q933.2188,255.5156 933.7656,255.875 Z"/><text x="945" y="265.797" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="135">UIExtenderExRuntime</text><line style="stroke:#181818;stroke-width:.5" x1="917" x2="1082" y1="276" y2="276"/><line style="stroke:#181818;stroke-width:.5" x1="917" x2="1082" y1="284" y2="284"/></g><g id="elem_ViewModelComponent"><rect id="ViewModelComponent" width="172" height="48" x="816.5" y="353" fill="#F1F1F1" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:.5"/><ellipse cx="831.5" cy="369" fill="#ADD1B2" rx="11" ry="11" style="stroke:#181818;stroke-width:1"/><path fill="#000" d="M834.2656,364.875 Q834.4219,364.6563 834.6094,364.5469 Q834.7969,364.4375 835.0156,364.4375 Q835.3906,364.4375 835.625,364.7031 Q835.8594,364.9531 835.8594,365.5625 L835.8594,367.0156 Q835.8594,367.625 835.625,367.8906 Q835.3906,368.1563 835.0156,368.1563 Q834.6719,368.1563 834.4688,367.9531 Q834.2656,367.7656 834.1563,367.25 Q834.1094,366.8906 833.9219,366.7031 Q833.5938,366.3281 832.9844,366.1094 Q832.375,365.8906 831.75,365.8906 Q830.9844,365.8906 830.3438,366.2188 Q829.7188,366.5469 829.2188,367.2969 Q828.7344,368.0469 828.7344,369.0781 L828.7344,370.1719 Q828.7344,371.4063 829.625,372.2344 Q830.5156,373.0469 832.1094,373.0469 Q833.0469,373.0469 833.7031,372.7969 Q834.0938,372.6406 834.5156,372.2031 Q834.7813,371.9375 834.9219,371.8594 Q835.0781,371.7813 835.2813,371.7813 Q835.6094,371.7813 835.8594,372.0469 Q836.125,372.2969 836.125,372.6406 Q836.125,372.9844 835.7813,373.3906 Q835.2813,373.9688 834.4844,374.2969 Q833.4063,374.75 832.1094,374.75 Q830.5938,374.75 829.3906,374.125 Q828.4063,373.625 827.7188,372.5625 Q827.0313,371.4844 827.0313,370.2031 L827.0313,369.0469 Q827.0313,367.7188 827.6406,366.5781 Q828.2656,365.4219 829.3594,364.8125 Q830.4531,364.1875 831.6875,364.1875 Q832.4219,364.1875 833.0625,364.3594 Q833.7188,364.5156 834.2656,364.875 Z"/><text x="845.5" y="374.797" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="140">ViewModelComponent</text><line style="stroke:#181818;stroke-width:.5" x1="817.5" x2="987.5" y1="385" y2="385"/><line style="stroke:#181818;stroke-width:.5" x1="817.5" x2="987.5" y1="393" y2="393"/></g><g id="elem_PrefabComponent"><rect id="PrefabComponent" width="147" height="48" x="1026" y="353" fill="#F1F1F1" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:.5"/><ellipse cx="1041" cy="369" fill="#ADD1B2" rx="11" ry="11" style="stroke:#181818;stroke-width:1"/><path fill="#000" d="M1043.7656,364.875 Q1043.9219,364.6563 1044.1094,364.5469 Q1044.2969,364.4375 1044.5156,364.4375 Q1044.8906,364.4375 1045.125,364.7031 Q1045.3594,364.9531 1045.3594,365.5625 L1045.3594,367.0156 Q1045.3594,367.625 1045.125,367.8906 Q1044.8906,368.1563 1044.5156,368.1563 Q1044.1719,368.1563 1043.9688,367.9531 Q1043.7656,367.7656 1043.6563,367.25 Q1043.6094,366.8906 1043.4219,366.7031 Q1043.0938,366.3281 1042.4844,366.1094 Q1041.875,365.8906 1041.25,365.8906 Q1040.4844,365.8906 1039.8438,366.2188 Q1039.2188,366.5469 1038.7188,367.2969 Q1038.2344,368.0469 1038.2344,369.0781 L1038.2344,370.1719 Q1038.2344,371.4063 1039.125,372.2344 Q1040.0156,373.0469 1041.6094,373.0469 Q1042.5469,373.0469 1043.2031,372.7969 Q1043.5938,372.6406 1044.0156,372.2031 Q1044.2813,371.9375 1044.4219,371.8594 Q1044.5781,371.7813 1044.7813,371.7813 Q1045.1094,371.7813 1045.3594,372.0469 Q1045.625,372.2969 1045.625,372.6406 Q1045.625,372.9844 1045.2813,373.3906 Q1044.7813,373.9688 1043.9844,374.2969 Q1042.9063,374.75 1041.6094,374.75 Q1040.0938,374.75 1038.8906,374.125 Q1037.9063,373.625 1037.2188,372.5625 Q1036.5313,371.4844 1036.5313,370.2031 L1036.5313,369.0469 Q1036.5313,367.7188 1037.1406,366.5781 Q1037.7656,365.4219 1038.8594,364.8125 Q1039.9531,364.1875 1041.1875,364.1875 Q1041.9219,364.1875 1042.5625,364.3594 Q1043.2188,364.5156 1043.7656,364.875 Z"/><text x="1055" y="374.797" fill="#000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="115">PrefabComponent</text><line style="stroke:#181818;stroke-width:.5" x1="1027" x2="1172" y1="385" y2="385"/><line style="stroke:#181818;stroke-width:.5" x1="1027" x2="1172" y1="393" y2="393"/></g><g id="link_MyVMMixin_BaseViewModelMixin"><path id="MyVMMixin-to-BaseViewModelMixin" fill="none" d="M831.4,528.7 C762.62,545.66 645.91,575.81 547.5,608 C541.09,610.1 545.9749,608.4078 539.4549,610.6178" codeLine="2" style="stroke:#181818;stroke-width:1"/><polygon fill="#181818" points="528.09 614.47 535.057 616.332 539.455 610.618 532.488 608.756 528.09 614.47" style="stroke:#181818;stroke-width:1"/></g><g id="link_BaseViewModelMixin_IViewModel"><path id="BaseViewModelMixin-to-IViewModel" fill="none" d="M268.5,824.2 C268.5,845.75 268.5,855.15 268.5,872.77" codeLine="3" style="stroke:#181818;stroke-width:1"/><polygon fill="#181818" points="268.5 884.77 272.5 878.77 268.5 872.77 264.5 878.77 268.5 884.77" style="stroke:#181818;stroke-width:1"/></g><g id="link_MyPrefabComponent_PrefabExtensionInsertPatch"><path id="MyPrefabComponent-to-PrefabExtensionInsertPatch" fill="none" d="M1416.24,518.29 C1622.3,526.37 2039.01,549.56 2171.5,608 C2204.85,622.71 2227.2929,641.3531 2249.4129,664.7331" codeLine="2" style="stroke:#181818;stroke-width:1"/><polygon fill="#181818" points="2257.66 673.45 2256.442 666.342 2249.413 664.733 2250.631 671.841 2257.66 673.45" style="stroke:#181818;stroke-width:1"/></g><g id="link_MyPrefabComponent_PrefabExtensionSetAttributePatch"><path id="MyPrefabComponent-to-PrefabExtensionSetAttributePatch" fill="none" d="M1416.06,519.52 C1534.02,527.8 1719.13,549.76 1868.5,608 C1914.39,625.89 1951.2829,650.6619 1982.7729,675.0519" codeLine="3" style="stroke:#181818;stroke-width:1"/><polygon fill="#181818" points="1992.26 682.4 1989.966 675.564 1982.773 675.052 1985.067 681.888 1992.26 682.4" style="stroke:#181818;stroke-width:1"/></g><g id="link_MyPrefabComponent_CustomPatch"><path id="MyPrefabComponent-to-CustomPatch" fill="none" d="M1181,528.62 C1021.87,548.45 753.06,584.72 713.5,608 C687.34,623.39 672.6804,640.1394 658.1904,663.1194" codeLine="4" style="stroke:#181818;stroke-width:1"/><polygon fill="#181818" points="651.79 673.27 658.374 670.328 658.19 663.119 651.607 666.061 651.79 673.27" style="stroke:#181818;stroke-width:1"/></g><g id="link_MyPrefabComponent_InsertPatch"><path id="MyPrefabComponent-to-InsertPatch" fill="none" d="M1180.73,541.83 C1124.71,557.24 1057.83,579.24 1001.5,608 C971.82,623.15 951.234,636.9265 926.334,656.4465" codeLine="5" style="stroke:#181818;stroke-width:1"/><polygon fill="#181818" points="916.89 663.85 924.08 663.296 926.334 656.447 919.144 657 916.89 663.85" style="stroke:#181818;stroke-width:1"/></g><g id="link_MyPrefabComponent_PrefabExtensionInsertAsSiblingPatch"><path id="MyPrefabComponent-to-PrefabExtensionInsertAsSiblingPatch" fill="none" d="M1274.55,547.16 C1251.37,578.79 1222.9667,617.5334 1196.0367,654.2534" codeLine="6" style="stroke:#181818;stroke-width:1"/><polygon fill="#181818" points="1188.94 663.93 1195.714 661.457 1196.037 654.253 1189.263 656.726 1188.94 663.93" style="stroke:#181818;stroke-width:1"/></g><g id="link_MyPrefabComponent_PrefabExtensionReplacePatch"><path id="MyPrefabComponent-to-PrefabExtensionReplacePatch" fill="none" d="M1322.45,547.16 C1347.67,581.56 1380.365,626.1522 1407.835,663.6222" codeLine="7" style="stroke:#181818;stroke-width:1"/><polygon fill="#181818" points="1414.93 673.3 1414.608 666.096 1407.835 663.622 1408.157 670.826 1414.93 673.3" style="stroke:#181818;stroke-width:1"/></g><g id="link_MyPrefabComponent_PrefabExtensionSetAttributePatch"><path id="MyPrefabComponent-to-PrefabExtensionSetAttributePatch-1" fill="none" d="M1416.17,542.42 C1470.65,557.8 1535.19,579.6 1589.5,608 C1618.51,623.17 1638.3794,636.8165 1662.5694,656.3265" codeLine="8" style="stroke:#181818;stroke-width:1"/><polygon fill="#181818" points="1671.91 663.86 1669.751 656.98 1662.569 656.327 1664.728 663.207 1671.91 663.86" style="stroke:#181818;stroke-width:1"/></g><g id="link_CustomPatch_IPrefabPatch"><path id="CustomPatch-to-IPrefabPatch" fill="none" d="M652.55,758.58 C667.17,781.21 688.11,807.81 713.5,824 C834.01,900.83 994.0677,919.5387 1082.3777,924.3387" codeLine="9" style="stroke:#181818;stroke-width:1"/><polygon fill="#181818" points="1094.36 924.99 1088.586 920.67 1082.378 924.339 1088.152 928.659 1094.36 924.99" style="stroke:#181818;stroke-width:1"/></g><g id="link_InsertPatch_IPrefabPatch"><path id="InsertPatch-to-IPrefabPatch" fill="none" d="M925.22,768.18 C949.17,786.05 976.39,806.1 1001.5,824 C1035.02,847.89 1063.3929,867.3477 1092.9129,887.2677" codeLine="10" style="stroke:#181818;stroke-width:1"/><polygon fill="#181818" points="1102.86 893.98 1100.124 887.308 1092.913 887.268 1095.649 893.94 1102.86 893.98" style="stroke:#181818;stroke-width:1"/></g><g id="link_PrefabExtensionInsertAsSiblingPatch_IPrefabPatch"><path id="PrefabExtensionInsertAsSiblingPatch-to-IPrefabPatch" fill="none" d="M1151.5,768.25 C1151.5,807.38 1151.5,848.12 1151.5,881.72" codeLine="11" style="stroke:#181818;stroke-width:1"/><polygon fill="#181818" points="1151.5 893.72 1155.5 887.72 1151.5 881.72 1147.5 887.72 1151.5 893.72" style="stroke:#181818;stroke-width:1"/></g><g id="link_PrefabExtensionReplacePatch_IPrefabPatch"><path id="PrefabExtensionReplacePatch-to-IPrefabPatch" fill="none" d="M1390.49,758.67 C1363.8,778.68 1331.17,802.85 1301.5,824 C1267.98,847.89 1239.6071,867.3477 1210.0871,887.2677" codeLine="12" style="stroke:#181818;stroke-width:1"/><polygon fill="#181818" points="1200.14 893.98 1207.351 893.94 1210.087 887.268 1202.876 887.308 1200.14 893.98" style="stroke:#181818;stroke-width:1"/></g><g id="link_PrefabExtensionSetAttributePatch_IPrefabPatch"><path id="PrefabExtensionSetAttributePatch-to-IPrefabPatch" fill="none" d="M1673.85,768.24 C1649.51,788.25 1619.65,809.76 1589.5,824 C1461.33,884.53 1306.6577,909.3466 1220.5477,919.4866" codeLine="13" style="stroke:#181818;stroke-width:1"/><polygon fill="#181818" points="1208.63 920.89 1215.057 924.161 1220.548 919.487 1214.121 916.216 1208.63 920.89" style="stroke:#181818;stroke-width:1"/></g><g id="link_SubModule_UIExtenderEx"><path id="SubModule-to-UIExtenderEx" fill="none" d="M999.5,74.26 C999.5,93.51 999.5,105.38 999.5,122.71" codeLine="5" style="stroke:#181818;stroke-width:1"/><polygon fill="#181818" points="999.5 134.71 1003.5 128.71 999.5 122.71 995.5 128.71 999.5 134.71" style="stroke:#181818;stroke-width:1"/></g><g id="link_UIExtenderEx_UIExtenderExRuntime"><path id="UIExtenderEx-to-UIExtenderExRuntime" fill="none" d="M999.5,183.22 C999.5,201.16 999.5,213.89 999.5,231.83" codeLine="6" style="stroke:#181818;stroke-width:1"/><polygon fill="#181818" points="999.5 243.83 1003.5 237.83 999.5 231.83 995.5 237.83 999.5 243.83" style="stroke:#181818;stroke-width:1"/></g><g id="link_UIExtenderExRuntime_ViewModelComponent"><path id="UIExtenderExRuntime-to-ViewModelComponent" fill="none" d="M978.45,292.22 C962.18,310.16 947.8287,325.9986 931.5687,343.9386" codeLine="7" style="stroke:#181818;stroke-width:1"/><polygon fill="#181818" points="923.51 352.83 930.503 351.071 931.569 343.939 924.576 345.698 923.51 352.83" style="stroke:#181818;stroke-width:1"/></g><g id="link_UIExtenderExRuntime_PrefabComponent"><path id="UIExtenderExRuntime-to-PrefabComponent" fill="none" d="M1021.2,292.22 C1037.97,310.16 1052.888,326.1212 1069.648,344.0612" codeLine="8" style="stroke:#181818;stroke-width:1"/><polygon fill="#181818" points="1077.84 352.83 1076.667 345.715 1069.648 344.061 1070.821 351.176 1077.84 352.83" style="stroke:#181818;stroke-width:1"/></g><g id="link_ViewModelComponent_MyVMMixin"><path id="ViewModelComponent-to-MyVMMixin" fill="none" d="M900.44,401.12 C898.5,422.83 897.1778,437.5911 895.0078,461.9411" codeLine="10" style="stroke:#181818;stroke-width:1;stroke-dasharray:7,7"/><polygon fill="none" points="893.41 479.87 900.984 462.474 889.032 461.409 893.41 479.87" style="stroke:#181818;stroke-width:1"/><text x="898.5" y="446.028" fill="#000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="30">Uses</text></g><g id="link_PrefabComponent_MyPrefabComponent"><path id="PrefabComponent-to-MyPrefabComponent" fill="none" d="M1133.71,401.12 C1165.83,422.83 1199.2751,445.443 1235.3151,469.793" codeLine="11" style="stroke:#181818;stroke-width:1;stroke-dasharray:7,7"/><polygon fill="none" points="1250.23 479.87 1238.674 464.821 1231.956 474.765 1250.23 479.87" style="stroke:#181818;stroke-width:1"/><text x="1205.5" y="446.028" fill="#000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="30">Uses</text></g></g></svg>