diff --git a/doc/figures/structure.png b/doc/figures/structure.png new file mode 100644 index 0000000000000000000000000000000000000000..20f0b133b2b0b1ab60e9caf928ec1ca90f9e03fb GIT binary patch literal 9633 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 o=;Q%Xbo91&5)c)Hv8w1AsQ&#!obQ8P0mgweRJ0%0DcL^%4`~P