blob: 1cf35c2403910433b6f9fc2e609acdef9400daf9 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
<svg width="99cm" height="126cm" viewBox="14 -78 1979 2510" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<line style="fill: none; fill-opacity:0; stroke-width: 6; stroke-dasharray: 20; stroke: #0db9f8" x1="23.5682" y1="2169.52" x2="1857.67" y2="2169.52"/>
<g>
<rect style="fill: #ffffff" x="1149.81" y="2240.82" width="159.1" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1149.81" y="2240.82" width="159.1" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="1229.36" y="2259.82">BluetoothDevice</text>
</g>
<g>
<rect style="fill: #ffffff" x="1508.45" y="2239.54" width="137.9" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1508.45" y="2239.54" width="137.9" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="1577.4" y="2258.54">BluetoothGatt</text>
</g>
<g>
<rect style="fill: #ffffff" x="1111.23" y="2047.54" width="236.8" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1111.23" y="2047.54" width="236.8" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="1229.63" y="2066.54">BluetoothDeviceWrapper</text>
<rect style="fill: #ffffff" x="1111.23" y="2075.54" width="236.8" height="20"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1111.23" y="2075.54" width="236.8" height="20"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1114.23" y="2089.54">+mDevice: BluetoothDevice</text>
</g>
<g>
<rect style="fill: #ffffff" x="1469.54" y="2048.9" width="215.6" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1469.54" y="2048.9" width="215.6" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="1577.34" y="2067.9">BluetoothGattWrapper</text>
<rect style="fill: #ffffff" x="1469.54" y="2076.9" width="215.6" height="20"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1469.54" y="2076.9" width="215.6" height="20"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1472.54" y="2090.9">+mGatt: BluetoothGatt</text>
</g>
<g>
<rect style="fill: #ffffff" x="1081.67" y="1907.31" width="294.9" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1081.67" y="1907.31" width="294.9" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="1229.12" y="1926.31">ChromeBluetoothDevice</text>
<rect style="fill: #ffffff" x="1081.67" y="1935.31" width="294.9" height="36"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1081.67" y="1935.31" width="294.9" height="36"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1084.67" y="1949.31">+mDevice: BluetoothDeviceWrapper</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1084.67" y="1965.31">+mBluetoothGatt: BluetoothGattWrapper</text>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1229.12,1997.49 1229.12,2016.43 1229.63,2016.43 1229.63,2046.53 "/>
<polygon style="fill: #ffffff" points="1229.12,1972.32 1233.92,1986.32 1229.12,2000.32 1224.32,1986.32 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1229.12,1972.32 1233.92,1986.32 1229.12,2000.32 1224.32,1986.32 "/>
<text font-size="12.7998" style="fill: #000000;text-anchor:middle;font-family:monospace;font-style:normal;font-weight:normal" x="1229.38" y="2012.43"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1240.12" y="1984.32"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1233.63" y="2042.53"/>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1229.12,1997.49 1229.12,2017.11 1577.34,2017.11 1577.34,2047.89 "/>
<polygon style="fill: #ffffff" points="1229.12,1972.32 1233.92,1986.32 1229.12,2000.32 1224.32,1986.32 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1229.12,1972.32 1233.92,1986.32 1229.12,2000.32 1224.32,1986.32 "/>
<text font-size="12.7998" style="fill: #000000;text-anchor:middle;font-family:monospace;font-style:normal;font-weight:normal" x="1403.23" y="2013.11"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1240.12" y="1984.32"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1581.34" y="2043.89"/>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1229.63,2121.72 1229.63,2175.18 1229.36,2175.18 1229.36,2239.81 "/>
<polygon style="fill: #ffffff" points="1229.63,2096.55 1234.43,2110.55 1229.63,2124.55 1224.83,2110.55 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1229.63,2096.55 1234.43,2110.55 1229.63,2124.55 1224.83,2110.55 "/>
<text font-size="12.7998" style="fill: #000000;text-anchor:middle;font-family:monospace;font-style:normal;font-weight:normal" x="1229.5" y="2171.18"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1240.63" y="2108.55"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1233.36" y="2235.81"/>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1577.34,2123.08 1577.34,2175.22 1577.4,2175.22 1577.4,2238.53 "/>
<polygon style="fill: #ffffff" points="1577.34,2097.91 1582.14,2111.91 1577.34,2125.91 1572.54,2111.91 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1577.34,2097.91 1582.14,2111.91 1577.34,2125.91 1572.54,2111.91 "/>
<text font-size="12.7998" style="fill: #000000;text-anchor:middle;font-family:monospace;font-style:normal;font-weight:normal" x="1577.37" y="2171.22"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1588.34" y="2109.91"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1581.4" y="2234.53"/>
</g>
<text font-size="11.2889" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="1397.92" y="2186.06">
<tspan x="1397.92" y="2186.06">chromium/src/third_party/android_tools/sdk/sources/android-23/android/bluetooth</tspan>
</text>
<text font-size="16.9333" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="22.3602" y="2190.06">
<tspan x="22.3602" y="2190.06">Android SDK</tspan>
</text>
<line style="fill: none; fill-opacity:0; stroke-width: 6; stroke-dasharray: 20; stroke: #0db9f8" x1="27.9302" y1="1852.23" x2="1857.67" y2="1852.23"/>
<text font-size="11.2889" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="1406.43" y="1868.38">
<tspan x="1406.43" y="1868.38">chromium/src/device/bluetooth/android/java/src/org/chromium/device/bluetooth</tspan>
</text>
<text font-size="16.9333" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="25.9682" y="1873.15">
<tspan x="25.9682" y="1873.15">Chromium (java)</tspan>
</text>
<g>
<rect style="fill: #ffffff" x="1097.95" y="1734.72" width="264.1" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1097.95" y="1734.72" width="264.1" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="1230" y="1753.72">BluetoothDeviceAndroid</text>
<rect style="fill: #ffffff" x="1097.95" y="1762.72" width="264.1" height="20"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1097.95" y="1762.72" width="264.1" height="20"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1100.95" y="1776.72">+j_device_: ChromeBluetoothDevice</text>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1230,1808.9 1230,1852.02 1229.12,1852.02 1229.12,1906.31 "/>
<polygon style="fill: #ffffff" points="1230,1783.73 1234.8,1797.73 1230,1811.73 1225.2,1797.73 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1230,1783.73 1234.8,1797.73 1230,1811.73 1225.2,1797.73 "/>
<text font-size="12.7998" style="fill: #000000;text-anchor:middle;font-family:monospace;font-style:normal;font-weight:normal" x="1229.56" y="1848.02"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1241" y="1795.73"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1233.12" y="1902.31"/>
</g>
<line style="fill: none; fill-opacity:0; stroke-width: 6; stroke-dasharray: 20; stroke: #0db9f8" x1="27.9302" y1="1474.73" x2="1857.67" y2="1474.73"/>
<text font-size="11.2889" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="1674.38" y="1492.07">
<tspan x="1674.38" y="1492.07">chromium/src/device/bluetooth</tspan>
</text>
<text font-size="16.9333" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="23.8662" y="1497.33">
<tspan x="23.8662" y="1497.33">Chromium/device (c++)</tspan>
</text>
<g>
<rect style="fill: #ffffff" x="1075.46" y="1624.55" width="310.3" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1075.46" y="1624.55" width="310.3" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="1230.61" y="1643.55">BluetoothDevice</text>
<rect style="fill: #ffffff" x="1075.46" y="1652.55" width="310.3" height="20"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1075.46" y="1652.55" width="310.3" height="20"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1078.46" y="1666.55">+gatt_services_: BluetoothGattService[]</text>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1230.61,1691.79 1230.61,1711.64 1230,1711.64 1230,1733.72 "/>
<polygon style="fill: #ffffff" points="1238.61,1691.79 1230.61,1675.79 1222.61,1691.79 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1238.61,1691.79 1230.61,1675.79 1222.61,1691.79 "/>
</g>
<g>
<rect style="fill: #ffffff" x="1508.8" y="1740.42" width="242.25" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1508.8" y="1740.42" width="242.25" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="1629.93" y="1759.42">BluetoothAdapterAndroid</text>
<rect style="fill: #ffffff" x="1508.8" y="1768.42" width="242.25" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1508.8" y="1768.42" width="242.25" height="8"/>
</g>
<line style="fill: none; fill-opacity:0; stroke-width: 6; stroke-dasharray: 20; stroke: #0db9f8" x1="17.0242" y1="642.518" x2="1857.67" y2="642.518"/>
<text font-size="11.2889" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="1461.63" y="665.812">
<tspan x="1461.63" y="665.812">chromium/src/third_party/WebKit/Source/modules/bluetooth/*.cpp</tspan>
</text>
<text font-size="16.9333" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="14.8442" y="665.124">
<tspan x="14.8442" y="665.124">Blink (c++)</tspan>
</text>
<g>
<rect style="fill: #ffffff" x="672.806" y="843.39" width="364.2" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="672.806" y="843.39" width="364.2" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="854.906" y="862.39">BluetoothDevice</text>
<rect style="fill: #ffffff" x="672.806" y="871.39" width="364.2" height="36"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="672.806" y="871.39" width="364.2" height="36"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="675.806" y="885.39">+m_device: mojom::blink::WebBluetoothDevicePtr</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="675.806" y="901.39">+m_bluetooth: Member&lt;Bluetooth&gt;</text>
<rect style="fill: #ffffff" x="672.806" y="907.39" width="364.2" height="20"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="672.806" y="907.39" width="364.2" height="20"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="675.806" y="921.39">+bluetooth(): Bluetooth*</text>
</g>
<line style="fill: none; fill-opacity:0; stroke-width: 6; stroke-dasharray: 20; stroke: #0db9f8" x1="33.0242" y1="135.266" x2="1873.67" y2="135.266"/>
<text font-size="16.9333" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="24.2062" y="163.33">
<tspan x="24.2062" y="163.33">WebBluetooth (javascript)</tspan>
</text>
<g>
<rect style="fill: #ffffff" x="1209.82" y="494.42" width="310.3" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1209.82" y="494.42" width="310.3" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="1364.97" y="513.42">BluetoothDevice</text>
<rect style="fill: #ffffff" x="1209.82" y="522.42" width="310.3" height="68"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1209.82" y="522.42" width="310.3" height="68"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1212.82" y="536.42">+gatt: BluetoothRemoteGATTServer</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1212.82" y="552.42">+name: DOMString?</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1212.82" y="568.42">+id: DOMString</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1212.82" y="584.42">+ongattserverdisconnected: EventHandler</text>
<rect style="fill: #ffffff" x="1209.82" y="590.42" width="310.3" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1209.82" y="590.42" width="310.3" height="8"/>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1182.83,560.25 1170,560.25 1170,870.25 1040,870.25 "/>
<polygon style="fill: #000000" points="1208,560.25 1194,565.05 1180,560.25 1194,555.45 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1208,560.25 1194,565.05 1180,560.25 1194,555.45 "/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1172" y="711.25"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:end;font-family:monospace;font-style:normal;font-weight:normal" x="1176" y="556.25"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1044" y="866.25"/>
</g>
<text font-size="11.2889" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="1487.45" y="158.53">
<tspan x="1487.45" y="158.53">chromium/src/third_party/WebKit/Source/modules/bluetooth/*.idl</tspan>
</text>
<line style="fill: none; fill-opacity:0; stroke-width: 6; stroke-dasharray: 20; stroke: #0db9f8" x1="25.2062" y1="1182.8" x2="1863.67" y2="1182.8"/>
<text font-size="11.2889" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="1623.65" y="1201.11">
<tspan x="1623.65" y="1201.11">chromium/src/content/browser/bluetooth</tspan>
</text>
<text font-size="16.9333" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="20.8442" y="1223.41">
<tspan x="20.8442" y="1223.41">Chromium/content (c++)</tspan>
</text>
<g>
<rect style="fill: #ffffff" x="1543.38" y="1624.6" width="171.15" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1543.38" y="1624.6" width="171.15" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="1628.95" y="1643.6">BluetoothAdapter</text>
<rect style="fill: #ffffff" x="1543.38" y="1652.6" width="171.15" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1543.38" y="1652.6" width="171.15" height="8"/>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1628.95,1679.84 1628.95,1708.51 1629.93,1708.51 1629.93,1739.41 "/>
<polygon style="fill: #ffffff" points="1636.95,1679.84 1628.95,1663.84 1620.95,1679.84 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1636.95,1679.84 1628.95,1663.84 1620.95,1679.84 "/>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 8; stroke: #000000" points="1507.84,1758.42 1400.22,1758.42 1400.22,1758.72 1369.74,1758.72 "/>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1382.38,1753.72 1366.38,1758.72 1382.38,1763.72 "/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1402.22" y="1754.57">instantiate</text>
</g>
<line style="fill: none; fill-opacity:0; stroke-width: 6; stroke-dasharray: 4; stroke: #ff0000" x1="28.1102" y1="1123.36" x2="1855.96" y2="1123.36"/>
<text font-size="16.9333" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="25.5642" y="1156.66">
<tspan x="25.5642" y="1156.66">Main Process (Browser Process)</tspan>
</text>
<text font-size="16.9333" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="25.5642" y="1107.41">
<tspan x="25.5642" y="1107.41">Render Process</tspan>
</text>
<g>
<rect style="fill: #ffffff" x="694.668" y="1027.26" width="379.6" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="694.668" y="1027.26" width="379.6" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="884.468" y="1046.26">Bluetooth</text>
<rect style="fill: #ffffff" x="694.668" y="1055.26" width="379.6" height="20"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="694.668" y="1055.26" width="379.6" height="20"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="697.668" y="1069.26">+m_service: mojom::blink::WebBluetoothServicePtr</text>
<rect style="fill: #ffffff" x="694.668" y="1075.26" width="379.6" height="20"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="694.668" y="1075.26" width="379.6" height="20"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="697.668" y="1089.26">+service(): mojom::blink::WebBluetoothService*</text>
</g>
<g>
<rect style="fill: #ffffff" x="1617.3" y="526.616" width="333.4" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1617.3" y="526.616" width="333.4" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="1784" y="545.616">Bluetooth</text>
<rect style="fill: #ffffff" x="1617.3" y="554.616" width="333.4" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1617.3" y="554.616" width="333.4" height="8"/>
<rect style="fill: #ffffff" x="1617.3" y="562.616" width="333.4" height="20"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1617.3" y="562.616" width="333.4" height="20"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1620.3" y="576.616">+requestDevice(): Promise&lt;BluetoothDevice&gt;</text>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1795,607.422 1795,962.25 883,962.25 883,1024 "/>
<polygon style="fill: #000000" points="1795,582.25 1799.8,596.25 1795,610.25 1790.2,596.25 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1795,582.25 1799.8,596.25 1795,610.25 1790.2,596.25 "/>
<text font-size="12.7998" style="fill: #000000;text-anchor:middle;font-family:monospace;font-style:normal;font-weight:normal" x="1339" y="958.25"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1806" y="594.25"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="887" y="1020"/>
</g>
<g>
<rect style="fill: #ffffff" x="61.7482" y="1915.49" width="410.4" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="61.7482" y="1915.49" width="410.4" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="266.948" y="1934.49">ChromeBluetoothRemoteGattCharacteristic</text>
<rect style="fill: #ffffff" x="61.7482" y="1943.49" width="410.4" height="20"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="61.7482" y="1943.49" width="410.4" height="20"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="64.7482" y="1957.49">+mCharacteristic: BluetoothGattCharacteristicWrapper</text>
</g>
<g>
<rect style="fill: #ffffff" x="88.6562" y="2044.56" width="356.5" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="88.6562" y="2044.56" width="356.5" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="266.906" y="2063.56">BluetoothGattCharacteristicWrapper</text>
<rect style="fill: #ffffff" x="88.6562" y="2072.56" width="356.5" height="20"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="88.6562" y="2072.56" width="356.5" height="20"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="91.6562" y="2086.56">+mCharacteristic: BluetoothGattCharacteristic</text>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="266.948,1989.67 266.948,2011.03 266.906,2011.03 266.906,2043.55 "/>
<polygon style="fill: #ffffff" points="266.948,1964.5 271.748,1978.5 266.948,1992.5 262.148,1978.5 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="266.948,1964.5 271.748,1978.5 266.948,1992.5 262.148,1978.5 "/>
<text font-size="12.7998" style="fill: #000000;text-anchor:middle;font-family:monospace;font-style:normal;font-weight:normal" x="266.927" y="2007.03"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="277.948" y="1976.5"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="270.906" y="2039.55"/>
</g>
<g>
<rect style="fill: #ffffff" x="135.746" y="2237.96" width="264.1" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="135.746" y="2237.96" width="264.1" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="267.796" y="2256.96">BluetoothGattCharacteristic</text>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="266.906,2118.74 266.906,2172.26 267.796,2172.26 267.796,2236.95 "/>
<polygon style="fill: #ffffff" points="266.906,2093.57 271.706,2107.57 266.906,2121.57 262.106,2107.57 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="266.906,2093.57 271.706,2107.57 266.906,2121.57 262.106,2107.57 "/>
<text font-size="12.7998" style="fill: #000000;text-anchor:middle;font-family:monospace;font-style:normal;font-weight:normal" x="267.351" y="2168.26"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="277.906" y="2105.57"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="271.796" y="2232.95"/>
</g>
<g>
<rect style="fill: #ffffff" x="35.4182" y="1760.02" width="464.3" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="35.4182" y="1760.02" width="464.3" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="267.568" y="1779.02">BluetoothRemoteGattCharacteristicAndroid</text>
<rect style="fill: #ffffff" x="35.4182" y="1788.02" width="464.3" height="20"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="35.4182" y="1788.02" width="464.3" height="20"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="38.4182" y="1802.02">+j_characteristic_: ChromeBluetoothRemoteGattCharacteristic</text>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="267.568,1834.2 267.568,1868.76 266.948,1868.76 266.948,1914.49 "/>
<polygon style="fill: #ffffff" points="267.568,1809.02 272.368,1823.02 267.568,1837.02 262.768,1823.02 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="267.568,1809.02 272.368,1823.02 267.568,1837.02 262.768,1823.02 "/>
<text font-size="12.7998" style="fill: #000000;text-anchor:middle;font-family:monospace;font-style:normal;font-weight:normal" x="267.258" y="1864.76"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="278.568" y="1821.02"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="270.948" y="1910.49"/>
</g>
<g>
<rect style="fill: #ffffff" x="136.322" y="1631.56" width="264.1" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="136.322" y="1631.56" width="264.1" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="268.372" y="1650.56">BluetoothGattCharacteristic</text>
<rect style="fill: #ffffff" x="136.322" y="1659.56" width="264.1" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="136.322" y="1659.56" width="264.1" height="8"/>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="268.372,1686.81 268.372,1721.79 267.568,1721.79 267.568,1759.01 "/>
<polygon style="fill: #ffffff" points="276.372,1686.81 268.372,1670.81 260.372,1686.81 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="276.372,1686.81 268.372,1670.81 260.372,1686.81 "/>
</g>
<g>
<rect style="fill: #ffffff" x="562.752" y="1730.64" width="479.7" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="562.752" y="1730.64" width="479.7" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="802.602" y="1749.64">BluetoothRemoteGattServiceAndroid</text>
<rect style="fill: #ffffff" x="562.752" y="1758.64" width="479.7" height="36"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="562.752" y="1758.64" width="479.7" height="36"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="565.752" y="1772.64">+j_service_: ChromeBluetoothRemoteGattService</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="565.752" y="1788.64">+characteristics_: BluetoothRemoteGattCharacteristicAndroid[]</text>
</g>
<g>
<rect style="fill: #ffffff" x="629.818" y="1919.18" width="343.3" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="629.818" y="1919.18" width="343.3" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="801.468" y="1938.18">ChromeBluetoothRemoteGattService</text>
<rect style="fill: #ffffff" x="629.818" y="1947.18" width="343.3" height="20"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="629.818" y="1947.18" width="343.3" height="20"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="632.818" y="1961.18">+mService: BluetoothGattServiceWrapper</text>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="802.602,1820.82 802.602,1863.91 801.468,1863.91 801.468,1918.18 "/>
<polygon style="fill: #ffffff" points="802.602,1795.65 807.402,1809.65 802.602,1823.65 797.802,1809.65 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="802.602,1795.65 807.402,1809.65 802.602,1823.65 797.802,1809.65 "/>
<text font-size="12.7998" style="fill: #000000;text-anchor:middle;font-family:monospace;font-style:normal;font-weight:normal" x="802.035" y="1859.91"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="813.602" y="1807.65"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="805.468" y="1914.18"/>
</g>
<g>
<rect style="fill: #ffffff" x="659.818" y="2047.18" width="282.15" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="659.818" y="2047.18" width="282.15" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="800.893" y="2066.18">BluetoothGattServiceWrapper</text>
<rect style="fill: #ffffff" x="659.818" y="2075.18" width="282.15" height="20"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="659.818" y="2075.18" width="282.15" height="20"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="662.818" y="2089.18">+mService: BluetoothGattService</text>
</g>
<g>
<rect style="fill: #ffffff" x="699.816" y="2239.18" width="204.45" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="699.816" y="2239.18" width="204.45" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="802.041" y="2258.18">BluetoothGattService</text>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="801.468,1993.36 801.468,2014.18 800.893,2014.18 800.893,2046.17 "/>
<polygon style="fill: #ffffff" points="801.468,1968.19 806.268,1982.19 801.468,1996.19 796.668,1982.19 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="801.468,1968.19 806.268,1982.19 801.468,1996.19 796.668,1982.19 "/>
<text font-size="12.7998" style="fill: #000000;text-anchor:middle;font-family:monospace;font-style:normal;font-weight:normal" x="801.181" y="2010.18"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="812.468" y="1980.19"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="804.893" y="2042.17"/>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="800.893,2121.36 800.893,2174.18 802.041,2174.18 802.041,2238.17 "/>
<polygon style="fill: #ffffff" points="800.893,2096.19 805.693,2110.19 800.893,2124.19 796.093,2110.19 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="800.893,2096.19 805.693,2110.19 800.893,2124.19 796.093,2110.19 "/>
<text font-size="12.7998" style="fill: #000000;text-anchor:middle;font-family:monospace;font-style:normal;font-weight:normal" x="801.467" y="2170.18"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="811.893" y="2108.19"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="806.041" y="2234.17"/>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="802.965,1685.28 802.965,1706.34 802.602,1706.34 802.602,1729.64 "/>
<polygon style="fill: #ffffff" points="810.965,1685.28 802.965,1669.28 794.965,1685.28 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="810.965,1685.28 802.965,1669.28 794.965,1685.28 "/>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1049.28,1648.55 983.324,1648.55 983.324,1648.04 906.196,1648.04 "/>
<polygon style="fill: #ffffff" points="1074.45,1648.55 1060.45,1653.35 1046.45,1648.55 1060.45,1643.75 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1074.45,1648.55 1060.45,1653.35 1046.45,1648.55 1060.45,1643.75 "/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="985.324" y="1644.29"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:end;font-family:monospace;font-style:normal;font-weight:normal" x="1042.45" y="1644.55">0..N</text>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="910.196" y="1644.04">1</text>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="537.58,1744.64 522.612,1744.64 522.612,1798.02 499.718,1798.02 "/>
<polygon style="fill: #ffffff" points="562.752,1744.64 548.752,1749.44 534.752,1744.64 548.752,1739.84 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="562.752,1744.64 548.752,1749.44 534.752,1744.64 548.752,1739.84 "/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="524.612" y="1767.33"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:end;font-family:monospace;font-style:normal;font-weight:normal" x="530.752" y="1740.64">0..N</text>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="503.718" y="1794.02">1</text>
</g>
<g>
<rect style="fill: #ffffff" x="688.544" y="694.09" width="456.6" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="688.544" y="694.09" width="456.6" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="916.844" y="713.09">BluetoothRemoteGATTService</text>
<rect style="fill: #ffffff" x="688.544" y="722.09" width="456.6" height="36"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="688.544" y="722.09" width="456.6" height="36"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="691.544" y="736.09">+m_service: mojom::blink::WebBluetoothRemoteGATTServicePtr</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="691.544" y="752.09">+m_device: Member&lt;BluetoothDevice&gt;</text>
<rect style="fill: #ffffff" x="688.544" y="758.09" width="456.6" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="688.544" y="758.09" width="456.6" height="8"/>
</g>
<g>
<rect style="fill: #ffffff" x="19.5882" y="739.092" width="564.4" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="19.5882" y="739.092" width="564.4" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="301.788" y="758.092">BluetoothRemoteGATTCharacteristic</text>
<rect style="fill: #ffffff" x="19.5882" y="767.092" width="564.4" height="20"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="19.5882" y="767.092" width="564.4" height="20"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="22.5882" y="781.092">+m_characteristic: mojom::blink::WebBluetoothRemoteGATTCharacteristicPtr</text>
<rect style="fill: #ffffff" x="19.5882" y="787.092" width="564.4" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="19.5882" y="787.092" width="564.4" height="8"/>
</g>
<g>
<rect style="fill: #ffffff" x="225.624" y="189.244" width="987.9" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="225.624" y="189.244" width="987.9" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="719.574" y="208.244">BluetoothRemoteGATTService</text>
<rect style="fill: #ffffff" x="225.624" y="217.244" width="987.9" height="52"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="225.624" y="217.244" width="987.9" height="52"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="228.624" y="231.244">+uuid: UUID</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="228.624" y="247.244">+isPrimary: boolean</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="228.624" y="263.244">+device: BluetoothDevice</text>
<rect style="fill: #ffffff" x="225.624" y="269.244" width="987.9" height="36"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="225.624" y="269.244" width="987.9" height="36"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="228.624" y="283.244">+getCharacteristic(characteristic:BluetoothCharacteristicUUID): Promise&lt;BluetoothRemoteGATTCharacteristic&gt;</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="228.624" y="299.244">+getCharacteristics(characteristic:(optional BluetoothCharacteristicUUID): Promise&lt;sequence&lt;BluetoothRemoteGATTCharacteristic&gt;&gt;</text>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="719.574,330.416 719.574,528 916.844,528 916.844,694.09 "/>
<polygon style="fill: #000000" points="719.574,305.244 724.374,319.244 719.574,333.244 714.774,319.244 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="719.574,305.244 724.374,319.244 719.574,333.244 714.774,319.244 "/>
<text font-size="12.7998" style="fill: #000000;text-anchor:middle;font-family:monospace;font-style:normal;font-weight:normal" x="818.209" y="524"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="730.574" y="317.244"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="920.844" y="690.09"/>
</g>
<g>
<rect style="fill: #ffffff" x="46.5862" y="367.098" width="510.5" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="46.5862" y="367.098" width="510.5" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="301.836" y="386.098">BluetoothRemoteGATTCharacteristic</text>
<rect style="fill: #ffffff" x="46.5862" y="395.098" width="510.5" height="68"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="46.5862" y="395.098" width="510.5" height="68"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="49.5862" y="409.098">+service: BluetoothRemoteGATTService</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="49.5862" y="425.098">+uuid: UUID</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="49.5862" y="441.098">+properties: BluetoothCharacteristicProperties</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="49.5862" y="457.098">+value: DataView?</text>
<rect style="fill: #ffffff" x="46.5862" y="463.098" width="510.5" height="68"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="46.5862" y="463.098" width="510.5" height="68"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="49.5862" y="477.098">+readValue(): Promise&lt;DataView&gt;</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="49.5862" y="493.098">+writeValue(value:BufferSource): Promise&lt;void&gt;</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="49.5862" y="509.098">+startNotifications(): Promise&lt;BluetoothRemoteGATTCharacteristic&gt;</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="49.5862" y="525.098">+stopNotifications(): Promise&lt;BluetoothRemoteGATTCharacteristic&gt;</text>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="301.836,557.275 301.836,642.094 301.788,642.094 301.788,738.085 "/>
<polygon style="fill: #000000" points="301.836,532.103 306.636,546.103 301.836,560.103 297.036,546.103 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="301.836,532.103 306.636,546.103 301.836,560.103 297.036,546.103 "/>
<text font-size="12.7998" style="fill: #000000;text-anchor:middle;font-family:monospace;font-style:normal;font-weight:normal" x="301.812" y="638.094"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="312.836" y="544.103"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="305.788" y="734.085"/>
</g>
<g>
<ellipse style="fill: #ffffff" cx="807.144" cy="-44.06" rx="6" ry="6"/>
<ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="807.144" cy="-44.06" rx="6" ry="6"/>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="783.144" y1="-32.06" x2="831.144" y2="-32.06"/>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="807.144" y1="-38.06" x2="807.144" y2="-8.06"/>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="807.144" y1="-8.06" x2="783.144" y2="17.94"/>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="807.144" y1="-8.06" x2="831.144" y2="17.94"/>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="807.144" y="41.84">
<tspan x="807.144" y="41.84">Actor</tspan>
</text>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 8; stroke: #000000" points="1230,1541.5 1230,1539.5 1628.95,1539.5 1628.95,1617.89 "/>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1623.95,1605.25 1628.95,1621.25 1633.95,1605.25 "/>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 8; stroke: #000000" points="936,1376.5 936,1538.5 1236.61,1538.5 1236.61,1618.84 "/>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1231.61,1606.2 1236.61,1622.2 1241.61,1606.2 "/>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 8; stroke: #000000" points="930,1537.5 930,1537.26 808.965,1537.26 808.965,1621.33 "/>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="803.965,1608.68 808.965,1624.68 813.965,1608.68 "/>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 8; stroke: #000000" points="809,1541.5 809,1538.5 268.372,1538.5 268.372,1624.85 "/>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="263.372,1612.21 268.372,1628.21 273.372,1612.21 "/>
</g>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" d="M 808 59.75 C 841.012,122.104 856,104.25 866.775,172.217"/>
<polygon style="fill: #008000" points="867.95,179.625 861.445,170.531 866.775,172.217 871.322,168.965 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" points="867.95,179.625 861.445,170.531 866.775,172.217 871.322,168.965 "/>
</g>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" d="M 860 311 C 849.072,471.076 899.998,625.252 863.881,679.428"/>
<polygon style="fill: #008000" points="859.721,685.668 861.108,674.574 863.881,679.428 869.428,680.121 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" points="859.721,685.668 861.108,674.574 863.881,679.428 869.428,680.121 "/>
</g>
<text font-size="16.9333" style="fill: #008000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="656.942" y="97.694">
<tspan x="656.942" y="97.694">getCharacteristic</tspan>
</text>
<text font-size="16.9333" style="fill: #008000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="708.456" y="576.964">
<tspan x="708.456" y="576.964">getCharacteristic</tspan>
</text>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" d="M 817 933 C 787,954 848,964.25 807.553,1017.9"/>
<polygon style="fill: #008000" points="803.038,1023.89 805.065,1012.9 807.553,1017.9 813.05,1018.92 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" points="803.038,1023.89 805.065,1012.9 807.553,1017.9 813.05,1018.92 "/>
</g>
<text font-size="16.9333" style="fill: #008000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="861.116" y="798.172">
<tspan x="861.116" y="798.172">m_device-&gt;bluetooth()-&gt;service()-&gt;RemoteServiceGetCharacteristics</tspan>
</text>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" d="M 906 1358.25 C 894.168,1618.84 857.202,1312.8 857.202,1715.66"/>
<polygon style="fill: #008000" points="857.202,1723.16 852.202,1713.16 857.202,1715.66 862.202,1713.16 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" points="857.202,1723.16 852.202,1713.16 857.202,1715.66 862.202,1713.16 "/>
</g>
<text font-size="16.9333" style="fill: #008000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="880.452" y="1580.34">
<tspan x="880.452" y="1580.34">GetCharacteristics</tspan>
</text>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" d="M 858.202 1797.45 C 859.878,1797.45 859.884,1849.59 862.556,1904.35"/>
<polygon style="fill: #008000" points="862.921,1911.84 857.44,1902.09 862.556,1904.35 867.428,1901.61 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" points="862.921,1911.84 857.44,1902.09 862.556,1904.35 867.428,1901.61 "/>
</g>
<text font-size="16.9333" style="fill: #008000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="868.27" y="1873.23">
<tspan x="868.27" y="1873.23">ensureCharacteristicsCreated</tspan>
</text>
<g>
<rect style="fill: #ffffff" x="700.74" y="1630.04" width="204.45" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="700.74" y="1630.04" width="204.45" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="802.965" y="1649.04">BluetoothGattService</text>
<rect style="fill: #ffffff" x="700.74" y="1658.04" width="204.45" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="700.74" y="1658.04" width="204.45" height="8"/>
</g>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" d="M 866.612 1970.67 C 869.404,1970.67 869.974,2007.24 868.819,2038.46"/>
<polygon style="fill: #008000" points="868.542,2045.96 863.915,2035.78 868.819,2038.46 873.908,2036.15 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" points="868.542,2045.96 863.915,2035.78 868.819,2038.46 873.908,2036.15 "/>
</g>
<text font-size="16.9333" style="fill: #008000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="880.822" y="2008.34">
<tspan x="880.822" y="2008.34">getCharacteristics</tspan>
</text>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" d="M 868.294 2098.06 C 869.974,2133.38 868.074,2208 833.656,2230.07"/>
<polygon style="fill: #008000" points="827.343,2234.12 833.062,2224.51 833.656,2230.07 838.46,2232.93 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" points="827.343,2234.12 833.062,2224.51 833.656,2230.07 838.46,2232.93 "/>
</g>
<text font-size="16.9333" style="fill: #008000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="867.572" y="2191.32">
<tspan x="867.572" y="2191.32">getCharacteristics</tspan>
</text>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" d="M 776.45 2268.82 C 532.732,2379.24 783.644,2156.88 710.753,2104.51"/>
<polygon style="fill: #008000" points="704.662,2100.13 715.701,2101.91 710.753,2104.51 709.866,2110.03 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" points="704.662,2100.13 715.701,2101.91 710.753,2104.51 709.866,2110.03 "/>
</g>
<text font-size="16.9333" style="fill: #008000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="514.356" y="2209.1">
<tspan x="514.356" y="2209.1">return characteristics</tspan>
</text>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" d="M 712.226 2045.08 C 731.948,2028.78 741.198,1999.35 743.034,1982.36"/>
<polygon style="fill: #008000" points="743.839,1974.91 747.736,1985.38 743.034,1982.36 737.794,1984.31 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" points="743.839,1974.91 747.736,1985.38 743.034,1982.36 737.794,1984.31 "/>
</g>
<text font-size="16.9333" style="fill: #008000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="470.022" y="1980.53">
<tspan x="470.022" y="1980.53">return characteristics-wrappers</tspan>
</text>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" d="M 745.402 1917.78 C 742.878,1850.52 709.166,1832.34 679.333,1805.22"/>
<polygon style="fill: #008000" points="673.784,1800.17 684.546,1803.2 679.333,1805.22 677.82,1810.6 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" points="673.784,1800.17 684.546,1803.2 679.333,1805.22 677.82,1810.6 "/>
</g>
<text font-size="16.9333" style="fill: #008000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="416.47" y="1841.3">
<tspan x="416.47" y="1841.3">CreateGattRemoteCharacteristic</tspan>
</text>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" d="M 600.964 1731.47 C 520.272,1650.78 384.56,1661.78 373.516,1748.55"/>
<polygon style="fill: #008000" points="372.569,1755.99 368.872,1745.44 373.516,1748.55 378.792,1746.7 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" points="372.569,1755.99 368.872,1745.44 373.516,1748.55 378.792,1746.7 "/>
</g>
<text font-size="16.9333" style="fill: #008000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="388.962" y="1744.1">
<tspan x="388.962" y="1744.1">Create</tspan>
</text>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" d="M 367.78 1807.86 C 366.316,1834.73 366.222,1867.18 366.222,1900.66"/>
<polygon style="fill: #008000" points="366.222,1908.16 361.222,1898.16 366.222,1900.66 371.222,1898.16 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" points="366.222,1908.16 361.222,1898.16 366.222,1900.66 371.222,1898.16 "/>
</g>
<text font-size="16.9333" style="fill: #008000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="382.522" y="1905.92">
<tspan x="382.522" y="1905.92">create</tspan>
</text>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" d="M 659.818 2047.18 C 612.392,1975.45 442.356,1971.37 426.935,2030.16"/>
<polygon style="fill: #008000" points="425.032,2037.41 422.733,2026.47 426.935,2030.16 432.406,2029.01 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" points="425.032,2037.41 422.733,2026.47 426.935,2030.16 432.406,2029.01 "/>
</g>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" d="M 416.626 2094.36 C 415.786,2187.7 611.05,2170.86 652.122,2107.12"/>
<polygon style="fill: #008000" points="656.184,2100.82 654.971,2111.93 652.122,2107.12 646.565,2106.52 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" points="656.184,2100.82 654.971,2111.93 652.122,2107.12 646.565,2106.52 "/>
</g>
<text font-size="16.9333" style="fill: #008000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="450.596" y="2020.4">
<tspan x="450.596" y="2020.4">new</tspan>
</text>
<text font-size="16.9333" style="fill: #008000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="448.41" y="2137.52">
<tspan x="448.41" y="2137.52">return new instance</tspan>
</text>
<text font-size="39.5111" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:700" x="27.8902" y="-40.458">
<tspan x="27.8902" y="-40.458">WebBluetooth</tspan>
</text>
<g>
<rect style="fill: #ffffff" x="913.9" y="326.838" width="818.5" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="913.9" y="326.838" width="818.5" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="1323.15" y="345.838">BluetoothRemoteGATTServer</text>
<rect style="fill: #ffffff" x="913.9" y="354.838" width="818.5" height="36"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="913.9" y="354.838" width="818.5" height="36"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="916.9" y="368.838">+device: BluetoothDevice</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="916.9" y="384.838">+connected: boolean</text>
<rect style="fill: #ffffff" x="913.9" y="390.838" width="818.5" height="68"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="913.9" y="390.838" width="818.5" height="68"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="916.9" y="404.838">+getPrimaryService(service:BluetoothServiceUUID): Promise&lt;BluetoothRemoteGATTService&gt;</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="916.9" y="420.838">+getPrimaryServices(service:optional BluetoothServiceUUID): Promise&lt;sequence&lt;BluetoothRemoteGATTService&gt;&gt;</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="916.9" y="436.838">+connect(): Promise&lt;BluetoothRemoteGATTServer&gt;</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="916.9" y="452.838">+disconnect(): void</text>
</g>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #ffa500" d="M 847 16.75 C 935.284,16.75 1289.16,102.096 1301.18,309.816"/>
<polygon style="fill: #ffa500" points="1301.61,317.303 1296.04,307.608 1301.18,309.816 1306.03,307.031 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #ffa500" points="1301.61,317.303 1296.04,307.608 1301.18,309.816 1306.03,307.031 "/>
</g>
<text font-size="12.8" style="fill: #ffa500;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="823.71" y="349.454">
<tspan x="823.71" y="349.454"></tspan>
</text>
<text font-size="16.9333" style="fill: #ffa500;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="1174.74" y="97.672">
<tspan x="1174.74" y="97.672">getPrimaryService</tspan>
</text>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #ffa500" d="M 969 461 C 981,573 1320,641 1345.79,677.406"/>
<polygon style="fill: #ffa500" points="1350.12,683.526 1340.26,678.256 1345.79,677.406 1348.42,672.476 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #ffa500" points="1350.12,683.526 1340.26,678.256 1345.79,677.406 1348.42,672.476 "/>
</g>
<text font-size="16.9333" style="fill: #ffa500;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="949.754" y="578.01">
<tspan x="949.754" y="578.01">getPrimaryService</tspan>
</text>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #ffa500" d="M 1376.57 1921.31 C 1621.1,1913.44 1636.1,1939.81 1647.78,2033.9"/>
<path style="fill: #ffa500" d="M 1376.57 1921.31 C 1376.46,1917.82 1379.85,1914.2 1383.34,1914.09 C 1386.84,1913.98 1390.45,1917.37 1390.57,1920.86 C 1390.68,1924.36 1387.29,1927.97 1383.8,1928.08 C 1380.3,1928.2 1376.69,1924.81 1376.57,1921.31z"/>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #ffa500" d="M 1376.57 1921.31 C 1376.46,1917.82 1379.85,1914.2 1383.34,1914.09 C 1386.84,1913.98 1390.45,1917.37 1390.57,1920.86 C 1390.68,1924.36 1387.29,1927.97 1383.8,1928.08 C 1380.3,1928.2 1376.69,1924.81 1376.57,1921.31"/>
<polygon style="fill: #ffa500" points="1648.71,2041.34 1642.51,2032.04 1647.78,2033.9 1652.44,2030.8 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #ffa500" points="1648.71,2041.34 1642.51,2032.04 1647.78,2033.9 1652.44,2030.8 "/>
</g>
<text font-size="16.9333" style="fill: #ffa500;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="1609.48" y="1934.83">
<tspan x="1609.48" y="1934.83">discoverServices</tspan>
</text>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #ffa500" d="M 1654.38 2099.18 C 1652.84,2134.66 1666.72,2177.84 1606.62,2228.79"/>
<polygon style="fill: #ffa500" points="1600.9,2233.64 1605.29,2223.36 1606.62,2228.79 1611.76,2230.99 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #ffa500" points="1600.9,2233.64 1605.29,2223.36 1606.62,2228.79 1611.76,2230.99 "/>
</g>
<text font-size="16.9333" style="fill: #ffa500;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="1645.44" y="2214.1">
<tspan x="1645.44" y="2214.1">discoverServices</tspan>
</text>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #ffa500" d="M 1376.57 1961.31 C 1633.86,1977.23 1479.6,2022.46 1341.79,1975.83"/>
<path style="fill: #ffa500" d="M 1376.57 1961.31 C 1376.79,1957.82 1380.5,1954.54 1383.99,1954.76 C 1387.49,1954.98 1390.76,1958.68 1390.55,1962.18 C 1390.33,1965.67 1386.62,1968.95 1383.13,1968.73 C 1379.64,1968.52 1376.36,1964.81 1376.57,1961.31z"/>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #ffa500" d="M 1376.57 1961.31 C 1376.79,1957.82 1380.5,1954.54 1383.99,1954.76 C 1387.49,1954.98 1390.76,1958.68 1390.55,1962.18 C 1390.33,1965.67 1386.62,1968.95 1383.13,1968.73 C 1379.64,1968.52 1376.36,1964.81 1376.57,1961.31"/>
<polygon style="fill: #ffa500" points="1334.69,1973.42 1345.77,1971.89 1341.79,1975.83 1342.56,1981.36 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #ffa500" points="1334.69,1973.42 1345.77,1971.89 1341.79,1975.83 1342.56,1981.36 "/>
</g>
<text font-size="16.9333" style="fill: #ffa500;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="1394.53" y="1959.43">
<tspan x="1394.53" y="1959.43">onServicesDiscovered</tspan>
</text>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #ffa500" d="M 1301.69 1908.22 C 1292.88,1859.11 1297.45,1837.52 1299.11,1797.25"/>
<polygon style="fill: #ffa500" points="1299.42,1789.76 1304,1799.95 1299.11,1797.25 1294.01,1799.54 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #ffa500" points="1299.42,1789.76 1304,1799.95 1299.11,1797.25 1294.01,1799.54 "/>
</g>
<text font-size="16.9333" style="fill: #ffa500;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="1320.05" y="1806.98">
<tspan x="1320.05" y="1806.98">CreateGattRemoteService</tspan>
</text>
<text font-size="16.9333" style="fill: #ffa500;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="1394.04" y="1908.68">
<tspan x="1394.04" y="1908.68">onConnectionStateChange</tspan>
</text>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #ffa500" d="M 998 1357.25 C 999,1497.25 1271,1491.5 1265.67,1605.31"/>
<polygon style="fill: #ffa500" points="1265.31,1612.8 1260.79,1602.58 1265.67,1605.31 1270.78,1603.04 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #ffa500" points="1265.31,1612.8 1260.79,1602.58 1265.67,1605.31 1270.78,1603.04 "/>
</g>
<text font-size="16.9333" style="fill: #ffa500;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="1285.36" y="1583.15">
<tspan x="1285.36" y="1583.15">GetGattServices</tspan>
</text>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #ffa500" d="M 1304.52 1735.7 C 1308.76,1715.9 1307.34,1704.59 1311.4,1685.95"/>
<polygon style="fill: #ffa500" points="1312.99,1678.62 1315.75,1689.45 1311.4,1685.95 1305.98,1687.33 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #ffa500" points="1312.99,1678.62 1315.75,1689.45 1311.4,1685.95 1305.98,1687.33 "/>
</g>
<text font-size="16.9333" style="fill: #ffa500;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="1323.18" y="1696.72">
<tspan x="1323.18" y="1696.72">gatt_services_.set</tspan>
</text>
<g>
<polygon style="fill: #ffffff" points="431.392,2317.06 930.192,2317.06 942.192,2329.06 942.192,2431.06 431.392,2431.06 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="431.392,2317.06 930.192,2317.06 942.192,2329.06 942.192,2431.06 431.392,2431.06 "/>
<polyline style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" points="930.192,2317.06 930.192,2329.06 942.192,2329.06 "/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="438.392" y="2341.96">
<tspan x="438.392" y="2341.96">This creation of a Characteristic by the Service provides</tspan>
<tspan x="438.392" y="2357.96">+ An opportunity when under test for Fake objects to create</tspan>
<tspan x="438.392" y="2373.96"> the appropriate new type of object.</tspan>
<tspan x="438.392" y="2389.96">+ A object reference that can be returned to C++ to have</tspan>
<tspan x="438.392" y="2405.96"> the necessary access.</tspan>
<tspan x="438.392" y="2421.96">+ The Wrappers or Fakes to maintain necessary peer refeferences.</tspan>
</text>
</g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #008000" x1="500.472" y1="2159.1" x2="431.392" y2="2317.06"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="964" y="1001.5">
<tspan x="964" y="1001.5"></tspan>
</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="929" y="942.5">
<tspan x="929" y="942.5"></tspan>
</text>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" d="M 863 759.25 C 864,757.25 851.094,762.11 845.253,828.097"/>
<polygon style="fill: #008000" points="844.591,835.568 840.493,825.166 845.253,828.097 850.454,826.048 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" points="844.591,835.568 840.493,825.166 845.253,828.097 850.454,826.048 "/>
</g>
<g>
<rect style="fill: #ffffff" x="1302.3" y="690.7" width="273.85" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1302.3" y="690.7" width="273.85" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="1439.22" y="709.7">BluetoothRemoteGATTServer</text>
<rect style="fill: #ffffff" x="1302.3" y="718.7" width="273.85" height="20"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1302.3" y="718.7" width="273.85" height="20"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1305.3" y="732.7">+m_device: Member&lt;BluetoothDevice&gt;</text>
<rect style="fill: #ffffff" x="1302.3" y="738.7" width="273.85" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1302.3" y="738.7" width="273.85" height="8"/>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1553,487.172 1553,582 1553,582 1553,687 "/>
<polygon style="fill: #000000" points="1553,462 1557.8,476 1553,490 1548.2,476 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1553,462 1557.8,476 1553,490 1548.2,476 "/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1555" y="582"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1564" y="474"/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1557" y="683"/>
</g>
<text font-size="16.9333" style="fill: #ffa500;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="1395.3" y="843.45">
<tspan x="1395.3" y="843.45">m_device-&gt;bluetooth()-&gt;service()-&gt;RemoteServerGetPrimaryServices</tspan>
</text>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #ffa500" d="M 1502 752 C 1529,906 974,776 947.761,824.503"/>
<polygon style="fill: #ffa500" points="944.192,831.1 944.552,819.925 947.761,824.503 953.348,824.684 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #ffa500" points="944.192,831.1 944.552,819.925 947.761,824.503 953.348,824.684 "/>
</g>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #ffa500" d="M 939.927 926.758 C 939.603,943.292 961.324,1009.2 961.245,1013.79"/>
<polygon style="fill: #ffa500" points="961.116,1021.29 956.289,1011.21 961.245,1013.79 966.287,1011.38 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #ffa500" points="961.116,1021.29 956.289,1011.21 961.245,1013.79 966.287,1011.38 "/>
</g>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" d="M 807.1 1094.63 C 777.1,1115.63 913.25,1188.45 905.729,1260.32"/>
<polygon style="fill: #008000" points="904.948,1267.78 901.016,1257.31 905.729,1260.32 910.962,1258.35 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #008000" points="904.948,1267.78 901.016,1257.31 905.729,1260.32 910.962,1258.35 "/>
</g>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #ffa500" d="M 972.158 1093.51 C 971.834,1110.04 1004.32,1253.7 1004.24,1258.29"/>
<polygon style="fill: #ffa500" points="1004.12,1265.79 999.289,1255.71 1004.24,1258.29 1009.29,1255.88 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 6; stroke: #ffa500" points="1004.12,1265.79 999.289,1255.71 1004.24,1258.29 1009.29,1255.88 "/>
</g>
<text font-size="16.9333" style="fill: #008000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="699.1" y="1146.2">
<tspan x="699.1" y="1146.2">Mojo IPC call</tspan>
</text>
<text font-size="16.9333" style="fill: #ffa500;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="990.1" y="1145.2">
<tspan x="990.1" y="1145.2">Mojo IPC call</tspan>
</text>
<g>
<rect style="fill: #ffffff" x="672.1" y="1274.45" width="464.3" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="672.1" y="1274.45" width="464.3" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="904.25" y="1293.45">WebBluetoothServiceImpl</text>
<rect style="fill: #ffffff" x="672.1" y="1302.45" width="464.3" height="36"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="672.1" y="1302.45" width="464.3" height="36"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="675.1" y="1316.45">+binding_: mojo::Binding&lt;blink::mojom::WebBluetoothService&gt;</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="675.1" y="1332.45">+allowed_devices_map_: BluetoothAllowedDevicesMap</text>
<rect style="fill: #ffffff" x="672.1" y="1338.45" width="464.3" height="36"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="672.1" y="1338.45" width="464.3" height="36"/>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="675.1" y="1352.45">+RemoteServiceGetCharacteristics(): void</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="675.1" y="1368.45">+RemoteServerGetPrimaryServices(): void</text>
</g>
<g>
<rect style="fill: #ffffff" x="1427.1" y="1314.45" width="278.25" height="28"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1427.1" y="1314.45" width="278.25" height="28"/>
<text font-size="16" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:700" x="1566.22" y="1333.45">BluetoothAllowedDevicesMap</text>
<rect style="fill: #ffffff" x="1427.1" y="1342.45" width="278.25" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1427.1" y="1342.45" width="278.25" height="8"/>
<rect style="fill: #ffffff" x="1427.1" y="1350.45" width="278.25" height="8"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="1427.1" y="1350.45" width="278.25" height="8"/>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 8; stroke: #000000" points="936,1095.5 936,1183.2 936,1183.2 936,1264.79 "/>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="931,1252.15 936,1268.15 941,1252.15 "/>
</g>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="944" y="1211.5">
<tspan x="944" y="1211.5">communicate through</tspan>
</text>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="947" y="1503.5">
<tspan x="947" y="1503.5">communicate with</tspan>
</text>
<text font-size="16.9333" style="fill: #008000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="589.1" y="1243.2">
<tspan x="589.1" y="1243.2">RemoteServiceGetCharacteristics</tspan>
</text>
<text font-size="16.9333" style="fill: #ffa500;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="1011.1" y="1243.2">
<tspan x="1011.1" y="1243.2">RemoteServerGetPrimaryServices</tspan>
</text>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1161.57,1328.45 1151.4,1328.45 1426.1,1328.45 1427.1,1328.45 "/>
<polygon style="fill: #ffffff" points="1136.4,1328.45 1150.4,1323.65 1164.4,1328.45 1150.4,1333.25 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1136.4,1328.45 1150.4,1323.65 1164.4,1328.45 1150.4,1333.25 "/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1168.4" y="1324.45">1</text>
<text font-size="12.7998" style="fill: #000000;text-anchor:end;font-family:monospace;font-style:normal;font-weight:normal" x="1423.1" y="1324.45">1</text>
</g>
<g>
<polyline style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1099.44,1085.26 1157.4,1085.26 1157.4,1288.45 1136.4,1288.45 "/>
<polygon style="fill: #ffffff" points="1074.27,1085.26 1088.27,1080.46 1102.27,1085.26 1088.27,1090.06 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="1074.27,1085.26 1088.27,1080.46 1102.27,1085.26 1088.27,1090.06 "/>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1106.27" y="1081.26">1</text>
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="1140.4" y="1284.45">1</text>
</g>
</svg>