Organisation

This commit is contained in:
DotNaos 2025-04-17 13:18:29 +02:00
parent be62e2a35d
commit f09cad7db7
7 changed files with 559 additions and 0 deletions

View File

@ -0,0 +1,81 @@
## a) UNION, INTERSECT, EXCEPT
![[Pasted image 20250308160323.png]]
```sql
SELECT cust_id FROM customer
UNION
SELECT cust_id FROM account;
SELECT cust_id FROM customer
UNION ALL
SELECT cust_id FROM account;
SELECT cust_id FROM customer
INTERSECT
SELECT cust_id FROM account;
SELECT cust_id FROM customer
EXCEPT
SELECT cust_id FROM account;
```
## b)  Partial Index
Ein _Partial Index_ ist ein Index, der nur für einen Teil der Datensätze einer Tabelle erstellt wird, die einer bestimmten Bedingung entsprechen.
z.B. für alle aktiven accounts.
## c) View
Eine _View_ ist eine virtuelle Tabelle, die im Grunde die SQL Abfrage zusammenfasst.
Man kann sie sich wie eine Python-Funktion vorstellen, die das Ergebnis einer Abfrage zurückgibt.
```sql
CREATE VIEW customer_accounts AS
SELECT c.cust_id, p.fname, p.lname, a.account_id, a.avail_balance
FROM customer c
JOIN person p ON c.cust_id = p.person_id
JOIN account a ON c.cust_id = a.cust_id;
```
## d) Postgres Auto-Increment
### Deprecated (SERIAL)
```sql
CREATE TABLE example (
  id SERIAL PRIMARY KEY,
  ...
);
```
### Aktuell (GENERATED)
```sql
CREATE TABLE products (
product_id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, product_name TEXT NOT NULL
);
```
## e) Trigger
Ein _Trigger_ ist eine Datenbankfunktion, die automatisch vor oder nach bestimmten Ereignissen (z.B. INSERT, UPDATE oder DELETE) auf einer Tabelle ausgeführt wird.
WICHTIG: Kann bei schlechter Dokumentation sehr schnell, zu unerwünschten Seiteneffekten führen.
In der Bank-Datenbank könnte ein Trigger verwendet werden, um das Feld last_activity_date einer Kontotabelle zu aktualisieren, wenn eine neue Transaktion erfolgt:
```sql
CREATE FUNCTION update_last_activity() RETURNS trigger AS $$
BEGIN
UPDATE account
SET last_activity_date = NEW.txn_date
WHERE account_id = NEW.account_id;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER trg_update_last_activity
AFTER INSERT ON transaction
FOR EACH ROW
EXECUTE FUNCTION update_last_activity();
```

Binary file not shown.

View File

@ -0,0 +1,133 @@
-- Erstellen Sie SQL-Abfragen für die folgenden Aufgaben (Queries geben einen Punkt, sofern nicht anders angegeben):
-- 1) Selektieren Sie die Employee ID, Vornamen und Nachname aller Angestellten - sortieren Sie absteigend nach Nachname und dann nach Vorname.
SELECT emp_id, fname, lname
FROM employee
ORDER BY lname DESC, fname DESC;
-- 2) Holen Sie Kontonummer, Kundennummer und Kontostand für alle aktiven Konten mit mehr als 2500 Dollar (nutzen Sie als Kontostand avail_balance).
SELECT
account_id,
cust_id,
avail_balance
FROM account
WHERE
status = 'ACTIVE'
AND avail_balance > 2500;
-- 3) Holen Sie aus der Tabelle account alle IDs der Angestellten, die ein Konto eröffnet haben - geben Sie dabei jede ID nur einmal aus (Tipp: DISTINCT).
SELECT a.open_emp_id AS emp_id FROM account a GROUP BY a.open_emp_id;
-- 4) Zählen Sie die Zeilen in der account-Tabelle.
SELECT COUNT(a.account_id) AS Anzahl_Zeilen FROM account a;
-- 5) Geben Sie eine Tabelle aus, in der, in der ersten Spalte der Name des Kunden und in einer zweiten Spalte die Anzahl Konten dieses Kunden steht - Hinweis: hier reicht es aus, die Namen der Individualkunden zu verwenden (individual), Geschäftskunden dürfen ignoriert werden.
CREATE OR REPLACE VIEW AUFGABE_5 AS -- Der View ist hier nur für Aufgabe 6
SELECT CONCAT(i.lname, ' ', i.fname) AS Kunden_Name, COUNT(a.account_id) AS Anzahl_Konten
FROM account a
JOIN individual i ON i.cust_id = a.cust_id
GROUP BY
i.cust_id;
-- 6) Wie 5), aber zeigen Sie nur Kunden an, die 2 oder mehr Konten haben.
-- Kleiner Trick ^-^, Aufgabe 5 als View verwenden:
SELECT * FROM AUFGABE_5 WHERE Anzahl_Konten >= 2;
-- Alternative Lösung:
SELECT CONCAT(i.lname, ' ', i.fname) AS Kunden_Name, COUNT(a.account_id) AS Anzahl_Konten
FROM account a
JOIN individual i ON i.cust_id = a.cust_id
GROUP BY
i.cust_id
HAVING
COUNT(a.account_id) >= 2;
-- 7) Geben Sie eine Query an, die alle Accounts findet, die im Jahr 2002 eröffnet wurden, ohne die Symbole > oder < zu verwenden.
SELECT *
FROM account a
WHERE
a.open_date BETWEEN TIMESTAMP '2002-01-01' AND TIMESTAMP '2003-01-01';
-- 8) Geben Sie eine Query an, die alle Kunden ("individual") findet, deren Nachname an der zweiten Stelle ein 'a' danach an beliebiger Stelle ein 'e' enthält.
SELECT * FROM individual i WHERE REGEXP_LIKE(i.lname, '^.a.*e');
-- 9) Schreiben Sie eine Query, die alle Account-IDs für jeden Nicht-Geschäftskunden holt,
-- dazu die fed_id des Kunden und den Namen des Produkts, auf dem der Account basiert.
SELECT a.account_id, c.fed_id, p.name
FROM
customer c
JOIN account a ON c.cust_id = a.cust_id
JOIN product p ON a.product_cd = p.product_cd
WHERE
c.cust_type_cd != 'B';
-- 10) Schreiben Sie eine Query, die alle Angestellten findet,
-- deren Supervisor in einer anderen Abteilung (department) arbeitet.
-- Selektieren Sie ID, Vor- und Nachname.
SELECT e.emp_id AS ID, e.fname AS Vorname, e.lname AS Nachname
FROM employee e
JOIN employee e2 ON e.superior_emp_id = e2.emp_id
WHERE
e.dept_id != e2.dept_id;
-- 11) (2 Punkte) Selektieren Sie alle Vornamen und Nachnamen in einer Tabelle
-- (sowohl die der Individual-Kunden als auch die der Angestellten).
-- Tipp: Machen Sie sich mit der UNION-Anweisung vertraut.
SELECT fname, lname
FROM individual
UNION
SELECT fname, lname
FROM employee;
-- 12) (2 Punkte) Selektieren Sie folgende Tabelle: Vorgesetzter (Name), komma-getrennte Liste der Mitarbeiter,
-- die zu einem Vorgesetzten gehören.
SELECT
sup.lname AS Vorgesetzter,
STRING_AGG (
CONCAT(emp.fname, ' ', emp.lname),
', '
) AS Mitarbeiter
FROM employee emp
JOIN employee sup ON emp.superior_emp_id = sup.emp_id
GROUP BY
sup.emp_id;
-- 13) (2 Punkte) Selektieren Sie alle Account-IDs und die dazugehörige Customer-ID.
-- Wenn es ein Geschäftskunde ist, dann soll noch der Firmenname in der dritten Spalte stehen,
-- sonst soll in der dritten Spalte der Vor- und Nachname des Privatkunden stehen (Tipp: COALESCE).
SELECT c.cust_id,
STRING_AGG(a.account_id::text, ', ') AS Accounts,
COALESCE(b.name, CONCAT(i.fname, ' ', i.lname)) AS Kundenname
FROM account a
JOIN customer c ON a.cust_id = c.cust_id
LEFT JOIN business b ON c.cust_id = b.cust_id
LEFT JOIN individual i ON c.cust_id = i.cust_id
GROUP BY c.cust_id, b.name, CONCAT(i.fname, ' ', i.lname);
-- 14) (2 Punkte) Selektieren Sie den Namen des Kunden mit dem höchsten Gesamtvermögen (nur eine Gesamt-Query - Subqueries dürfen genutzt werden)
SELECT SUM(a.avail_balance) AS "Gesamtvermögen", COALESCE(
b.name, CONCAT(i.fname, ' ', i.lname)
) AS Kundenname
FROM
customer c
JOIN account a ON c.cust_id = a.cust_id
LEFT JOIN individual i ON c.cust_id = i.cust_id
LEFT JOIN business b ON c.cust_id = b.cust_id
GROUP BY
c.cust_id,
b.name,
i.fname,
i.lname
ORDER BY SUM(a.avail_balance) DESC
LIMIT 1;
-- 15) (2 Punkte) Selektieren Sie alle Namen der Bank-Produkte (Tabelle product, Verbindung product_cd)
-- mit den Accounts (account_id), die auf diesem Produkt basieren.
-- Dabei sollen alle Produkte auftauchen, auch die ohne Account.
SELECT p.name AS Produktname,
STRING_AGG(a.account_id::text, ', ') AS Accounts
FROM product p
LEFT JOIN account a ON p.product_cd = a.product_cd
GROUP BY p.product_cd;

View File

@ -0,0 +1,345 @@
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36" version="26.0.16">
<diagram id="w3OHxro7ZSTAorkLN3Aw" name="Page-1">
<mxGraphModel dx="2623" dy="2903" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" background="none" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="node8" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;account&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; &lt;i&gt;product_cd&lt;/i&gt; (FK): varchar(10)&lt;br/&gt; &lt;i&gt;cust_id&lt;/i&gt; (FK): bigint&lt;br/&gt; open_date: date&lt;br/&gt; close_date: date&lt;br/&gt; last_activity_date: date&lt;br/&gt; status: account_status&lt;br/&gt; &lt;i&gt;open_branch_id&lt;/i&gt; (FK): integer&lt;br/&gt; &lt;i&gt;open_emp_id&lt;/i&gt; (FK): integer&lt;br/&gt; avail_balance: double precision&lt;br/&gt; pending_balance: double precision&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; &lt;u&gt;account_id&lt;/u&gt; (PK): bigint&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="342" y="484" width="246" height="304" as="geometry" />
</mxCell>
<mxCell id="node3" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;branch&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; name: varchar(20)&lt;br/&gt; address: varchar(30)&lt;br/&gt; city: varchar(20)&lt;br/&gt; state: varchar(2)&lt;br/&gt; zip: varchar(12)&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; &lt;u&gt;branch_id&lt;/u&gt; (PK): integer&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-195" y="553" width="158" height="184" as="geometry" />
</mxCell>
<mxCell id="node10" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;business&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; name: varchar(40)&lt;br/&gt; state_id: varchar(10)&lt;br/&gt; incorp_date: date&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; &lt;u&gt;&lt;i&gt;cust_id&lt;/i&gt; (FK)&lt;/u&gt; (PK): bigint&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="1245" y="1060" width="155" height="147" as="geometry" />
</mxCell>
<mxCell id="node9" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;customer&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; fed_id: varchar(12)&lt;br/&gt; cust_type_cd: customer_cust_type_cd&lt;br/&gt; address: varchar(30)&lt;br/&gt; city: varchar(20)&lt;br/&gt; state: varchar(20)&lt;br/&gt; postal_code: varchar(10)&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; &lt;u&gt;cust_id&lt;/u&gt; (PK): bigint&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="817" y="988" width="267" height="208" as="geometry" />
</mxCell>
<mxCell id="node5" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;department&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; name: varchar(20)&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; &lt;u&gt;dept_id&lt;/u&gt; (PK): integer&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-187" y="-174" width="143" height="95" as="geometry" />
</mxCell>
<mxCell id="node2" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;employee&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; fname: varchar(20)&lt;br/&gt; lname: varchar(20)&lt;br/&gt; start_date: date&lt;br/&gt; end_date: date&lt;br/&gt; superior_&lt;u&gt;emp_id&lt;/u&gt; (PK): integer&lt;br/&gt; &lt;i&gt;dept_id&lt;/i&gt; (FK): integer&lt;br/&gt; title: varchar(20)&lt;br/&gt; &lt;i&gt;assigned_branch_id&lt;/i&gt; (FK): integer&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; &lt;u&gt;emp_id&lt;/u&gt; (PK): integer&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="-218" y="46" width="218" height="256" as="geometry" />
</mxCell>
<mxCell id="node11" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;individual&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; fname: varchar(30)&lt;br/&gt; lname: varchar(30)&lt;br/&gt; birth_date: date&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; &lt;u&gt;&lt;i&gt;cust_id&lt;/i&gt; (FK)&lt;/u&gt; (PK): bigint&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="1245" y="841" width="155" height="149" as="geometry" />
</mxCell>
<mxCell id="node4" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;officer&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; &lt;i&gt;cust_id&lt;/i&gt; (FK): bigint&lt;br/&gt; fname: varchar(30)&lt;br/&gt; lname: varchar(30)&lt;br/&gt; title: varchar(20)&lt;br/&gt; start_date: date&lt;br/&gt; end_date: date&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; &lt;u&gt;officer_id&lt;/u&gt; (PK): integer&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="1620" y="1029.5" width="148" height="208" as="geometry" />
</mxCell>
<mxCell id="node0" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;person&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; fname: varchar(20)&lt;br/&gt; lname: varchar(20)&lt;br/&gt; gender: person_gender&lt;br/&gt; birth_date: date&lt;br/&gt; street: varchar(30)&lt;br/&gt; city: varchar(20)&lt;br/&gt; state: varchar(20)&lt;br/&gt; country: varchar(20)&lt;br/&gt; postal_code: varchar(20)&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; &lt;u&gt;person_id&lt;/u&gt; (PK): integer&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="30" y="952" width="184" height="280" as="geometry" />
</mxCell>
<mxCell id="node7" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;product&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; name: varchar(50)&lt;br/&gt; &lt;i&gt;product_type_cd&lt;/i&gt; (FK): varchar(10)&lt;br/&gt; date_offered: date&lt;br/&gt; date_retired: date&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; &lt;u&gt;product_cd&lt;/u&gt; (PK): varchar(10)&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="844" y="457" width="212" height="160" as="geometry" />
</mxCell>
<mxCell id="node6" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;product_type&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; name: varchar(50)&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; &lt;u&gt;product_type_cd&lt;/u&gt; (PK): varchar(10)&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="1280" y="484" width="233" height="103" as="geometry" />
</mxCell>
<mxCell id="node1" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;transaction&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; txn_date: timestamp with time zone&lt;br/&gt; &lt;i&gt;account_id&lt;/i&gt; (FK): bigint&lt;br/&gt; txn_type_cd: transaction_txn_type_cd&lt;br/&gt; amount: double precision&lt;br/&gt; &lt;i&gt;teller_emp_id&lt;/i&gt; (FK): integer&lt;br/&gt; &lt;i&gt;execution_branch_id&lt;/i&gt; (FK): integer&lt;br/&gt; funds_avail_date: timestamp with time zone&lt;/p&gt;&lt;hr size=&quot;1&quot;/&gt;&lt;p style=&quot;margin:0 0 0 4px;line-height:1.6;&quot;&gt; &lt;u&gt;txn_id&lt;/u&gt; (PK): bigint&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;" parent="1" vertex="1">
<mxGeometry x="315" y="58" width="301" height="232" as="geometry" />
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-1" value="" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="node2" target="node5">
<mxGeometry relative="1" as="geometry">
<mxPoint y="-70" as="sourcePoint" />
<mxPoint x="160" y="-70" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-9" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-1">
<mxGeometry x="-0.7178" y="-1" relative="1" as="geometry">
<mxPoint x="-11" y="-88" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-10" value="N" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-1">
<mxGeometry x="0.6737" y="-1" relative="1" as="geometry">
<mxPoint x="3" y="79" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-61" value="&lt;p class=&quot;p1&quot;&gt;&lt;i&gt;part of&lt;/i&gt;&lt;/p&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-1">
<mxGeometry x="0.1948" relative="1" as="geometry">
<mxPoint y="9" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-19" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="node2" target="node1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="70" y="173.71" as="sourcePoint" />
<mxPoint x="230" y="173.71" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-20" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-19">
<mxGeometry x="-0.8982" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-21" value="N" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-19">
<mxGeometry x="0.7518" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-74" value="&lt;p class=&quot;p1&quot;&gt;&lt;i&gt;&amp;nbsp;handled by&amp;nbsp;&lt;/i&gt;&lt;/p&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-19">
<mxGeometry x="-0.1211" y="-3" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-23" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="node3" target="node1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="40" y="540" as="sourcePoint" />
<mxPoint x="355" y="540" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-24" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-23">
<mxGeometry x="-0.8982" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-25" value="N" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-23">
<mxGeometry x="0.7518" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-73" value="&lt;p class=&quot;p1&quot;&gt;&lt;i&gt;&amp;nbsp;executed in&amp;nbsp;&lt;/i&gt;&lt;/p&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-23">
<mxGeometry x="-0.5176" y="-2" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-26" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="node2" target="node8">
<mxGeometry relative="1" as="geometry">
<mxPoint x="50" y="290" as="sourcePoint" />
<mxPoint x="320" y="450" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-27" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-26">
<mxGeometry x="-0.8982" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-28" value="N" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-26">
<mxGeometry x="0.7518" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-64" value="&lt;p class=&quot;p1&quot;&gt;&lt;i style=&quot;background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;opened by&lt;/i&gt;&lt;/p&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-26">
<mxGeometry x="-0.4856" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-29" value="" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="node3" target="node2">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-160" y="440" as="sourcePoint" />
<mxPoint x="155" y="440" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-30" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-29">
<mxGeometry x="-0.8982" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-31" value="N" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-29">
<mxGeometry x="0.7518" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-67" value="&lt;p class=&quot;p1&quot;&gt;&lt;i&gt;works in&lt;/i&gt;&lt;/p&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-29">
<mxGeometry x="0.0018" y="-2" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-32" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="node3" target="node8">
<mxGeometry relative="1" as="geometry">
<mxPoint x="30" y="570" as="sourcePoint" />
<mxPoint x="345" y="570" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-33" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-32">
<mxGeometry x="-0.8982" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-34" value="N" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-32">
<mxGeometry x="0.7518" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-60" value="&lt;p class=&quot;p1&quot;&gt;&lt;i&gt;opened at&amp;nbsp;&lt;/i&gt;&lt;/p&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-32">
<mxGeometry x="-0.1496" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-35" value="" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="node8" target="node1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="490" y="460" as="sourcePoint" />
<mxPoint x="725" y="420" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-36" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-35">
<mxGeometry x="-0.8982" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-37" value="N" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-35">
<mxGeometry x="0.7518" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-72" value="&lt;p class=&quot;p1&quot;&gt;&lt;i&gt;&amp;nbsp;posts to&amp;nbsp;&lt;/i&gt;&lt;/p&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-35">
<mxGeometry x="-0.1137" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-38" value="" style="endArrow=none;html=1;rounded=0;exitX=0.998;exitY=0.173;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.821;entryY=0.001;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="node2" target="node2">
<mxGeometry relative="1" as="geometry">
<mxPoint x="90" y="-50" as="sourcePoint" />
<mxPoint x="-40" y="40" as="targetPoint" />
<Array as="points">
<mxPoint x="70" y="90" />
<mxPoint x="70" y="-20" />
<mxPoint x="-40" y="-20" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-39" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-38">
<mxGeometry x="-0.8982" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-40" value="N" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-38">
<mxGeometry x="0.7518" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-62" value="&lt;p class=&quot;p1&quot;&gt;&lt;i&gt;reports to&lt;/i&gt;&lt;/p&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-38">
<mxGeometry x="-0.0163" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-41" value="" style="endArrow=none;html=1;rounded=0;exitX=-0.017;exitY=0.465;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.996;entryY=0.305;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="node7" target="node8">
<mxGeometry relative="1" as="geometry">
<mxPoint x="680" y="680" as="sourcePoint" />
<mxPoint x="995" y="680" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-42" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-41">
<mxGeometry x="-0.8982" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-43" value="N" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-41">
<mxGeometry x="0.7518" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-65" value="&lt;p class=&quot;p1&quot;&gt;&lt;i&gt;uses product&lt;/i&gt;&lt;/p&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-41">
<mxGeometry x="-0.0392" y="-2" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-44" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="node6" target="node7">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1203" y="640" as="sourcePoint" />
<mxPoint x="950" y="686" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-45" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-44">
<mxGeometry x="-0.8982" y="1" relative="1" as="geometry">
<mxPoint x="-9" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-46" value="N" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-44">
<mxGeometry x="0.7518" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-71" value="&lt;p class=&quot;p1&quot;&gt;&lt;i&gt;&amp;nbsp;is type&amp;nbsp;&lt;/i&gt;&lt;/p&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-44">
<mxGeometry x="-0.0524" y="-2" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-47" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0;exitDx=0;exitDy=0;entryX=1;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="node9" target="node8">
<mxGeometry relative="1" as="geometry">
<mxPoint x="993" y="760" as="sourcePoint" />
<mxPoint x="740" y="806" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-48" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-47">
<mxGeometry x="-0.8982" y="1" relative="1" as="geometry">
<mxPoint x="-5" y="-9" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-49" value="N" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-47">
<mxGeometry x="0.7518" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-63" value="&lt;p class=&quot;p1&quot;&gt;&lt;i&gt;belongs to&lt;/i&gt;&lt;/p&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-47">
<mxGeometry x="0.0804" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-50" value="" style="endArrow=none;html=1;rounded=0;exitX=1.003;exitY=0.176;exitDx=0;exitDy=0;entryX=0.006;entryY=0.432;entryDx=0;entryDy=0;entryPerimeter=0;exitPerimeter=0;" edge="1" parent="1" source="node9" target="node11">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1181" y="841" as="sourcePoint" />
<mxPoint x="1020" y="869" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-51" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-50">
<mxGeometry x="-0.8982" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-52" value="N" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-50">
<mxGeometry x="0.7518" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-68" value="&lt;p class=&quot;p1&quot;&gt;&lt;i&gt;belongs to&lt;/i&gt;&lt;/p&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-50">
<mxGeometry x="-0.0945" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-53" value="" style="endArrow=none;html=1;rounded=0;exitX=1.001;exitY=0.654;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitPerimeter=0;" edge="1" parent="1" source="node9" target="node10">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1110" y="1073" as="sourcePoint" />
<mxPoint x="1272" y="990" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-54" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-53">
<mxGeometry x="-0.8982" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-55" value="N" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-53">
<mxGeometry x="0.7518" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-66" value="&lt;p class=&quot;p1&quot;&gt;&lt;i&gt;belongs to&lt;/i&gt;&lt;/p&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-53">
<mxGeometry x="-0.1332" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-56" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="node10" target="node4">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1380" y="1260" as="sourcePoint" />
<mxPoint x="1541" y="1270" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-57" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-56">
<mxGeometry x="-0.8982" y="1" relative="1" as="geometry">
<mxPoint x="4" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-58" value="N" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-56">
<mxGeometry x="0.7518" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="oYUNFVU70VGZ-GxCTXUZ-70" value="&lt;p class=&quot;p1&quot;&gt;&lt;i&gt;&amp;nbsp;leads business&amp;nbsp;&lt;/i&gt;&lt;/p&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="oYUNFVU70VGZ-GxCTXUZ-56">
<mxGeometry x="-0.0781" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>