diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..57872d0f1e5f46731396e93c4e22b149809798f8
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/vendor/
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..13566b81b018ad684f3a35fee301741b2734c8f4
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000000000000000000000000000000000000..26f61436231b836294e3873ece383ed5da4d5141
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/patterns.iml" filepath="$PROJECT_DIR$/.idea/patterns.iml" />
+    </modules>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/patterns.iml b/.idea/patterns.iml
new file mode 100644
index 0000000000000000000000000000000000000000..365be24e63a252ed3c4b986a362229292a2c4afd
--- /dev/null
+++ b/.idea/patterns.iml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" packagePrefix="Hp\Patterns\" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/.idea/php.xml b/.idea/php.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3a4f333ed8c563180a8fb415aeb1daddddc6dd94
--- /dev/null
+++ b/.idea/php.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="MessDetectorOptionsConfiguration">
+    <option name="transferred" value="true" />
+  </component>
+  <component name="PHPCSFixerOptionsConfiguration">
+    <option name="transferred" value="true" />
+  </component>
+  <component name="PHPCodeSnifferOptionsConfiguration">
+    <option name="highlightLevel" value="WARNING" />
+    <option name="transferred" value="true" />
+  </component>
+  <component name="PhpIncludePathManager">
+    <include_path>
+      <path value="$PROJECT_DIR$/vendor/composer" />
+    </include_path>
+  </component>
+  <component name="PhpProjectSharedConfiguration" php_language_level="8.3" />
+  <component name="PhpStanOptionsConfiguration">
+    <option name="transferred" value="true" />
+  </component>
+  <component name="PsalmOptionsConfiguration">
+    <option name="transferred" value="true" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/sonarlint/issuestore/0/0/00215233e257f10834f8b4b383a7544d9c5fea51 b/.idea/sonarlint/issuestore/0/0/00215233e257f10834f8b4b383a7544d9c5fea51
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/0/3/03fdca5e9ac63e763e5faf0fba470a56f1346842 b/.idea/sonarlint/issuestore/0/3/03fdca5e9ac63e763e5faf0fba470a56f1346842
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/0/a/0a224c110043d0690591e7fd3e369671b22e2805 b/.idea/sonarlint/issuestore/0/a/0a224c110043d0690591e7fd3e369671b22e2805
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/0/f/0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d b/.idea/sonarlint/issuestore/0/f/0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/1/0/100893ec40d4b0b261c2f59f96af4f3ceba09736 b/.idea/sonarlint/issuestore/1/0/100893ec40d4b0b261c2f59f96af4f3ceba09736
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/1/8/18b11e0abff3523819696f07262d349a75abdb03 b/.idea/sonarlint/issuestore/1/8/18b11e0abff3523819696f07262d349a75abdb03
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/1/9/197887b1d7350f1a3487c11bc2f49fa5e0946b30 b/.idea/sonarlint/issuestore/1/9/197887b1d7350f1a3487c11bc2f49fa5e0946b30
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/2/2/2236f22862fca6db4bad3ddd35d787d0bdc8fe93 b/.idea/sonarlint/issuestore/2/2/2236f22862fca6db4bad3ddd35d787d0bdc8fe93
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/2/3/23112e0283e2ac6256e57729712acd1b68e1cb7f b/.idea/sonarlint/issuestore/2/3/23112e0283e2ac6256e57729712acd1b68e1cb7f
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/2/5/25a285fd184040c023f8d27070d1534ed87f9ce2 b/.idea/sonarlint/issuestore/2/5/25a285fd184040c023f8d27070d1534ed87f9ce2
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/2/e/2e711f74fde310eac34ce6d154db0aacd90b8d98 b/.idea/sonarlint/issuestore/2/e/2e711f74fde310eac34ce6d154db0aacd90b8d98
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/3/4/340f9d7a8520b340c3dae6cd7945a049209926c0 b/.idea/sonarlint/issuestore/3/4/340f9d7a8520b340c3dae6cd7945a049209926c0
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/3/7/37106991d149ea238c9bc1b7d4b7477414ba28b8 b/.idea/sonarlint/issuestore/3/7/37106991d149ea238c9bc1b7d4b7477414ba28b8
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897 b/.idea/sonarlint/issuestore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/4/0/409afa63612ce2b9be976ccc0cd41dc2430a2044 b/.idea/sonarlint/issuestore/4/0/409afa63612ce2b9be976ccc0cd41dc2430a2044
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/4/1/41e3818509e1d237a9d0c0074a499af0d4e1b767 b/.idea/sonarlint/issuestore/4/1/41e3818509e1d237a9d0c0074a499af0d4e1b767
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/4/2/4233f6b3ffbc0a852718b96185138e90921485a1 b/.idea/sonarlint/issuestore/4/2/4233f6b3ffbc0a852718b96185138e90921485a1
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/4/4/44ecd97588199f820daa9832c1b971d9a5589d8b b/.idea/sonarlint/issuestore/4/4/44ecd97588199f820daa9832c1b971d9a5589d8b
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/4/9/491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a b/.idea/sonarlint/issuestore/4/9/491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/4/9/49a602fbbaeb3abb68fde9cb365232b41812e05e b/.idea/sonarlint/issuestore/4/9/49a602fbbaeb3abb68fde9cb365232b41812e05e
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/5/a/5a62b394dcf7fb7f61298a3ba9e327e5885f64ac b/.idea/sonarlint/issuestore/5/a/5a62b394dcf7fb7f61298a3ba9e327e5885f64ac
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/5/c/5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd b/.idea/sonarlint/issuestore/5/c/5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/5/f/5fb372f011560bd93c2608749d4eb82ad815e860 b/.idea/sonarlint/issuestore/5/f/5fb372f011560bd93c2608749d4eb82ad815e860
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/6/7/6740c7dcd3493efe761e55e6b086c7589d4b8094 b/.idea/sonarlint/issuestore/6/7/6740c7dcd3493efe761e55e6b086c7589d4b8094
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/6/7/67ea86715647495cf04d49debe539482dee7aed6 b/.idea/sonarlint/issuestore/6/7/67ea86715647495cf04d49debe539482dee7aed6
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/6/e/6ef7a54b7ac2dc4884cae2d91670f15d3a72abca b/.idea/sonarlint/issuestore/6/e/6ef7a54b7ac2dc4884cae2d91670f15d3a72abca
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/7/2/7237e58ac75156fc8a6cf73db5ee1932d927a88e b/.idea/sonarlint/issuestore/7/2/7237e58ac75156fc8a6cf73db5ee1932d927a88e
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/7/3/7359140b7b0cfe2eae6abe9903cbc3d91a291fa2 b/.idea/sonarlint/issuestore/7/3/7359140b7b0cfe2eae6abe9903cbc3d91a291fa2
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/7/4/7414b490c7c67ef8640d942bca6fc957aeb88dc7 b/.idea/sonarlint/issuestore/7/4/7414b490c7c67ef8640d942bca6fc957aeb88dc7
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/7/8/78d8f9f012144989cd59dc8e58b00efd6a849749 b/.idea/sonarlint/issuestore/7/8/78d8f9f012144989cd59dc8e58b00efd6a849749
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/7/b/7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566 b/.idea/sonarlint/issuestore/7/b/7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/8/5/8501725cc8e8af15d1e262096910b7fbd79f4022 b/.idea/sonarlint/issuestore/8/5/8501725cc8e8af15d1e262096910b7fbd79f4022
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/8/8/883cdc9da75c3ba62bc4db46b27e6dc1cc15193b b/.idea/sonarlint/issuestore/8/8/883cdc9da75c3ba62bc4db46b27e6dc1cc15193b
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/8/8/88fc03da1c5e4c0e672160d9e5ad06b95975bfd4 b/.idea/sonarlint/issuestore/8/8/88fc03da1c5e4c0e672160d9e5ad06b95975bfd4
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/8/9/8952189aefb295c2b4fd6e25ecdc8055934c87b7 b/.idea/sonarlint/issuestore/8/9/8952189aefb295c2b4fd6e25ecdc8055934c87b7
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/8/a/8abf9f699b61ef1477359e3de2630fc646090a53 b/.idea/sonarlint/issuestore/8/a/8abf9f699b61ef1477359e3de2630fc646090a53
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/8/e/8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e b/.idea/sonarlint/issuestore/8/e/8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/8/e/8e46e6b6bc30ba859d323263e009551e60b96fc7 b/.idea/sonarlint/issuestore/8/e/8e46e6b6bc30ba859d323263e009551e60b96fc7
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d b/.idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/9/2/921e67a985407143cf0f08429e13fbbf8ff15b2c b/.idea/sonarlint/issuestore/9/2/921e67a985407143cf0f08429e13fbbf8ff15b2c
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/9/f/9f65cf811c746f7951719af4d7b947f5539d5196 b/.idea/sonarlint/issuestore/9/f/9f65cf811c746f7951719af4d7b947f5539d5196
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302 b/.idea/sonarlint/issuestore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/b/3/b3acde0b119d81a9d81bd055a2a7918d8a9e3318 b/.idea/sonarlint/issuestore/b/3/b3acde0b119d81a9d81bd055a2a7918d8a9e3318
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/b/8/b878e4cb197da0f597dbce90f69f6451a1670556 b/.idea/sonarlint/issuestore/b/8/b878e4cb197da0f597dbce90f69f6451a1670556
new file mode 100644
index 0000000000000000000000000000000000000000..f5f575f325fdbd6a27a820f10fa580639a19f631
--- /dev/null
+++ b/.idea/sonarlint/issuestore/b/8/b878e4cb197da0f597dbce90f69f6451a1670556
@@ -0,0 +1,2 @@
+
+§	php:S1488	"`Immediately return this expression instead of assigning it to the temporary variable "$account".(©Ÿ§Åúÿÿÿÿ8¶°‹ò2J$3d3cfc97-789f-461a-bb60-8a34722ec00c
\ No newline at end of file
diff --git a/.idea/sonarlint/issuestore/b/8/b8ed1daa96092063f32b1324e0e450b09d2c1dd4 b/.idea/sonarlint/issuestore/b/8/b8ed1daa96092063f32b1324e0e450b09d2c1dd4
new file mode 100644
index 0000000000000000000000000000000000000000..a6c84282b75da1ca96879446d2c58201e0da9bed
--- /dev/null
+++ b/.idea/sonarlint/issuestore/b/8/b8ed1daa96092063f32b1324e0e450b09d2c1dd4
@@ -0,0 +1,3 @@
+
+p	php:S1068	")Remove this unused "$date" private field.(òØô”üÿÿÿÿ8‹¬Àð2J$0c0a033e-1ff4-40bd-b40b-abfcc293c20f
+r	php:S1068"+Remove this unused "$amount" private field.(èÀ‘ðüÿÿÿÿ8‹¬Àð2J$f3de3300-a9eb-4494-905d-cadc131cc062
\ No newline at end of file
diff --git a/.idea/sonarlint/issuestore/b/b/bb6499b8e938f92a3695fff1afe57edea4b9efb7 b/.idea/sonarlint/issuestore/b/b/bb6499b8e938f92a3695fff1afe57edea4b9efb7
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/b/c/bccad600b7d1dd6df4440bf078a25ac1916ac2d3 b/.idea/sonarlint/issuestore/b/c/bccad600b7d1dd6df4440bf078a25ac1916ac2d3
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/b/e/be00c5b2b2e0e613e7b39232498768b51a7d6ed5 b/.idea/sonarlint/issuestore/b/e/be00c5b2b2e0e613e7b39232498768b51a7d6ed5
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/c/0/c0a7fe4a4b4a1a70898a5812441354d3619bb4fc b/.idea/sonarlint/issuestore/c/0/c0a7fe4a4b4a1a70898a5812441354d3619bb4fc
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/c/0/c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d b/.idea/sonarlint/issuestore/c/0/c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/c/a/ca033487399677ec4908c1f9a8834655f0f4df67 b/.idea/sonarlint/issuestore/c/a/ca033487399677ec4908c1f9a8834655f0f4df67
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/c/a/ca930674550163bac55780c0116fb972e1ee558b b/.idea/sonarlint/issuestore/c/a/ca930674550163bac55780c0116fb972e1ee558b
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/c/b/cb3428aff5a57ce98152a18ac112512d5945c4ca b/.idea/sonarlint/issuestore/c/b/cb3428aff5a57ce98152a18ac112512d5945c4ca
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/d/3/d3a697d31a6c49c8e222af4bbebf2361eb98ff99 b/.idea/sonarlint/issuestore/d/3/d3a697d31a6c49c8e222af4bbebf2361eb98ff99
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/e/0/e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e b/.idea/sonarlint/issuestore/e/0/e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/e/3/e3ff9263fa6976a6388af1e288c15d159f976f8f b/.idea/sonarlint/issuestore/e/3/e3ff9263fa6976a6388af1e288c15d159f976f8f
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/e/4/e464416b53a806b9730005e0bb693de604d12c82 b/.idea/sonarlint/issuestore/e/4/e464416b53a806b9730005e0bb693de604d12c82
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/e/4/e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66 b/.idea/sonarlint/issuestore/e/4/e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/e/5/e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b b/.idea/sonarlint/issuestore/e/5/e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/e/7/e75b4a1e09e07da498641870dfc86cd4079b3432 b/.idea/sonarlint/issuestore/e/7/e75b4a1e09e07da498641870dfc86cd4079b3432
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/e/c/ec2f06c5ede9538c4abad6bc160a68970ed34fc7 b/.idea/sonarlint/issuestore/e/c/ec2f06c5ede9538c4abad6bc160a68970ed34fc7
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/f/2/f2082986f709d9d167cd8743efee93c2663941ee b/.idea/sonarlint/issuestore/f/2/f2082986f709d9d167cd8743efee93c2663941ee
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/f/5/f55eda3a2b1f01048714c98e5a7ed49a3eba642d b/.idea/sonarlint/issuestore/f/5/f55eda3a2b1f01048714c98e5a7ed49a3eba642d
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/f/a/fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f b/.idea/sonarlint/issuestore/f/a/fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/index.pb b/.idea/sonarlint/issuestore/index.pb
new file mode 100644
index 0000000000000000000000000000000000000000..977e4b8d75981006b0d8579b2bbd65676e06bf3c
--- /dev/null
+++ b/.idea/sonarlint/issuestore/index.pb
@@ -0,0 +1,352 @@
+
+9
+	README.md,8\e\8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d
+:
+
+.gitignore,a\5\a5cc2925ca8258af241be7e5b0381edf30266302
+=
+
composer.json,3\9\3957b91a0d8450cea0115cfd5af69eac90d75897
+L
+src/ServiceLocator/README.md,2\e\2e711f74fde310eac34ce6d154db0aacd90b8d98
+W
+'src/ServiceLocator/ServiceInterface.php,5\c\5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd
+U
+%src/ServiceLocator/ServiceLocator.php,4\0\409afa63612ce2b9be976ccc0cd41dc2430a2044
+V
+&src/ServiceLocator/RegisterService.php,8\8\883cdc9da75c3ba62bc4db46b27e6dc1cc15193b
+9
+	index.php,b\b\bb6499b8e938f92a3695fff1afe57edea4b9efb7
+O
+src/DependencyInjection/ATM.php,f\a\fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f
+V
+&src/DependencyInjection/CreditCard.php,b\e\be00c5b2b2e0e613e7b39232498768b51a7d6ed5
+Q
+!src/DependencyInjection/README.md,c\b\cb3428aff5a57ce98152a18ac112512d5945c4ca
+M
+src/AbstractFactory/README.md,3\7\37106991d149ea238c9bc1b7d4b7477414ba28b8
+S
+#src/AbstractFactory/CardFactory.php,8\e\8e46e6b6bc30ba859d323263e009551e60b96fc7
+R
+"src/AbstractFactory/CreditCard.php,c\a\ca033487399677ec4908c1f9a8834655f0f4df67
+Q
+!src/AbstractFactory/DebitCard.php,6\7\6740c7dcd3493efe761e55e6b086c7589d4b8094
+[
++src/AbstractFactory/SberbankCardFactory.php,f\5\f55eda3a2b1f01048714c98e5a7ed49a3eba642d
+Z
+*src/AbstractFactory/TinkoffCardFactory.php,c\0\c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d
+[
++src/AbstractFactory/SberSalaryDebitCard.php,4\9\491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a
+^
+.src/AbstractFactory/SberMortgageCreditCard.php,8\8\88fc03da1c5e4c0e672160d9e5ad06b95975bfd4
+\
+,src/AbstractFactory/TinkStipendDebitCard.php,9\f\9f65cf811c746f7951719af4d7b947f5539d5196
+]
+-src/AbstractFactory/TinkCarLoanCreditCard.php,f\2\f2082986f709d9d167cd8743efee93c2663941ee
+G
+src/Decorator/README.md,1\9\197887b1d7350f1a3487c11bc2f49fa5e0946b30
+H
+src/Strategy/Payment.php,e\4\e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66
+O
+src/Strategy/AnnuityPayment.php,7\3\7359140b7b0cfe2eae6abe9903cbc3d91a291fa2
+T
+$src/Strategy/DifferentialPayment.php,2\2\2236f22862fca6db4bad3ddd35d787d0bdc8fe93
+F
+src/Strategy/README.md,b\c\bccad600b7d1dd6df4440bf078a25ac1916ac2d3
+G
+src/Command/Command.php,e\4\e464416b53a806b9730005e0bb693de604d12c82
+E
+src/Command/README.md,c\a\ca930674550163bac55780c0116fb972e1ee558b
+G
+src/Command/Invoker.php,4\2\4233f6b3ffbc0a852718b96185138e90921485a1
+K
+src/Command/ReceiverATM.php,0\3\03fdca5e9ac63e763e5faf0fba470a56f1346842
+P
+ src/Command/EnterCashCommand.php,e\3\e3ff9263fa6976a6388af1e288c15d159f976f8f
+S
+#src/Command/WithdrawCashCommand.php,1\8\18b11e0abff3523819696f07262d349a75abdb03
+F
+src/Registry/README.md,4\1\41e3818509e1d237a9d0c0074a499af0d4e1b767
+I
+src/Registry/Registry.php,8\5\8501725cc8e8af15d1e262096910b7fbd79f4022
+K
+src/FactoryMethod/README.md,6\e\6ef7a54b7ac2dc4884cae2d91670f15d3a72abca
+D
+src/Facade/README.md,5\f\5fb372f011560bd93c2608749d4eb82ad815e860
+E
+src/Facade/Facade.php,8\e\8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e
+G
+src/Adapter/Account.php,7\2\7237e58ac75156fc8a6cf73db5ee1932d927a88e
+N
+src/Adapter/SavingsAccount.php,b\3\b3acde0b119d81a9d81bd055a2a7918d8a9e3318
+P
+ src/Adapter/AccountInterface.php,2\5\25a285fd184040c023f8d27070d1534ed87f9ce2
+U
+%src/Adapter/OtherAccountInterface.php,c\0\c0a7fe4a4b4a1a70898a5812441354d3619bb4fc
+N
+src/Adapter/AccountAdapter.php,e\0\e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e
+E
+src/Adapter/README.md,8\9\8952189aefb295c2b4fd6e25ecdc8055934c87b7
+F
+src/Iterator/README.md,4\9\49a602fbbaeb3abb68fde9cb365232b41812e05e
+H
+src/Iterator/Payment.php,b\8\b8ed1daa96092063f32b1324e0e450b09d2c1dd4
+L
+src/Iterator/PaymentList.php,4\4\44ecd97588199f820daa9832c1b971d9a5589d8b
+E
+src/Builder/README.md,0\0\00215233e257f10834f8b4b383a7544d9c5fea51
+G
+src/Builder/Builder.php,0\a\0a224c110043d0690591e7fd3e369671b22e2805
+N
+src/Builder/AccountBuilder.php,2\3\23112e0283e2ac6256e57729712acd1b68e1cb7f
+H
+src/Builder/Director.php,b\8\b878e4cb197da0f597dbce90f69f6451a1670556
+F
+src/Observer/README.md,9\2\921e67a985407143cf0f08429e13fbbf8ff15b2c
+E
+src/Observer/Card.php,5\a\5a62b394dcf7fb7f61298a3ba9e327e5885f64ac
+M
+src/Observer/CardObserver.php,e\c\ec2f06c5ede9538c4abad6bc160a68970ed34fc7
+I
+src/Decorator/Account.php,7\4\7414b490c7c67ef8640d942bca6fc957aeb88dc7
+R
+"src/Decorator/AccountDecorator.php,3\4\340f9d7a8520b340c3dae6cd7945a049209926c0
+P
+ src/Decorator/SavingsAccount.php,0\f\0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d
+B
+src/Facade/ATM.php,7\b\7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566
+E
+src/Facade/Client.php,6\7\67ea86715647495cf04d49debe539482dee7aed6
+J
+src/FactoryMethod/Card.php,e\7\e75b4a1e09e07da498641870dfc86cd4079b3432
+Q
+!src/FactoryMethod/CardFactory.php,8\a\8abf9f699b61ef1477359e3de2630fc646090a53
+O
+src/FactoryMethod/DebitCard.php,1\0\100893ec40d4b0b261c2f59f96af4f3ceba09736
+P
+ src/FactoryMethod/CreditCard.php,e\5\e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b
+V
+&src/FactoryMethod/DebitCardFactory.php,7\8\78d8f9f012144989cd59dc8e58b00efd6a849749
+W
+'src/FactoryMethod/CreditCardFactory.php,d\3\d3a697d31a6c49c8e222af4bbebf2361eb98ff99
+
+Q.idea/sonarlint/securityhotspotstore/c/a/ca930674550163bac55780c0116fb972e1ee558b,9\9\9961b39c56d9a3e7555253107126ef78869633bb
+w
+G.idea/sonarlint/issuestore/c/a/ca930674550163bac55780c0116fb972e1ee558b,6\6\660f20c6fe8c9722ad4c58f380f2bbce75358f1e
+
+Q.idea/sonarlint/securityhotspotstore/4/2/4233f6b3ffbc0a852718b96185138e90921485a1,2\1\21085957b9b792633ddc54153b0d843508ef9f37
+
+Q.idea/sonarlint/securityhotspotstore/0/3/03fdca5e9ac63e763e5faf0fba470a56f1346842,0\c\0c589b3d861764bdbe1ab274ff38f90b51564842
+
+Q.idea/sonarlint/securityhotspotstore/e/3/e3ff9263fa6976a6388af1e288c15d159f976f8f,e\6\e6d643d94b8cdb5f646dab5e1d19551aaf60a411
+
+Q.idea/sonarlint/securityhotspotstore/1/8/18b11e0abff3523819696f07262d349a75abdb03,9\e\9e16a1982cc2b685b24576c50325c49707e9833d
+w
+G.idea/sonarlint/issuestore/1/8/18b11e0abff3523819696f07262d349a75abdb03,3\1\315f3cd16acac36af09395cb515e80fb987ce39a
+w
+G.idea/sonarlint/issuestore/4/1/41e3818509e1d237a9d0c0074a499af0d4e1b767,5\d\5d6dd7596e5a60820435d3bc1565fc969175312d
+
+Q.idea/sonarlint/securityhotspotstore/4/1/41e3818509e1d237a9d0c0074a499af0d4e1b767,0\6\069c76a017ef168776ac8749e83d2231d7953794
+
+Q.idea/sonarlint/securityhotspotstore/8/5/8501725cc8e8af15d1e262096910b7fbd79f4022,4\a\4a7cf17bdf655be07b983b32b01fcc3e94c59554
+w
+G.idea/sonarlint/issuestore/6/e/6ef7a54b7ac2dc4884cae2d91670f15d3a72abca,5\c\5c14fefb54f6956c26f737502cb6831ad0579b95
+
+Q.idea/sonarlint/securityhotspotstore/6/e/6ef7a54b7ac2dc4884cae2d91670f15d3a72abca,7\b\7bd83252239ef0792b371cc9874c7db518ef14b5
+
+Q.idea/sonarlint/securityhotspotstore/5/f/5fb372f011560bd93c2608749d4eb82ad815e860,b\f\bf76f61f74a82ea9383652d8f43fc09ff6228b9c
+w
+G.idea/sonarlint/issuestore/5/f/5fb372f011560bd93c2608749d4eb82ad815e860,f\1\f1ea3b5979577f0b9b1592fb0e2c370ad1ed5404
+
+Q.idea/sonarlint/securityhotspotstore/8/e/8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e,c\7\c78432214a33e2637ae937c2db965b96c2eaf680
+w
+G.idea/sonarlint/issuestore/b/3/b3acde0b119d81a9d81bd055a2a7918d8a9e3318,a\b\ab618f023e4ed6e0c15e9434f6a0e635b302ab95
+
+Q.idea/sonarlint/securityhotspotstore/7/2/7237e58ac75156fc8a6cf73db5ee1932d927a88e,3\c\3cdc30f8cb4e2792d29902b7b0fde2ae10dd5c51
+
+Q.idea/sonarlint/securityhotspotstore/b/3/b3acde0b119d81a9d81bd055a2a7918d8a9e3318,6\f\6fb331dd68977bbc34af560dff94a575bd867e1e
+
+Q.idea/sonarlint/securityhotspotstore/2/5/25a285fd184040c023f8d27070d1534ed87f9ce2,1\0\10aaa20c9dd19c0eaf13b0cef07c8565a70edbf9
+w
+G.idea/sonarlint/issuestore/2/5/25a285fd184040c023f8d27070d1534ed87f9ce2,a\0\a0fb91364194a05bf1b62042431801ea32dbb90d
+S
+#.idea/sonarlint/issuestore/index.pb,9\f\9fe84ebb15faf917b7def6236dba604453cc61e0
+
+Q.idea/sonarlint/securityhotspotstore/c/0/c0a7fe4a4b4a1a70898a5812441354d3619bb4fc,3\9\3935065cd6c285b2136abe28675603afeeda55c0
+w
+G.idea/sonarlint/issuestore/c/0/c0a7fe4a4b4a1a70898a5812441354d3619bb4fc,9\c\9c7cf86e21da8e2be5c65747ee7e5aae9106433d
+]
+-.idea/sonarlint/securityhotspotstore/index.pb,8\8\88a9255124c95bdc913197c120a8d560edc59c8e
+
+Q.idea/sonarlint/securityhotspotstore/e/0/e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e,7\b\7b67d4c120b57bce0e3d6242e7153c77da5de5d0
+w
+G.idea/sonarlint/issuestore/8/9/8952189aefb295c2b4fd6e25ecdc8055934c87b7,7\4\747ae5cac9a90b67ccf116961185765e33de5812
+w
+G.idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d,b\4\b4a0b63ce8560bbc5de0f9995c20cc861dc2adb3
+w
+G.idea/sonarlint/issuestore/4/9/49a602fbbaeb3abb68fde9cb365232b41812e05e,4\6\461e1986636cf65c635f78f0b662e3c7d13bd746
+w
+G.idea/sonarlint/issuestore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897,e\8\e80b46a84e6d75e2791737281bf39be956d40584
+
+Q.idea/sonarlint/securityhotspotstore/8/9/8952189aefb295c2b4fd6e25ecdc8055934c87b7,9\0\90fa9b799bada90b1d838eb18540474cac1ada04
+
+Q.idea/sonarlint/securityhotspotstore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302,3\0\30205a209c6ce77c4cfc19a09e6f57c588b7fb88
+
+Q.idea/sonarlint/securityhotspotstore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d,1\0\10a03f31c4dce92cb371e761ce9429428bb6c176
+
+Q.idea/sonarlint/securityhotspotstore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897,4\6\46f94a7aebd2eec52b4a72f3910f768c64c6be19
+w
+G.idea/sonarlint/issuestore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302,e\d\ed67eb178d523a4b3f117dcbe0eda5196367ceec
+
+Q.idea/sonarlint/securityhotspotstore/4/9/49a602fbbaeb3abb68fde9cb365232b41812e05e,f\2\f29b30011f3d2ea2a2eb2b1d4d711dfe837d02d9
+w
+G.idea/sonarlint/issuestore/2/e/2e711f74fde310eac34ce6d154db0aacd90b8d98,3\a\3ac83761be1a341d6b8db11631d71e5f89e45c28
+
+Q.idea/sonarlint/securityhotspotstore/b/8/b8ed1daa96092063f32b1324e0e450b09d2c1dd4,8\3\837c13502b2614361e1f0ec580ce8c5b01ed4b4e
+
+Q.idea/sonarlint/securityhotspotstore/2/e/2e711f74fde310eac34ce6d154db0aacd90b8d98,e\e\ee8224b8e2df89d20d6318c8c61ca4a5920a18d4
+
+Q.idea/sonarlint/securityhotspotstore/4/4/44ecd97588199f820daa9832c1b971d9a5589d8b,d\8\d8042d4c3087c4d03e1e7e7bd5f7184d20c59a66
+w
+G.idea/sonarlint/issuestore/5/c/5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd,b\7\b7557c84d8b2808a8362d0a2ea3e0385ccbc2564
+w
+G.idea/sonarlint/issuestore/0/a/0a224c110043d0690591e7fd3e369671b22e2805,c\0\c06fdfb2de03e65d63285271d529cea798556f05
+w
+G.idea/sonarlint/issuestore/0/0/00215233e257f10834f8b4b383a7544d9c5fea51,2\2\22326d26b2b9dad1fa729911e707336516fb606d
+w
+G.idea/sonarlint/issuestore/2/3/23112e0283e2ac6256e57729712acd1b68e1cb7f,0\e\0e03d4a113cd6c4c62f12fb156c505251a36d62c
+
+Q.idea/sonarlint/securityhotspotstore/0/a/0a224c110043d0690591e7fd3e369671b22e2805,4\e\4e1828e9fed95a4e4c69817b5c83d6511e4159a4
+
+Q.idea/sonarlint/securityhotspotstore/5/c/5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd,2\5\2591e8c372517c5e816a13782a369d6b65672c84
+
+Q.idea/sonarlint/securityhotspotstore/0/0/00215233e257f10834f8b4b383a7544d9c5fea51,e\7\e76ea2d04809d0b6c0400af49d5aaa8c785230f4
+
+Q.idea/sonarlint/securityhotspotstore/4/0/409afa63612ce2b9be976ccc0cd41dc2430a2044,6\d\6d856d653744127ea9602135cf185ada60c29305
+
+Q.idea/sonarlint/securityhotspotstore/2/3/23112e0283e2ac6256e57729712acd1b68e1cb7f,7\6\76c3ea9bd0592d422fca8f9762c1e60a6fa0a9a9
+
+Q.idea/sonarlint/securityhotspotstore/b/8/b878e4cb197da0f597dbce90f69f6451a1670556,a\f\af941929c2430fd5757deaba54e9c561d08104ea
+
+Q.idea/sonarlint/securityhotspotstore/8/8/883cdc9da75c3ba62bc4db46b27e6dc1cc15193b,2\4\24e60145b337a3ed30c0eb4b83f1195aea7f721f
+
+Q.idea/sonarlint/securityhotspotstore/9/2/921e67a985407143cf0f08429e13fbbf8ff15b2c,2\8\28d452b4b5630a06b3f1e48fe20e1dee3c7f5fe4
+w
+G.idea/sonarlint/issuestore/8/8/883cdc9da75c3ba62bc4db46b27e6dc1cc15193b,7\6\760ff9c0e4200ba85efe626164f98d52375b04cf
+w
+G.idea/sonarlint/issuestore/9/2/921e67a985407143cf0f08429e13fbbf8ff15b2c,7\0\70cba76c31e30833b25b5dabe4bce9360ac84bc7
+
+Q.idea/sonarlint/securityhotspotstore/5/a/5a62b394dcf7fb7f61298a3ba9e327e5885f64ac,9\4\940ba16204e8421ce88f20a10d7368e5964bb366
+
+Q.idea/sonarlint/securityhotspotstore/e/c/ec2f06c5ede9538c4abad6bc160a68970ed34fc7,f\b\fbbc1e922a8271475da804bf5e9d6e5955f01bc7
+
+Q.idea/sonarlint/securityhotspotstore/3/4/340f9d7a8520b340c3dae6cd7945a049209926c0,e\c\ecd821d70560b244ad4553d8595ea4e7c627082c
+w
+G.idea/sonarlint/issuestore/3/4/340f9d7a8520b340c3dae6cd7945a049209926c0,8\6\864ae88f7287a7cc85ab15f268be65ad0bdaba61
+
+Q.idea/sonarlint/securityhotspotstore/b/b/bb6499b8e938f92a3695fff1afe57edea4b9efb7,3\3\33146ca102dfb9ad1815170db874f476c67ed65e
+
+Q.idea/sonarlint/securityhotspotstore/7/4/7414b490c7c67ef8640d942bca6fc957aeb88dc7,3\a\3ada665089f1ba586ca926b06823cbd880297a6f
+w
+G.idea/sonarlint/issuestore/7/4/7414b490c7c67ef8640d942bca6fc957aeb88dc7,0\f\0f7e510d9ea7103745468624235442a0a49cda55
+
+Q.idea/sonarlint/securityhotspotstore/f/a/fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f,f\2\f2b6093602b3988d4b572352f6d695b82e19a2f9
+
+Q.idea/sonarlint/securityhotspotstore/0/f/0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d,a\1\a1278dab701e354fea0712a7d98a054725dbbd18
+w
+G.idea/sonarlint/issuestore/f/a/fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f,6\e\6eca5b25d6903836d53304e7c57daec40f235693
+w
+G.idea/sonarlint/issuestore/0/f/0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d,a\c\acb1bb93c978b3d2dda541aa47e2c989fa9f9220
+w
+G.idea/sonarlint/issuestore/b/e/be00c5b2b2e0e613e7b39232498768b51a7d6ed5,4\2\423fae0db0d6bb2550ca6ee81774c249a6e4e597
+
+Q.idea/sonarlint/securityhotspotstore/7/b/7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566,4\6\46f6eea7b19c57c53c9bb3863ee82a1b5e7ba01d
+w
+G.idea/sonarlint/issuestore/7/b/7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566,6\1\6198e4717a1b6b94abe788bf7e7cf2c151f5a8b0
+
+Q.idea/sonarlint/securityhotspotstore/b/e/be00c5b2b2e0e613e7b39232498768b51a7d6ed5,2\b\2b464dab8a15c17e8ac59e0de4de0ac2d21b3466
+w
+G.idea/sonarlint/issuestore/6/7/67ea86715647495cf04d49debe539482dee7aed6,7\3\7392be92bae5f6c330d732c11efe59054698ef88
+
+Q.idea/sonarlint/securityhotspotstore/6/7/67ea86715647495cf04d49debe539482dee7aed6,9\e\9e4e80af5722d0c072c8f7f5089c0ab0f18e2a19
+w
+G.idea/sonarlint/issuestore/c/b/cb3428aff5a57ce98152a18ac112512d5945c4ca,b\0\b012a5ad5d15cb8ec36158c7f2b3351c891d78b9
+
+Q.idea/sonarlint/securityhotspotstore/8/a/8abf9f699b61ef1477359e3de2630fc646090a53,3\6\36738fcdbae6d87424bf8a2520ad0817c7020034
+
+Q.idea/sonarlint/securityhotspotstore/c/b/cb3428aff5a57ce98152a18ac112512d5945c4ca,3\e\3edaed16c3fd01a6f3a89847e9242cd921f5d6d1
+
+Q.idea/sonarlint/securityhotspotstore/e/7/e75b4a1e09e07da498641870dfc86cd4079b3432,6\4\644ca38258c8d839cc8b685a275e0080763956df
+w
+G.idea/sonarlint/issuestore/8/a/8abf9f699b61ef1477359e3de2630fc646090a53,1\6\16681390eb2c55bedf7143c5602bc5f8d2944247
+w
+G.idea/sonarlint/issuestore/3/7/37106991d149ea238c9bc1b7d4b7477414ba28b8,c\9\c92682892a66c2d98df9f3aca7dbb89c9c1e993d
+w
+G.idea/sonarlint/issuestore/e/7/e75b4a1e09e07da498641870dfc86cd4079b3432,9\b\9bb3887e8521aafcaf315f669e238cabcb9080ee
+
+Q.idea/sonarlint/securityhotspotstore/8/e/8e46e6b6bc30ba859d323263e009551e60b96fc7,4\5\45a56aa80d0449c3b51caab78db57347c477bc00
+w
+G.idea/sonarlint/issuestore/8/e/8e46e6b6bc30ba859d323263e009551e60b96fc7,f\5\f58ee61f0eab56559be0cd487b45ad27abb6b0fd
+w
+G.idea/sonarlint/issuestore/1/0/100893ec40d4b0b261c2f59f96af4f3ceba09736,e\5\e522c216bb070208621186a389b60172ed7b27ba
+
+Q.idea/sonarlint/securityhotspotstore/3/7/37106991d149ea238c9bc1b7d4b7477414ba28b8,6\e\6efa73fdbf1248556967404a965cb612c5ea8821
+
+Q.idea/sonarlint/securityhotspotstore/e/5/e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b,3\a\3af37e5750c2904514572b2a3f00d111b360b0d3
+w
+G.idea/sonarlint/issuestore/c/a/ca033487399677ec4908c1f9a8834655f0f4df67,b\9\b913d406f1d386713b4af7a450eac66b816f8d3e
+
+Q.idea/sonarlint/securityhotspotstore/1/0/100893ec40d4b0b261c2f59f96af4f3ceba09736,f\f\ffb1b59b1a11a2dcb3a4771ceb9e9a615badcac9
+
+Q.idea/sonarlint/securityhotspotstore/7/8/78d8f9f012144989cd59dc8e58b00efd6a849749,9\6\961763665f9beef43050bc97ba4fa832433aecba
+
+Q.idea/sonarlint/securityhotspotstore/c/a/ca033487399677ec4908c1f9a8834655f0f4df67,e\e\eebcc6d7d6c616b45584b4be28b8790b5ab6abda
+
+Q.idea/sonarlint/securityhotspotstore/6/7/6740c7dcd3493efe761e55e6b086c7589d4b8094,8\c\8ccc2feda74e0ef0fa66f183442e59c0dd12e394
+w
+G.idea/sonarlint/issuestore/d/3/d3a697d31a6c49c8e222af4bbebf2361eb98ff99,4\d\4df9f4fb889bc0de19634bce5ebd84d5b9eed5fa
+w
+G.idea/sonarlint/issuestore/6/7/6740c7dcd3493efe761e55e6b086c7589d4b8094,2\9\29caa5287927d2ab0e923f5a69a42f3d4dc182f2
+w
+G.idea/sonarlint/issuestore/7/8/78d8f9f012144989cd59dc8e58b00efd6a849749,6\2\62847eff266b657b79e70cb4cd99226d76296a82
+
+Q.idea/sonarlint/securityhotspotstore/d/3/d3a697d31a6c49c8e222af4bbebf2361eb98ff99,9\b\9bf259071e1352c2a26c77504f0b99f27c88f41e
+w
+G.idea/sonarlint/issuestore/f/5/f55eda3a2b1f01048714c98e5a7ed49a3eba642d,2\5\25147cfaecf2786ec729ece6148f406a5dcb256b
+
+Q.idea/sonarlint/securityhotspotstore/f/5/f55eda3a2b1f01048714c98e5a7ed49a3eba642d,9\f\9fcef19b17e8862def9884db44cbd628f0b871fa
+
+Q.idea/sonarlint/securityhotspotstore/c/0/c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d,9\8\98e4bea93dfebe942da7b170d7f873101b1324bc
+
+Q.idea/sonarlint/securityhotspotstore/8/8/88fc03da1c5e4c0e672160d9e5ad06b95975bfd4,f\4\f4d58f3e042dea084828514bb7fb3f882404fb8d
+w
+G.idea/sonarlint/issuestore/4/9/491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a,3\e\3e065f63398b0d31a0c285c15b25ae7528113ca5
+
+Q.idea/sonarlint/securityhotspotstore/4/9/491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a,4\3\43f3928513696390b86b96d43ee14704b9b7b80d
+w
+G.idea/sonarlint/issuestore/8/8/88fc03da1c5e4c0e672160d9e5ad06b95975bfd4,6\6\66eeaba400b4cb60bb24c44c1452c3449acf33f6
+w
+G.idea/sonarlint/issuestore/f/2/f2082986f709d9d167cd8743efee93c2663941ee,3\4\3418a5e93fb49bf5a260b3472efa9bd3f40f63a3
+
+Q.idea/sonarlint/securityhotspotstore/9/f/9f65cf811c746f7951719af4d7b947f5539d5196,b\0\b073b8b89b1b86291eccc011f31d799ec79025e7
+
+Q.idea/sonarlint/securityhotspotstore/f/2/f2082986f709d9d167cd8743efee93c2663941ee,c\0\c04e23f9d0703e7d3a287ebb992022efc85b4154
+w
+G.idea/sonarlint/issuestore/1/9/197887b1d7350f1a3487c11bc2f49fa5e0946b30,3\0\307b9eb7dffcc77ecfe411808f612178240d8c72
+
+Q.idea/sonarlint/securityhotspotstore/1/9/197887b1d7350f1a3487c11bc2f49fa5e0946b30,d\0\d099e5fb52d27d0626de2ea2d356193ccded9ed6
+w
+G.idea/sonarlint/issuestore/e/4/e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66,c\b\cb4dec6d5021997f06ffc89186c0f83331be1301
+
+Q.idea/sonarlint/securityhotspotstore/e/4/e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66,6\2\629d6160adb07e2bcc2176f6bb288388e780bdbf
+
+Q.idea/sonarlint/securityhotspotstore/7/3/7359140b7b0cfe2eae6abe9903cbc3d91a291fa2,6\b\6b32629e48b076ec5fb414cc45b60bdae0d4f7b5
+
+Q.idea/sonarlint/securityhotspotstore/2/2/2236f22862fca6db4bad3ddd35d787d0bdc8fe93,d\b\dbd828883d9535da4fae17e30caa64ad72662c69
+
+Q.idea/sonarlint/securityhotspotstore/b/c/bccad600b7d1dd6df4440bf078a25ac1916ac2d3,e\d\ed8e56353ae013d5fe7eff706bc473dacc9ad090
+w
+G.idea/sonarlint/issuestore/b/c/bccad600b7d1dd6df4440bf078a25ac1916ac2d3,9\2\9223bc35d0474704cbf93dae9f333a6a0dae6086
+
+Q.idea/sonarlint/securityhotspotstore/e/4/e464416b53a806b9730005e0bb693de604d12c82,7\2\7203a728b0e60116f6eb3b587966036c42f4e747
+w
+G.idea/sonarlint/issuestore/e/4/e464416b53a806b9730005e0bb693de604d12c82,7\7\77a7ffdc4ef5c2eb2048f0673c2b72c1e2f72f90
\ No newline at end of file
diff --git a/.idea/sonarlint/securityhotspotstore/0/0/00215233e257f10834f8b4b383a7544d9c5fea51 b/.idea/sonarlint/securityhotspotstore/0/0/00215233e257f10834f8b4b383a7544d9c5fea51
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/0/3/03fdca5e9ac63e763e5faf0fba470a56f1346842 b/.idea/sonarlint/securityhotspotstore/0/3/03fdca5e9ac63e763e5faf0fba470a56f1346842
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/0/a/0a224c110043d0690591e7fd3e369671b22e2805 b/.idea/sonarlint/securityhotspotstore/0/a/0a224c110043d0690591e7fd3e369671b22e2805
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/0/f/0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d b/.idea/sonarlint/securityhotspotstore/0/f/0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/1/0/100893ec40d4b0b261c2f59f96af4f3ceba09736 b/.idea/sonarlint/securityhotspotstore/1/0/100893ec40d4b0b261c2f59f96af4f3ceba09736
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/1/8/18b11e0abff3523819696f07262d349a75abdb03 b/.idea/sonarlint/securityhotspotstore/1/8/18b11e0abff3523819696f07262d349a75abdb03
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/1/9/197887b1d7350f1a3487c11bc2f49fa5e0946b30 b/.idea/sonarlint/securityhotspotstore/1/9/197887b1d7350f1a3487c11bc2f49fa5e0946b30
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/2/2/2236f22862fca6db4bad3ddd35d787d0bdc8fe93 b/.idea/sonarlint/securityhotspotstore/2/2/2236f22862fca6db4bad3ddd35d787d0bdc8fe93
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/2/3/23112e0283e2ac6256e57729712acd1b68e1cb7f b/.idea/sonarlint/securityhotspotstore/2/3/23112e0283e2ac6256e57729712acd1b68e1cb7f
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/2/5/25a285fd184040c023f8d27070d1534ed87f9ce2 b/.idea/sonarlint/securityhotspotstore/2/5/25a285fd184040c023f8d27070d1534ed87f9ce2
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/2/e/2e711f74fde310eac34ce6d154db0aacd90b8d98 b/.idea/sonarlint/securityhotspotstore/2/e/2e711f74fde310eac34ce6d154db0aacd90b8d98
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/3/4/340f9d7a8520b340c3dae6cd7945a049209926c0 b/.idea/sonarlint/securityhotspotstore/3/4/340f9d7a8520b340c3dae6cd7945a049209926c0
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/3/7/37106991d149ea238c9bc1b7d4b7477414ba28b8 b/.idea/sonarlint/securityhotspotstore/3/7/37106991d149ea238c9bc1b7d4b7477414ba28b8
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897 b/.idea/sonarlint/securityhotspotstore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/4/0/409afa63612ce2b9be976ccc0cd41dc2430a2044 b/.idea/sonarlint/securityhotspotstore/4/0/409afa63612ce2b9be976ccc0cd41dc2430a2044
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/4/1/41e3818509e1d237a9d0c0074a499af0d4e1b767 b/.idea/sonarlint/securityhotspotstore/4/1/41e3818509e1d237a9d0c0074a499af0d4e1b767
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/4/2/4233f6b3ffbc0a852718b96185138e90921485a1 b/.idea/sonarlint/securityhotspotstore/4/2/4233f6b3ffbc0a852718b96185138e90921485a1
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/4/4/44ecd97588199f820daa9832c1b971d9a5589d8b b/.idea/sonarlint/securityhotspotstore/4/4/44ecd97588199f820daa9832c1b971d9a5589d8b
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/4/9/491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a b/.idea/sonarlint/securityhotspotstore/4/9/491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/4/9/49a602fbbaeb3abb68fde9cb365232b41812e05e b/.idea/sonarlint/securityhotspotstore/4/9/49a602fbbaeb3abb68fde9cb365232b41812e05e
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/5/a/5a62b394dcf7fb7f61298a3ba9e327e5885f64ac b/.idea/sonarlint/securityhotspotstore/5/a/5a62b394dcf7fb7f61298a3ba9e327e5885f64ac
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/5/c/5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd b/.idea/sonarlint/securityhotspotstore/5/c/5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/5/f/5fb372f011560bd93c2608749d4eb82ad815e860 b/.idea/sonarlint/securityhotspotstore/5/f/5fb372f011560bd93c2608749d4eb82ad815e860
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/6/7/6740c7dcd3493efe761e55e6b086c7589d4b8094 b/.idea/sonarlint/securityhotspotstore/6/7/6740c7dcd3493efe761e55e6b086c7589d4b8094
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/6/7/67ea86715647495cf04d49debe539482dee7aed6 b/.idea/sonarlint/securityhotspotstore/6/7/67ea86715647495cf04d49debe539482dee7aed6
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/6/e/6ef7a54b7ac2dc4884cae2d91670f15d3a72abca b/.idea/sonarlint/securityhotspotstore/6/e/6ef7a54b7ac2dc4884cae2d91670f15d3a72abca
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/7/2/7237e58ac75156fc8a6cf73db5ee1932d927a88e b/.idea/sonarlint/securityhotspotstore/7/2/7237e58ac75156fc8a6cf73db5ee1932d927a88e
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/7/3/7359140b7b0cfe2eae6abe9903cbc3d91a291fa2 b/.idea/sonarlint/securityhotspotstore/7/3/7359140b7b0cfe2eae6abe9903cbc3d91a291fa2
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/7/4/7414b490c7c67ef8640d942bca6fc957aeb88dc7 b/.idea/sonarlint/securityhotspotstore/7/4/7414b490c7c67ef8640d942bca6fc957aeb88dc7
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/7/8/78d8f9f012144989cd59dc8e58b00efd6a849749 b/.idea/sonarlint/securityhotspotstore/7/8/78d8f9f012144989cd59dc8e58b00efd6a849749
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/7/b/7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566 b/.idea/sonarlint/securityhotspotstore/7/b/7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/8/5/8501725cc8e8af15d1e262096910b7fbd79f4022 b/.idea/sonarlint/securityhotspotstore/8/5/8501725cc8e8af15d1e262096910b7fbd79f4022
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/8/8/883cdc9da75c3ba62bc4db46b27e6dc1cc15193b b/.idea/sonarlint/securityhotspotstore/8/8/883cdc9da75c3ba62bc4db46b27e6dc1cc15193b
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/8/8/88fc03da1c5e4c0e672160d9e5ad06b95975bfd4 b/.idea/sonarlint/securityhotspotstore/8/8/88fc03da1c5e4c0e672160d9e5ad06b95975bfd4
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/8/9/8952189aefb295c2b4fd6e25ecdc8055934c87b7 b/.idea/sonarlint/securityhotspotstore/8/9/8952189aefb295c2b4fd6e25ecdc8055934c87b7
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/8/a/8abf9f699b61ef1477359e3de2630fc646090a53 b/.idea/sonarlint/securityhotspotstore/8/a/8abf9f699b61ef1477359e3de2630fc646090a53
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/8/e/8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e b/.idea/sonarlint/securityhotspotstore/8/e/8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/8/e/8e46e6b6bc30ba859d323263e009551e60b96fc7 b/.idea/sonarlint/securityhotspotstore/8/e/8e46e6b6bc30ba859d323263e009551e60b96fc7
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d b/.idea/sonarlint/securityhotspotstore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/9/2/921e67a985407143cf0f08429e13fbbf8ff15b2c b/.idea/sonarlint/securityhotspotstore/9/2/921e67a985407143cf0f08429e13fbbf8ff15b2c
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/9/f/9f65cf811c746f7951719af4d7b947f5539d5196 b/.idea/sonarlint/securityhotspotstore/9/f/9f65cf811c746f7951719af4d7b947f5539d5196
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302 b/.idea/sonarlint/securityhotspotstore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/b/3/b3acde0b119d81a9d81bd055a2a7918d8a9e3318 b/.idea/sonarlint/securityhotspotstore/b/3/b3acde0b119d81a9d81bd055a2a7918d8a9e3318
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/b/8/b878e4cb197da0f597dbce90f69f6451a1670556 b/.idea/sonarlint/securityhotspotstore/b/8/b878e4cb197da0f597dbce90f69f6451a1670556
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/b/8/b8ed1daa96092063f32b1324e0e450b09d2c1dd4 b/.idea/sonarlint/securityhotspotstore/b/8/b8ed1daa96092063f32b1324e0e450b09d2c1dd4
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/b/b/bb6499b8e938f92a3695fff1afe57edea4b9efb7 b/.idea/sonarlint/securityhotspotstore/b/b/bb6499b8e938f92a3695fff1afe57edea4b9efb7
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/b/c/bccad600b7d1dd6df4440bf078a25ac1916ac2d3 b/.idea/sonarlint/securityhotspotstore/b/c/bccad600b7d1dd6df4440bf078a25ac1916ac2d3
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/b/e/be00c5b2b2e0e613e7b39232498768b51a7d6ed5 b/.idea/sonarlint/securityhotspotstore/b/e/be00c5b2b2e0e613e7b39232498768b51a7d6ed5
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/c/0/c0a7fe4a4b4a1a70898a5812441354d3619bb4fc b/.idea/sonarlint/securityhotspotstore/c/0/c0a7fe4a4b4a1a70898a5812441354d3619bb4fc
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/c/0/c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d b/.idea/sonarlint/securityhotspotstore/c/0/c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/c/a/ca033487399677ec4908c1f9a8834655f0f4df67 b/.idea/sonarlint/securityhotspotstore/c/a/ca033487399677ec4908c1f9a8834655f0f4df67
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/c/a/ca930674550163bac55780c0116fb972e1ee558b b/.idea/sonarlint/securityhotspotstore/c/a/ca930674550163bac55780c0116fb972e1ee558b
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/c/b/cb3428aff5a57ce98152a18ac112512d5945c4ca b/.idea/sonarlint/securityhotspotstore/c/b/cb3428aff5a57ce98152a18ac112512d5945c4ca
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/d/3/d3a697d31a6c49c8e222af4bbebf2361eb98ff99 b/.idea/sonarlint/securityhotspotstore/d/3/d3a697d31a6c49c8e222af4bbebf2361eb98ff99
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/e/0/e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e b/.idea/sonarlint/securityhotspotstore/e/0/e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/e/3/e3ff9263fa6976a6388af1e288c15d159f976f8f b/.idea/sonarlint/securityhotspotstore/e/3/e3ff9263fa6976a6388af1e288c15d159f976f8f
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/e/4/e464416b53a806b9730005e0bb693de604d12c82 b/.idea/sonarlint/securityhotspotstore/e/4/e464416b53a806b9730005e0bb693de604d12c82
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/e/4/e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66 b/.idea/sonarlint/securityhotspotstore/e/4/e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/e/5/e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b b/.idea/sonarlint/securityhotspotstore/e/5/e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/e/7/e75b4a1e09e07da498641870dfc86cd4079b3432 b/.idea/sonarlint/securityhotspotstore/e/7/e75b4a1e09e07da498641870dfc86cd4079b3432
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/e/c/ec2f06c5ede9538c4abad6bc160a68970ed34fc7 b/.idea/sonarlint/securityhotspotstore/e/c/ec2f06c5ede9538c4abad6bc160a68970ed34fc7
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/f/2/f2082986f709d9d167cd8743efee93c2663941ee b/.idea/sonarlint/securityhotspotstore/f/2/f2082986f709d9d167cd8743efee93c2663941ee
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/f/5/f55eda3a2b1f01048714c98e5a7ed49a3eba642d b/.idea/sonarlint/securityhotspotstore/f/5/f55eda3a2b1f01048714c98e5a7ed49a3eba642d
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/f/a/fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f b/.idea/sonarlint/securityhotspotstore/f/a/fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/index.pb b/.idea/sonarlint/securityhotspotstore/index.pb
new file mode 100644
index 0000000000000000000000000000000000000000..977e4b8d75981006b0d8579b2bbd65676e06bf3c
--- /dev/null
+++ b/.idea/sonarlint/securityhotspotstore/index.pb
@@ -0,0 +1,352 @@
+
+9
+	README.md,8\e\8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d
+:
+
+.gitignore,a\5\a5cc2925ca8258af241be7e5b0381edf30266302
+=
+
composer.json,3\9\3957b91a0d8450cea0115cfd5af69eac90d75897
+L
+src/ServiceLocator/README.md,2\e\2e711f74fde310eac34ce6d154db0aacd90b8d98
+W
+'src/ServiceLocator/ServiceInterface.php,5\c\5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd
+U
+%src/ServiceLocator/ServiceLocator.php,4\0\409afa63612ce2b9be976ccc0cd41dc2430a2044
+V
+&src/ServiceLocator/RegisterService.php,8\8\883cdc9da75c3ba62bc4db46b27e6dc1cc15193b
+9
+	index.php,b\b\bb6499b8e938f92a3695fff1afe57edea4b9efb7
+O
+src/DependencyInjection/ATM.php,f\a\fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f
+V
+&src/DependencyInjection/CreditCard.php,b\e\be00c5b2b2e0e613e7b39232498768b51a7d6ed5
+Q
+!src/DependencyInjection/README.md,c\b\cb3428aff5a57ce98152a18ac112512d5945c4ca
+M
+src/AbstractFactory/README.md,3\7\37106991d149ea238c9bc1b7d4b7477414ba28b8
+S
+#src/AbstractFactory/CardFactory.php,8\e\8e46e6b6bc30ba859d323263e009551e60b96fc7
+R
+"src/AbstractFactory/CreditCard.php,c\a\ca033487399677ec4908c1f9a8834655f0f4df67
+Q
+!src/AbstractFactory/DebitCard.php,6\7\6740c7dcd3493efe761e55e6b086c7589d4b8094
+[
++src/AbstractFactory/SberbankCardFactory.php,f\5\f55eda3a2b1f01048714c98e5a7ed49a3eba642d
+Z
+*src/AbstractFactory/TinkoffCardFactory.php,c\0\c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d
+[
++src/AbstractFactory/SberSalaryDebitCard.php,4\9\491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a
+^
+.src/AbstractFactory/SberMortgageCreditCard.php,8\8\88fc03da1c5e4c0e672160d9e5ad06b95975bfd4
+\
+,src/AbstractFactory/TinkStipendDebitCard.php,9\f\9f65cf811c746f7951719af4d7b947f5539d5196
+]
+-src/AbstractFactory/TinkCarLoanCreditCard.php,f\2\f2082986f709d9d167cd8743efee93c2663941ee
+G
+src/Decorator/README.md,1\9\197887b1d7350f1a3487c11bc2f49fa5e0946b30
+H
+src/Strategy/Payment.php,e\4\e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66
+O
+src/Strategy/AnnuityPayment.php,7\3\7359140b7b0cfe2eae6abe9903cbc3d91a291fa2
+T
+$src/Strategy/DifferentialPayment.php,2\2\2236f22862fca6db4bad3ddd35d787d0bdc8fe93
+F
+src/Strategy/README.md,b\c\bccad600b7d1dd6df4440bf078a25ac1916ac2d3
+G
+src/Command/Command.php,e\4\e464416b53a806b9730005e0bb693de604d12c82
+E
+src/Command/README.md,c\a\ca930674550163bac55780c0116fb972e1ee558b
+G
+src/Command/Invoker.php,4\2\4233f6b3ffbc0a852718b96185138e90921485a1
+K
+src/Command/ReceiverATM.php,0\3\03fdca5e9ac63e763e5faf0fba470a56f1346842
+P
+ src/Command/EnterCashCommand.php,e\3\e3ff9263fa6976a6388af1e288c15d159f976f8f
+S
+#src/Command/WithdrawCashCommand.php,1\8\18b11e0abff3523819696f07262d349a75abdb03
+F
+src/Registry/README.md,4\1\41e3818509e1d237a9d0c0074a499af0d4e1b767
+I
+src/Registry/Registry.php,8\5\8501725cc8e8af15d1e262096910b7fbd79f4022
+K
+src/FactoryMethod/README.md,6\e\6ef7a54b7ac2dc4884cae2d91670f15d3a72abca
+D
+src/Facade/README.md,5\f\5fb372f011560bd93c2608749d4eb82ad815e860
+E
+src/Facade/Facade.php,8\e\8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e
+G
+src/Adapter/Account.php,7\2\7237e58ac75156fc8a6cf73db5ee1932d927a88e
+N
+src/Adapter/SavingsAccount.php,b\3\b3acde0b119d81a9d81bd055a2a7918d8a9e3318
+P
+ src/Adapter/AccountInterface.php,2\5\25a285fd184040c023f8d27070d1534ed87f9ce2
+U
+%src/Adapter/OtherAccountInterface.php,c\0\c0a7fe4a4b4a1a70898a5812441354d3619bb4fc
+N
+src/Adapter/AccountAdapter.php,e\0\e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e
+E
+src/Adapter/README.md,8\9\8952189aefb295c2b4fd6e25ecdc8055934c87b7
+F
+src/Iterator/README.md,4\9\49a602fbbaeb3abb68fde9cb365232b41812e05e
+H
+src/Iterator/Payment.php,b\8\b8ed1daa96092063f32b1324e0e450b09d2c1dd4
+L
+src/Iterator/PaymentList.php,4\4\44ecd97588199f820daa9832c1b971d9a5589d8b
+E
+src/Builder/README.md,0\0\00215233e257f10834f8b4b383a7544d9c5fea51
+G
+src/Builder/Builder.php,0\a\0a224c110043d0690591e7fd3e369671b22e2805
+N
+src/Builder/AccountBuilder.php,2\3\23112e0283e2ac6256e57729712acd1b68e1cb7f
+H
+src/Builder/Director.php,b\8\b878e4cb197da0f597dbce90f69f6451a1670556
+F
+src/Observer/README.md,9\2\921e67a985407143cf0f08429e13fbbf8ff15b2c
+E
+src/Observer/Card.php,5\a\5a62b394dcf7fb7f61298a3ba9e327e5885f64ac
+M
+src/Observer/CardObserver.php,e\c\ec2f06c5ede9538c4abad6bc160a68970ed34fc7
+I
+src/Decorator/Account.php,7\4\7414b490c7c67ef8640d942bca6fc957aeb88dc7
+R
+"src/Decorator/AccountDecorator.php,3\4\340f9d7a8520b340c3dae6cd7945a049209926c0
+P
+ src/Decorator/SavingsAccount.php,0\f\0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d
+B
+src/Facade/ATM.php,7\b\7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566
+E
+src/Facade/Client.php,6\7\67ea86715647495cf04d49debe539482dee7aed6
+J
+src/FactoryMethod/Card.php,e\7\e75b4a1e09e07da498641870dfc86cd4079b3432
+Q
+!src/FactoryMethod/CardFactory.php,8\a\8abf9f699b61ef1477359e3de2630fc646090a53
+O
+src/FactoryMethod/DebitCard.php,1\0\100893ec40d4b0b261c2f59f96af4f3ceba09736
+P
+ src/FactoryMethod/CreditCard.php,e\5\e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b
+V
+&src/FactoryMethod/DebitCardFactory.php,7\8\78d8f9f012144989cd59dc8e58b00efd6a849749
+W
+'src/FactoryMethod/CreditCardFactory.php,d\3\d3a697d31a6c49c8e222af4bbebf2361eb98ff99
+
+Q.idea/sonarlint/securityhotspotstore/c/a/ca930674550163bac55780c0116fb972e1ee558b,9\9\9961b39c56d9a3e7555253107126ef78869633bb
+w
+G.idea/sonarlint/issuestore/c/a/ca930674550163bac55780c0116fb972e1ee558b,6\6\660f20c6fe8c9722ad4c58f380f2bbce75358f1e
+
+Q.idea/sonarlint/securityhotspotstore/4/2/4233f6b3ffbc0a852718b96185138e90921485a1,2\1\21085957b9b792633ddc54153b0d843508ef9f37
+
+Q.idea/sonarlint/securityhotspotstore/0/3/03fdca5e9ac63e763e5faf0fba470a56f1346842,0\c\0c589b3d861764bdbe1ab274ff38f90b51564842
+
+Q.idea/sonarlint/securityhotspotstore/e/3/e3ff9263fa6976a6388af1e288c15d159f976f8f,e\6\e6d643d94b8cdb5f646dab5e1d19551aaf60a411
+
+Q.idea/sonarlint/securityhotspotstore/1/8/18b11e0abff3523819696f07262d349a75abdb03,9\e\9e16a1982cc2b685b24576c50325c49707e9833d
+w
+G.idea/sonarlint/issuestore/1/8/18b11e0abff3523819696f07262d349a75abdb03,3\1\315f3cd16acac36af09395cb515e80fb987ce39a
+w
+G.idea/sonarlint/issuestore/4/1/41e3818509e1d237a9d0c0074a499af0d4e1b767,5\d\5d6dd7596e5a60820435d3bc1565fc969175312d
+
+Q.idea/sonarlint/securityhotspotstore/4/1/41e3818509e1d237a9d0c0074a499af0d4e1b767,0\6\069c76a017ef168776ac8749e83d2231d7953794
+
+Q.idea/sonarlint/securityhotspotstore/8/5/8501725cc8e8af15d1e262096910b7fbd79f4022,4\a\4a7cf17bdf655be07b983b32b01fcc3e94c59554
+w
+G.idea/sonarlint/issuestore/6/e/6ef7a54b7ac2dc4884cae2d91670f15d3a72abca,5\c\5c14fefb54f6956c26f737502cb6831ad0579b95
+
+Q.idea/sonarlint/securityhotspotstore/6/e/6ef7a54b7ac2dc4884cae2d91670f15d3a72abca,7\b\7bd83252239ef0792b371cc9874c7db518ef14b5
+
+Q.idea/sonarlint/securityhotspotstore/5/f/5fb372f011560bd93c2608749d4eb82ad815e860,b\f\bf76f61f74a82ea9383652d8f43fc09ff6228b9c
+w
+G.idea/sonarlint/issuestore/5/f/5fb372f011560bd93c2608749d4eb82ad815e860,f\1\f1ea3b5979577f0b9b1592fb0e2c370ad1ed5404
+
+Q.idea/sonarlint/securityhotspotstore/8/e/8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e,c\7\c78432214a33e2637ae937c2db965b96c2eaf680
+w
+G.idea/sonarlint/issuestore/b/3/b3acde0b119d81a9d81bd055a2a7918d8a9e3318,a\b\ab618f023e4ed6e0c15e9434f6a0e635b302ab95
+
+Q.idea/sonarlint/securityhotspotstore/7/2/7237e58ac75156fc8a6cf73db5ee1932d927a88e,3\c\3cdc30f8cb4e2792d29902b7b0fde2ae10dd5c51
+
+Q.idea/sonarlint/securityhotspotstore/b/3/b3acde0b119d81a9d81bd055a2a7918d8a9e3318,6\f\6fb331dd68977bbc34af560dff94a575bd867e1e
+
+Q.idea/sonarlint/securityhotspotstore/2/5/25a285fd184040c023f8d27070d1534ed87f9ce2,1\0\10aaa20c9dd19c0eaf13b0cef07c8565a70edbf9
+w
+G.idea/sonarlint/issuestore/2/5/25a285fd184040c023f8d27070d1534ed87f9ce2,a\0\a0fb91364194a05bf1b62042431801ea32dbb90d
+S
+#.idea/sonarlint/issuestore/index.pb,9\f\9fe84ebb15faf917b7def6236dba604453cc61e0
+
+Q.idea/sonarlint/securityhotspotstore/c/0/c0a7fe4a4b4a1a70898a5812441354d3619bb4fc,3\9\3935065cd6c285b2136abe28675603afeeda55c0
+w
+G.idea/sonarlint/issuestore/c/0/c0a7fe4a4b4a1a70898a5812441354d3619bb4fc,9\c\9c7cf86e21da8e2be5c65747ee7e5aae9106433d
+]
+-.idea/sonarlint/securityhotspotstore/index.pb,8\8\88a9255124c95bdc913197c120a8d560edc59c8e
+
+Q.idea/sonarlint/securityhotspotstore/e/0/e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e,7\b\7b67d4c120b57bce0e3d6242e7153c77da5de5d0
+w
+G.idea/sonarlint/issuestore/8/9/8952189aefb295c2b4fd6e25ecdc8055934c87b7,7\4\747ae5cac9a90b67ccf116961185765e33de5812
+w
+G.idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d,b\4\b4a0b63ce8560bbc5de0f9995c20cc861dc2adb3
+w
+G.idea/sonarlint/issuestore/4/9/49a602fbbaeb3abb68fde9cb365232b41812e05e,4\6\461e1986636cf65c635f78f0b662e3c7d13bd746
+w
+G.idea/sonarlint/issuestore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897,e\8\e80b46a84e6d75e2791737281bf39be956d40584
+
+Q.idea/sonarlint/securityhotspotstore/8/9/8952189aefb295c2b4fd6e25ecdc8055934c87b7,9\0\90fa9b799bada90b1d838eb18540474cac1ada04
+
+Q.idea/sonarlint/securityhotspotstore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302,3\0\30205a209c6ce77c4cfc19a09e6f57c588b7fb88
+
+Q.idea/sonarlint/securityhotspotstore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d,1\0\10a03f31c4dce92cb371e761ce9429428bb6c176
+
+Q.idea/sonarlint/securityhotspotstore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897,4\6\46f94a7aebd2eec52b4a72f3910f768c64c6be19
+w
+G.idea/sonarlint/issuestore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302,e\d\ed67eb178d523a4b3f117dcbe0eda5196367ceec
+
+Q.idea/sonarlint/securityhotspotstore/4/9/49a602fbbaeb3abb68fde9cb365232b41812e05e,f\2\f29b30011f3d2ea2a2eb2b1d4d711dfe837d02d9
+w
+G.idea/sonarlint/issuestore/2/e/2e711f74fde310eac34ce6d154db0aacd90b8d98,3\a\3ac83761be1a341d6b8db11631d71e5f89e45c28
+
+Q.idea/sonarlint/securityhotspotstore/b/8/b8ed1daa96092063f32b1324e0e450b09d2c1dd4,8\3\837c13502b2614361e1f0ec580ce8c5b01ed4b4e
+
+Q.idea/sonarlint/securityhotspotstore/2/e/2e711f74fde310eac34ce6d154db0aacd90b8d98,e\e\ee8224b8e2df89d20d6318c8c61ca4a5920a18d4
+
+Q.idea/sonarlint/securityhotspotstore/4/4/44ecd97588199f820daa9832c1b971d9a5589d8b,d\8\d8042d4c3087c4d03e1e7e7bd5f7184d20c59a66
+w
+G.idea/sonarlint/issuestore/5/c/5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd,b\7\b7557c84d8b2808a8362d0a2ea3e0385ccbc2564
+w
+G.idea/sonarlint/issuestore/0/a/0a224c110043d0690591e7fd3e369671b22e2805,c\0\c06fdfb2de03e65d63285271d529cea798556f05
+w
+G.idea/sonarlint/issuestore/0/0/00215233e257f10834f8b4b383a7544d9c5fea51,2\2\22326d26b2b9dad1fa729911e707336516fb606d
+w
+G.idea/sonarlint/issuestore/2/3/23112e0283e2ac6256e57729712acd1b68e1cb7f,0\e\0e03d4a113cd6c4c62f12fb156c505251a36d62c
+
+Q.idea/sonarlint/securityhotspotstore/0/a/0a224c110043d0690591e7fd3e369671b22e2805,4\e\4e1828e9fed95a4e4c69817b5c83d6511e4159a4
+
+Q.idea/sonarlint/securityhotspotstore/5/c/5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd,2\5\2591e8c372517c5e816a13782a369d6b65672c84
+
+Q.idea/sonarlint/securityhotspotstore/0/0/00215233e257f10834f8b4b383a7544d9c5fea51,e\7\e76ea2d04809d0b6c0400af49d5aaa8c785230f4
+
+Q.idea/sonarlint/securityhotspotstore/4/0/409afa63612ce2b9be976ccc0cd41dc2430a2044,6\d\6d856d653744127ea9602135cf185ada60c29305
+
+Q.idea/sonarlint/securityhotspotstore/2/3/23112e0283e2ac6256e57729712acd1b68e1cb7f,7\6\76c3ea9bd0592d422fca8f9762c1e60a6fa0a9a9
+
+Q.idea/sonarlint/securityhotspotstore/b/8/b878e4cb197da0f597dbce90f69f6451a1670556,a\f\af941929c2430fd5757deaba54e9c561d08104ea
+
+Q.idea/sonarlint/securityhotspotstore/8/8/883cdc9da75c3ba62bc4db46b27e6dc1cc15193b,2\4\24e60145b337a3ed30c0eb4b83f1195aea7f721f
+
+Q.idea/sonarlint/securityhotspotstore/9/2/921e67a985407143cf0f08429e13fbbf8ff15b2c,2\8\28d452b4b5630a06b3f1e48fe20e1dee3c7f5fe4
+w
+G.idea/sonarlint/issuestore/8/8/883cdc9da75c3ba62bc4db46b27e6dc1cc15193b,7\6\760ff9c0e4200ba85efe626164f98d52375b04cf
+w
+G.idea/sonarlint/issuestore/9/2/921e67a985407143cf0f08429e13fbbf8ff15b2c,7\0\70cba76c31e30833b25b5dabe4bce9360ac84bc7
+
+Q.idea/sonarlint/securityhotspotstore/5/a/5a62b394dcf7fb7f61298a3ba9e327e5885f64ac,9\4\940ba16204e8421ce88f20a10d7368e5964bb366
+
+Q.idea/sonarlint/securityhotspotstore/e/c/ec2f06c5ede9538c4abad6bc160a68970ed34fc7,f\b\fbbc1e922a8271475da804bf5e9d6e5955f01bc7
+
+Q.idea/sonarlint/securityhotspotstore/3/4/340f9d7a8520b340c3dae6cd7945a049209926c0,e\c\ecd821d70560b244ad4553d8595ea4e7c627082c
+w
+G.idea/sonarlint/issuestore/3/4/340f9d7a8520b340c3dae6cd7945a049209926c0,8\6\864ae88f7287a7cc85ab15f268be65ad0bdaba61
+
+Q.idea/sonarlint/securityhotspotstore/b/b/bb6499b8e938f92a3695fff1afe57edea4b9efb7,3\3\33146ca102dfb9ad1815170db874f476c67ed65e
+
+Q.idea/sonarlint/securityhotspotstore/7/4/7414b490c7c67ef8640d942bca6fc957aeb88dc7,3\a\3ada665089f1ba586ca926b06823cbd880297a6f
+w
+G.idea/sonarlint/issuestore/7/4/7414b490c7c67ef8640d942bca6fc957aeb88dc7,0\f\0f7e510d9ea7103745468624235442a0a49cda55
+
+Q.idea/sonarlint/securityhotspotstore/f/a/fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f,f\2\f2b6093602b3988d4b572352f6d695b82e19a2f9
+
+Q.idea/sonarlint/securityhotspotstore/0/f/0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d,a\1\a1278dab701e354fea0712a7d98a054725dbbd18
+w
+G.idea/sonarlint/issuestore/f/a/fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f,6\e\6eca5b25d6903836d53304e7c57daec40f235693
+w
+G.idea/sonarlint/issuestore/0/f/0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d,a\c\acb1bb93c978b3d2dda541aa47e2c989fa9f9220
+w
+G.idea/sonarlint/issuestore/b/e/be00c5b2b2e0e613e7b39232498768b51a7d6ed5,4\2\423fae0db0d6bb2550ca6ee81774c249a6e4e597
+
+Q.idea/sonarlint/securityhotspotstore/7/b/7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566,4\6\46f6eea7b19c57c53c9bb3863ee82a1b5e7ba01d
+w
+G.idea/sonarlint/issuestore/7/b/7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566,6\1\6198e4717a1b6b94abe788bf7e7cf2c151f5a8b0
+
+Q.idea/sonarlint/securityhotspotstore/b/e/be00c5b2b2e0e613e7b39232498768b51a7d6ed5,2\b\2b464dab8a15c17e8ac59e0de4de0ac2d21b3466
+w
+G.idea/sonarlint/issuestore/6/7/67ea86715647495cf04d49debe539482dee7aed6,7\3\7392be92bae5f6c330d732c11efe59054698ef88
+
+Q.idea/sonarlint/securityhotspotstore/6/7/67ea86715647495cf04d49debe539482dee7aed6,9\e\9e4e80af5722d0c072c8f7f5089c0ab0f18e2a19
+w
+G.idea/sonarlint/issuestore/c/b/cb3428aff5a57ce98152a18ac112512d5945c4ca,b\0\b012a5ad5d15cb8ec36158c7f2b3351c891d78b9
+
+Q.idea/sonarlint/securityhotspotstore/8/a/8abf9f699b61ef1477359e3de2630fc646090a53,3\6\36738fcdbae6d87424bf8a2520ad0817c7020034
+
+Q.idea/sonarlint/securityhotspotstore/c/b/cb3428aff5a57ce98152a18ac112512d5945c4ca,3\e\3edaed16c3fd01a6f3a89847e9242cd921f5d6d1
+
+Q.idea/sonarlint/securityhotspotstore/e/7/e75b4a1e09e07da498641870dfc86cd4079b3432,6\4\644ca38258c8d839cc8b685a275e0080763956df
+w
+G.idea/sonarlint/issuestore/8/a/8abf9f699b61ef1477359e3de2630fc646090a53,1\6\16681390eb2c55bedf7143c5602bc5f8d2944247
+w
+G.idea/sonarlint/issuestore/3/7/37106991d149ea238c9bc1b7d4b7477414ba28b8,c\9\c92682892a66c2d98df9f3aca7dbb89c9c1e993d
+w
+G.idea/sonarlint/issuestore/e/7/e75b4a1e09e07da498641870dfc86cd4079b3432,9\b\9bb3887e8521aafcaf315f669e238cabcb9080ee
+
+Q.idea/sonarlint/securityhotspotstore/8/e/8e46e6b6bc30ba859d323263e009551e60b96fc7,4\5\45a56aa80d0449c3b51caab78db57347c477bc00
+w
+G.idea/sonarlint/issuestore/8/e/8e46e6b6bc30ba859d323263e009551e60b96fc7,f\5\f58ee61f0eab56559be0cd487b45ad27abb6b0fd
+w
+G.idea/sonarlint/issuestore/1/0/100893ec40d4b0b261c2f59f96af4f3ceba09736,e\5\e522c216bb070208621186a389b60172ed7b27ba
+
+Q.idea/sonarlint/securityhotspotstore/3/7/37106991d149ea238c9bc1b7d4b7477414ba28b8,6\e\6efa73fdbf1248556967404a965cb612c5ea8821
+
+Q.idea/sonarlint/securityhotspotstore/e/5/e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b,3\a\3af37e5750c2904514572b2a3f00d111b360b0d3
+w
+G.idea/sonarlint/issuestore/c/a/ca033487399677ec4908c1f9a8834655f0f4df67,b\9\b913d406f1d386713b4af7a450eac66b816f8d3e
+
+Q.idea/sonarlint/securityhotspotstore/1/0/100893ec40d4b0b261c2f59f96af4f3ceba09736,f\f\ffb1b59b1a11a2dcb3a4771ceb9e9a615badcac9
+
+Q.idea/sonarlint/securityhotspotstore/7/8/78d8f9f012144989cd59dc8e58b00efd6a849749,9\6\961763665f9beef43050bc97ba4fa832433aecba
+
+Q.idea/sonarlint/securityhotspotstore/c/a/ca033487399677ec4908c1f9a8834655f0f4df67,e\e\eebcc6d7d6c616b45584b4be28b8790b5ab6abda
+
+Q.idea/sonarlint/securityhotspotstore/6/7/6740c7dcd3493efe761e55e6b086c7589d4b8094,8\c\8ccc2feda74e0ef0fa66f183442e59c0dd12e394
+w
+G.idea/sonarlint/issuestore/d/3/d3a697d31a6c49c8e222af4bbebf2361eb98ff99,4\d\4df9f4fb889bc0de19634bce5ebd84d5b9eed5fa
+w
+G.idea/sonarlint/issuestore/6/7/6740c7dcd3493efe761e55e6b086c7589d4b8094,2\9\29caa5287927d2ab0e923f5a69a42f3d4dc182f2
+w
+G.idea/sonarlint/issuestore/7/8/78d8f9f012144989cd59dc8e58b00efd6a849749,6\2\62847eff266b657b79e70cb4cd99226d76296a82
+
+Q.idea/sonarlint/securityhotspotstore/d/3/d3a697d31a6c49c8e222af4bbebf2361eb98ff99,9\b\9bf259071e1352c2a26c77504f0b99f27c88f41e
+w
+G.idea/sonarlint/issuestore/f/5/f55eda3a2b1f01048714c98e5a7ed49a3eba642d,2\5\25147cfaecf2786ec729ece6148f406a5dcb256b
+
+Q.idea/sonarlint/securityhotspotstore/f/5/f55eda3a2b1f01048714c98e5a7ed49a3eba642d,9\f\9fcef19b17e8862def9884db44cbd628f0b871fa
+
+Q.idea/sonarlint/securityhotspotstore/c/0/c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d,9\8\98e4bea93dfebe942da7b170d7f873101b1324bc
+
+Q.idea/sonarlint/securityhotspotstore/8/8/88fc03da1c5e4c0e672160d9e5ad06b95975bfd4,f\4\f4d58f3e042dea084828514bb7fb3f882404fb8d
+w
+G.idea/sonarlint/issuestore/4/9/491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a,3\e\3e065f63398b0d31a0c285c15b25ae7528113ca5
+
+Q.idea/sonarlint/securityhotspotstore/4/9/491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a,4\3\43f3928513696390b86b96d43ee14704b9b7b80d
+w
+G.idea/sonarlint/issuestore/8/8/88fc03da1c5e4c0e672160d9e5ad06b95975bfd4,6\6\66eeaba400b4cb60bb24c44c1452c3449acf33f6
+w
+G.idea/sonarlint/issuestore/f/2/f2082986f709d9d167cd8743efee93c2663941ee,3\4\3418a5e93fb49bf5a260b3472efa9bd3f40f63a3
+
+Q.idea/sonarlint/securityhotspotstore/9/f/9f65cf811c746f7951719af4d7b947f5539d5196,b\0\b073b8b89b1b86291eccc011f31d799ec79025e7
+
+Q.idea/sonarlint/securityhotspotstore/f/2/f2082986f709d9d167cd8743efee93c2663941ee,c\0\c04e23f9d0703e7d3a287ebb992022efc85b4154
+w
+G.idea/sonarlint/issuestore/1/9/197887b1d7350f1a3487c11bc2f49fa5e0946b30,3\0\307b9eb7dffcc77ecfe411808f612178240d8c72
+
+Q.idea/sonarlint/securityhotspotstore/1/9/197887b1d7350f1a3487c11bc2f49fa5e0946b30,d\0\d099e5fb52d27d0626de2ea2d356193ccded9ed6
+w
+G.idea/sonarlint/issuestore/e/4/e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66,c\b\cb4dec6d5021997f06ffc89186c0f83331be1301
+
+Q.idea/sonarlint/securityhotspotstore/e/4/e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66,6\2\629d6160adb07e2bcc2176f6bb288388e780bdbf
+
+Q.idea/sonarlint/securityhotspotstore/7/3/7359140b7b0cfe2eae6abe9903cbc3d91a291fa2,6\b\6b32629e48b076ec5fb414cc45b60bdae0d4f7b5
+
+Q.idea/sonarlint/securityhotspotstore/2/2/2236f22862fca6db4bad3ddd35d787d0bdc8fe93,d\b\dbd828883d9535da4fae17e30caa64ad72662c69
+
+Q.idea/sonarlint/securityhotspotstore/b/c/bccad600b7d1dd6df4440bf078a25ac1916ac2d3,e\d\ed8e56353ae013d5fe7eff706bc473dacc9ad090
+w
+G.idea/sonarlint/issuestore/b/c/bccad600b7d1dd6df4440bf078a25ac1916ac2d3,9\2\9223bc35d0474704cbf93dae9f333a6a0dae6086
+
+Q.idea/sonarlint/securityhotspotstore/e/4/e464416b53a806b9730005e0bb693de604d12c82,7\2\7203a728b0e60116f6eb3b587966036c42f4e747
+w
+G.idea/sonarlint/issuestore/e/4/e464416b53a806b9730005e0bb693de604d12c82,7\7\77a7ffdc4ef5c2eb2048f0673c2b72c1e2f72f90
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000000000000000000000000000000000000..35eb1ddfbbc029bcab630581847471d7f238ec53
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000000000000000000000000000000000000..12bb1aafc6104441d959b97004eee12d33ac7ea3
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,9 @@
+{
+    "name": "hp/patterns",
+    "autoload": {
+        "psr-4": {
+            "Hp\\Patterns\\": "src/"
+        }
+    },
+    "require": {}
+}
diff --git a/index.php b/index.php
new file mode 100644
index 0000000000000000000000000000000000000000..e2880ee1eb4da74aaae97371b03019412d031bb8
--- /dev/null
+++ b/index.php
@@ -0,0 +1,47 @@
+<?php
+
+require_once __DIR__ . '/vendor/autoload.php';
+
+use Hp\Patterns\Observer\Card;
+use Hp\Patterns\Observer\CardObserver;
+use Hp\Patterns\ServiceLocator\RegisterService;
+use Hp\Patterns\ServiceLocator\ServiceLocator;
+use Hp\Patterns\DependencyInjection\CreditCard;
+use Hp\Patterns\DependencyInjection\ATM;
+
+
+// Service Locator
+$locator = new ServiceLocator();
+$locator->addInstance('RegisterService', new RegisterService(['user1', 'user2']));
+
+$service = $locator->get('RegisterService');
+
+$service->register('user3');
+
+$users = $service->getUsers();
+
+foreach ($users as $user) {
+    echo $user."\n";
+}
+
+echo "\n";
+
+// Dependency Injection
+
+$card = new CreditCard('1234 5678 9012 3456', 5281.31, 'Иванов Иван Иванович');
+$atm = new ATM($card);
+
+$atm->getCardInfo();
+
+echo "\n";
+
+// Observer
+
+$observer = new CardObserver();
+
+$card = new Card();
+$card->attach($observer);
+
+$card->deposit(1000);
+
+$observer->getSumUpdatedCards();
diff --git a/src/AbstractFactory/CardFactory.php b/src/AbstractFactory/CardFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..51e47fc435abaaf81ce7b92fb6a1e66181cb59e4
--- /dev/null
+++ b/src/AbstractFactory/CardFactory.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace Hp\Patterns\AbstractFactory;
+
+interface CardFactory
+{
+    public function createDebitCard(): DebitCard;
+
+    public function createCreditCard(): CreditCard;
+}
\ No newline at end of file
diff --git a/src/AbstractFactory/CreditCard.php b/src/AbstractFactory/CreditCard.php
new file mode 100644
index 0000000000000000000000000000000000000000..f2be451decdca663429e61dbaa9c19fc3ca7548a
--- /dev/null
+++ b/src/AbstractFactory/CreditCard.php
@@ -0,0 +1,8 @@
+<?php
+
+namespace Hp\Patterns\AbstractFactory;
+
+interface CreditCard
+{
+    public function pay(float $money): void;
+}
\ No newline at end of file
diff --git a/src/AbstractFactory/DebitCard.php b/src/AbstractFactory/DebitCard.php
new file mode 100644
index 0000000000000000000000000000000000000000..2ae1e16c2f90ebf1a7e5c3c93a499747ee17e000
--- /dev/null
+++ b/src/AbstractFactory/DebitCard.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace Hp\Patterns\AbstractFactory;
+
+interface DebitCard
+{
+    public function transfer(float $money): void;
+
+    public function pay(float $money): void;
+}
\ No newline at end of file
diff --git a/src/AbstractFactory/README.md b/src/AbstractFactory/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..235fb7713152b3273cfe94939a361570a8d1b559
--- /dev/null
+++ b/src/AbstractFactory/README.md
@@ -0,0 +1 @@
+Абстрактная фабрика - паттерн, предназначенный для создания семейств взаимосвязанных объектов с определенными интерфейсами без указания конкретных типов данных объектов
\ No newline at end of file
diff --git a/src/AbstractFactory/SberMortgageCreditCard.php b/src/AbstractFactory/SberMortgageCreditCard.php
new file mode 100644
index 0000000000000000000000000000000000000000..0a3915c81692e912cb2a0ba24720704f9684535a
--- /dev/null
+++ b/src/AbstractFactory/SberMortgageCreditCard.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Hp\Patterns\AbstractFactory;
+
+class SberMortgageCreditCard implements CreditCard
+{
+    private float $wallet;
+
+    private float $sberSpasibo;
+
+    public function pay(float $money): void
+    {
+        $this->wallet -= $money;
+        $this->sberSpasibo += $money * 0.0001;
+    }
+}
diff --git a/src/AbstractFactory/SberSalaryDebitCard.php b/src/AbstractFactory/SberSalaryDebitCard.php
new file mode 100644
index 0000000000000000000000000000000000000000..8423bb161816352900fa5cfc4bc2b48efcf79b97
--- /dev/null
+++ b/src/AbstractFactory/SberSalaryDebitCard.php
@@ -0,0 +1,21 @@
+<?php
+
+namespace Hp\Patterns\AbstractFactory;
+
+class SberSalaryDebitCard implements DebitCard
+{
+    private float $wallet;
+
+    private float $sberSpasibo;
+
+    public function transfer(float $money): void
+    {
+        $this->wallet += $money;
+    }
+
+    public function pay(float $money): void
+    {
+        $this->wallet -= $money;
+        $this->sberSpasibo += $money * 0.1;
+    }
+}
diff --git a/src/AbstractFactory/SberbankCardFactory.php b/src/AbstractFactory/SberbankCardFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..de22618d458660244f7252d033d1ee619747ee7a
--- /dev/null
+++ b/src/AbstractFactory/SberbankCardFactory.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Hp\Patterns\AbstractFactory;
+
+class SberbankCardFactory implements CardFactory
+{
+
+    public function createDebitCard(): DebitCard
+    {
+        return new SberSalaryDebitCard();
+    }
+
+    public function createCreditCard(): CreditCard
+    {
+        return new SberMortgageCreditCard();
+    }
+}
diff --git a/src/AbstractFactory/TinkCarLoanCreditCard.php b/src/AbstractFactory/TinkCarLoanCreditCard.php
new file mode 100644
index 0000000000000000000000000000000000000000..ffef69591ef21200c72513fdfeafdc1e05e9c5c5
--- /dev/null
+++ b/src/AbstractFactory/TinkCarLoanCreditCard.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Hp\Patterns\AbstractFactory;
+
+class TinkCarLoanCreditCard implements CreditCard
+{
+    private float $wallet;
+
+    public function pay(float $money): void
+    {
+        $this->wallet -= $money;
+        $this->wallet += $money * 0.0005;
+    }
+}
diff --git a/src/AbstractFactory/TinkStipendDebitCard.php b/src/AbstractFactory/TinkStipendDebitCard.php
new file mode 100644
index 0000000000000000000000000000000000000000..913c6074a4b699319c81b4e38a771e62cf15853c
--- /dev/null
+++ b/src/AbstractFactory/TinkStipendDebitCard.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace Hp\Patterns\AbstractFactory;
+
+class TinkStipendDebitCard implements DebitCard
+{
+    private float $wallet;
+
+    public function transfer(float $money): void
+    {
+        $this->wallet += $money;
+    }
+
+    public function pay(float $money): void
+    {
+        $this->wallet -= $money;
+        $this->wallet += $money * 0.05;
+    }
+}
\ No newline at end of file
diff --git a/src/AbstractFactory/TinkoffCardFactory.php b/src/AbstractFactory/TinkoffCardFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..21375734d8447dbd34b4a06ffe5cbced408fcd6f
--- /dev/null
+++ b/src/AbstractFactory/TinkoffCardFactory.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Hp\Patterns\AbstractFactory;
+
+class TinkoffCardFactory implements CardFactory
+{
+
+    public function createDebitCard(): DebitCard
+    {
+        return new TinkStipendDebitCard();
+    }
+
+    public function createCreditCard(): CreditCard
+    {
+        return new TinkCarLoanCreditCard();
+    }
+}
\ No newline at end of file
diff --git a/src/Adapter/Account.php b/src/Adapter/Account.php
new file mode 100644
index 0000000000000000000000000000000000000000..cda428550b204b0b5d7f5b366fbff83e8bb90655
--- /dev/null
+++ b/src/Adapter/Account.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace Hp\Patterns\Adapter;
+
+class Account implements AccountInterface
+{
+    private float $amount;
+
+    public function deposit(float $amount): void
+    {
+        $this->amount += $amount;
+    }
+
+    public function withdraw(float $amount): void
+    {
+        $this->amount -= $amount;
+    }
+}
\ No newline at end of file
diff --git a/src/Adapter/AccountAdapter.php b/src/Adapter/AccountAdapter.php
new file mode 100644
index 0000000000000000000000000000000000000000..634c6d658a1859629a68f57de5360d1cae588f10
--- /dev/null
+++ b/src/Adapter/AccountAdapter.php
@@ -0,0 +1,26 @@
+<?php
+
+namespace Hp\Patterns\Adapter;
+
+class AccountAdapter implements AccountInterface
+{
+    public function __construct(private OtherAccountInterface $account)
+    {
+    }
+
+
+    public function deposit(float $amount): void
+    {
+        $this->account->deposit($amount);
+    }
+
+    public function withdraw(float $amount): void
+    {
+        $this->account->withdraw($amount);
+    }
+
+    public function blockAccount(): void
+    {
+        $this->account->blockAccount();
+    }
+}
\ No newline at end of file
diff --git a/src/Adapter/AccountInterface.php b/src/Adapter/AccountInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..b70e73d8c9f25ceb1d181d757cf6b3c90d65a5ef
--- /dev/null
+++ b/src/Adapter/AccountInterface.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace Hp\Patterns\Adapter;
+
+interface AccountInterface
+{
+    public function deposit(float $amount);
+
+    public function withdraw(float $amount);
+}
\ No newline at end of file
diff --git a/src/Adapter/OtherAccountInterface.php b/src/Adapter/OtherAccountInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..08af6fddba2735f4255f502c425fba6ebce4a419
--- /dev/null
+++ b/src/Adapter/OtherAccountInterface.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace Hp\Patterns\Adapter;
+
+interface OtherAccountInterface
+{
+    public function blockAccount(): void;
+
+    public function deposit(float $amount);
+
+    public function withdraw(float $amount);
+}
\ No newline at end of file
diff --git a/src/Adapter/README.md b/src/Adapter/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..d9d8f7586a4cab1c1f5734dd0e4a69fcbc498a69
--- /dev/null
+++ b/src/Adapter/README.md
@@ -0,0 +1 @@
+Адаптер представляет собой паттерн, который позволяет привести нестандартный интерфейс какого-то класса совместимым с вашим кодом. По сути он предоставляет прослойку с интерфейсом, удобным для клиентов
\ No newline at end of file
diff --git a/src/Builder/AccountBuilder.php b/src/Builder/AccountBuilder.php
new file mode 100644
index 0000000000000000000000000000000000000000..4367de1fb95ae45ebc8f460048638901c3e7aeb5
--- /dev/null
+++ b/src/Builder/AccountBuilder.php
@@ -0,0 +1,33 @@
+<?php
+
+namespace Hp\Patterns\Builder;
+
+class AccountBuilder implements Builder
+{
+    private string $accountType;
+
+    private float $balance;
+
+    private float $monthlyFee;
+
+    public function withAccountType(string $accountType): Builder
+    {
+        $this->accountType = $accountType;
+
+        return $this;
+    }
+
+    public function withInitialBalance(float $initialBalance): Builder
+    {
+        $this->balance += $initialBalance;
+
+        return $this;
+    }
+
+    public function withMonthlyFee(float $monthlyFee): Builder
+    {
+        $this->monthlyFee = $monthlyFee;
+
+        return $this;
+    }
+}
\ No newline at end of file
diff --git a/src/Builder/Builder.php b/src/Builder/Builder.php
new file mode 100644
index 0000000000000000000000000000000000000000..0d58f6613f908e62896ace487b719bac9d8f39b9
--- /dev/null
+++ b/src/Builder/Builder.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace Hp\Patterns\Builder;
+
+interface Builder
+{
+    public function withAccountType(string $accountType): Builder;
+
+    public function withInitialBalance(float $initialBalance): Builder;
+
+    public function withMonthlyFee(float $monthlyFee): Builder;
+}
\ No newline at end of file
diff --git a/src/Builder/Director.php b/src/Builder/Director.php
new file mode 100644
index 0000000000000000000000000000000000000000..e19c2780f4769f9045bd662edca37d5d925213a4
--- /dev/null
+++ b/src/Builder/Director.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Hp\Patterns\Builder;
+
+class Director
+{
+    public function build(Builder $builder): Builder
+    {
+        $account = $builder->withAccountType('Savings')
+            ->withInitialBalance(1200)
+            ->withMonthlyFee(12);
+
+        return $account;
+    }
+}
\ No newline at end of file
diff --git a/src/Builder/README.md b/src/Builder/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..d5e120a93b046ee7c68d41603d5be3b9eb283ae0
--- /dev/null
+++ b/src/Builder/README.md
@@ -0,0 +1 @@
+Строитель - это шаблон проектирования, который инкаспулирует создание объекта и позволяет разделить его на различные этапы
\ No newline at end of file
diff --git a/src/Command/Command.php b/src/Command/Command.php
new file mode 100644
index 0000000000000000000000000000000000000000..76158a1c467f451b1daf5bcf5c769355051f5d4c
--- /dev/null
+++ b/src/Command/Command.php
@@ -0,0 +1,8 @@
+<?php
+
+namespace Hp\Patterns\Command;
+
+interface Command
+{
+    public function execute(float $amountCash): void;
+}
\ No newline at end of file
diff --git a/src/Command/EnterCashCommand.php b/src/Command/EnterCashCommand.php
new file mode 100644
index 0000000000000000000000000000000000000000..6d36d91b48590f9f47fce287263804cbd75a7601
--- /dev/null
+++ b/src/Command/EnterCashCommand.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Hp\Patterns\Command;
+
+class EnterCashCommand implements Command
+{
+    public function __construct(private ReceiverATM $receiver)
+    {
+    }
+
+    public function execute(float $amountCash): void
+    {
+        $this->receiver->enterCash($amountCash);
+    }
+}
\ No newline at end of file
diff --git a/src/Command/Invoker.php b/src/Command/Invoker.php
new file mode 100644
index 0000000000000000000000000000000000000000..b46e9cbbbf72d64b9b3fe7eb1ac92b69178e69fe
--- /dev/null
+++ b/src/Command/Invoker.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace Hp\Patterns\Command;
+
+class Invoker
+{
+    private Command $command;
+
+    public function setCommand(Command $command): void
+    {
+        $this->command = $command;
+    }
+
+    public function run(float $amountCash): void
+    {
+        $this->command->execute($amountCash);
+    }
+}
diff --git a/src/Command/README.md b/src/Command/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..43d38093be5c0f9802418b2d8dbc5f69b925ae79
--- /dev/null
+++ b/src/Command/README.md
@@ -0,0 +1 @@
+Паттерн Command позволяет инкапсулировать запрос на выполнение определенного действия в виде отдельного объекта, который и называется командой. Также команды могут ставиться в очередь или быть отменены
\ No newline at end of file
diff --git a/src/Command/ReceiverATM.php b/src/Command/ReceiverATM.php
new file mode 100644
index 0000000000000000000000000000000000000000..28ba31c4e086b7f374c994b56ba8952280414493
--- /dev/null
+++ b/src/Command/ReceiverATM.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace Hp\Patterns\Command;
+
+class ReceiverATM
+{
+    private float $amountCash;
+
+    public function enterCash(float $amountCash): void
+    {
+        $this->amountCash += $amountCash;
+    }
+
+    public function withdrawCash(float $amountCash): void
+    {
+        $this->amountCash -= $amountCash;
+    }
+}
diff --git a/src/Command/WithdrawCashCommand.php b/src/Command/WithdrawCashCommand.php
new file mode 100644
index 0000000000000000000000000000000000000000..29202a38bb301a828a0a42f887c952b193c42888
--- /dev/null
+++ b/src/Command/WithdrawCashCommand.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Hp\Patterns\Command;
+
+class WithdrawCashCommand implements Command
+{
+    public function __construct(private ReceiverATM $receiver)
+    {
+    }
+
+    public function execute(float $amountCash): void
+    {
+        $this->receiver->withdrawCash($amountCash);
+    }
+}
\ No newline at end of file
diff --git a/src/Decorator/Account.php b/src/Decorator/Account.php
new file mode 100644
index 0000000000000000000000000000000000000000..79cc8f0e90b22537e83cd1fcfbb29ee6dc436d03
--- /dev/null
+++ b/src/Decorator/Account.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace Hp\Patterns\Decorator;
+
+interface Account
+{
+    public function deposit(float $amount): void;
+
+    public function withdraw(float $amount): void;
+}
\ No newline at end of file
diff --git a/src/Decorator/AccountDecorator.php b/src/Decorator/AccountDecorator.php
new file mode 100644
index 0000000000000000000000000000000000000000..3c4c73131d7451aa2ed0cdcbb5b853a7d60da264
--- /dev/null
+++ b/src/Decorator/AccountDecorator.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace Hp\Patterns\Decorator;
+
+class AccountDecorator
+{
+    public function __construct(protected Account $account)
+    {
+    }
+}
\ No newline at end of file
diff --git a/src/Decorator/README.md b/src/Decorator/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..08a531c7c8c8d9f926104cf64358951cdb900358
--- /dev/null
+++ b/src/Decorator/README.md
@@ -0,0 +1 @@
+Паттерн Decorator позволяет динамически добавлять новую функциональность в классы. 
\ No newline at end of file
diff --git a/src/Decorator/SavingsAccount.php b/src/Decorator/SavingsAccount.php
new file mode 100644
index 0000000000000000000000000000000000000000..aed3713668bfc00f5cba76219aa3e767ee579f61
--- /dev/null
+++ b/src/Decorator/SavingsAccount.php
@@ -0,0 +1,20 @@
+<?php
+
+namespace Hp\Patterns\Decorator;
+
+class SavingsAccount extends AccountDecorator
+{
+    private float $money;
+
+    private float $percent = 10;
+
+    public function getBalance(): float
+    {
+        return $this->money;
+    }
+
+    public function percentageIncrease(): void
+    {
+        $this->money += $this->money * ($this->percent / 100);
+    }
+}
\ No newline at end of file
diff --git a/src/DependencyInjection/ATM.php b/src/DependencyInjection/ATM.php
new file mode 100644
index 0000000000000000000000000000000000000000..98aa54403ea8d0843ce8c26f09c5f8009abf389e
--- /dev/null
+++ b/src/DependencyInjection/ATM.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Hp\Patterns\DependencyInjection;
+
+class ATM
+{
+    public function __construct(private CreditCard $card)
+    {
+    }
+
+    public function getCardInfo(): void
+    {
+        echo 'Owner: '.$this->card->getOwner()."\n";
+        echo 'Number card: '.$this->card->getNumber()."\n";
+        echo 'In the wallet: '.$this->card->getCountOfMoney()." ₽ \n";
+    }
+}
\ No newline at end of file
diff --git a/src/DependencyInjection/CreditCard.php b/src/DependencyInjection/CreditCard.php
new file mode 100644
index 0000000000000000000000000000000000000000..d2c40223c130fe94ea4ba9d9d1a739fe3d9a133c
--- /dev/null
+++ b/src/DependencyInjection/CreditCard.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace Hp\Patterns\DependencyInjection;
+
+class CreditCard
+{
+    public function __construct(
+        private string $number,
+        private float $countOfMoney,
+        private string $owner
+    ) {
+    }
+
+    public function getNumber(): string
+    {
+        return $this->number;
+    }
+
+    public function getCountOfMoney(): float
+    {
+        return $this->countOfMoney;
+    }
+
+    public function getOwner(): string
+    {
+        return $this->owner;
+    }
+}
diff --git a/src/DependencyInjection/README.md b/src/DependencyInjection/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..b75c53b4a26a7b8456c59c89be5923da3616d08b
--- /dev/null
+++ b/src/DependencyInjection/README.md
@@ -0,0 +1 @@
+Dependency Injection представляет собой механизм, который позволяет сделать компоненты программы слабосвязанными. Основой данного механизма является зависимость одной сущности от другой.
\ No newline at end of file
diff --git a/src/Facade/ATM.php b/src/Facade/ATM.php
new file mode 100644
index 0000000000000000000000000000000000000000..62362c3e06daa4780bdc7c789b35ec697ae4150e
--- /dev/null
+++ b/src/Facade/ATM.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Hp\Patterns\Facade;
+
+interface ATM
+{
+    public function acceptCard(): void;
+
+    public function waitForEnterAmount(): void;
+
+    public function checkBalance(): void;
+
+    public function giveOutMoney(): void;
+
+    public function giveOutCard(): void;
+}
\ No newline at end of file
diff --git a/src/Facade/Client.php b/src/Facade/Client.php
new file mode 100644
index 0000000000000000000000000000000000000000..118138d101fbbc43fd39195a14dbabe1c3fceba5
--- /dev/null
+++ b/src/Facade/Client.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Hp\Patterns\Facade;
+
+interface Client
+{
+    public function enterCard(): void;
+
+    public function enterAmount(float $amount): void;
+
+    public function takeMoney(): void;
+
+    public function takeCard(): void;
+}
\ No newline at end of file
diff --git a/src/Facade/Facade.php b/src/Facade/Facade.php
new file mode 100644
index 0000000000000000000000000000000000000000..bd4789238ecaf521e48d0373927b60850d393dcf
--- /dev/null
+++ b/src/Facade/Facade.php
@@ -0,0 +1,27 @@
+<?php
+
+namespace Hp\Patterns\Facade;
+
+class Facade
+{
+    public function __construct(private ATM $atm, private Client $client)
+    {
+    }
+
+    public function withdrawMoney(): void
+    {
+        $this->client->enterCard();
+
+        $this->atm->acceptCard();
+        $this->atm->waitForEnterAmount();
+
+        $this->client->enterAmount(1000);
+
+        $this->atm->checkBalance();
+        $this->atm->giveOutMoney();
+        $this->atm->acceptCard();
+
+        $this->client->takeMoney();
+        $this->client->takeCard();
+    }
+}
\ No newline at end of file
diff --git a/src/Facade/README.md b/src/Facade/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..3acb193df8ed19e0d12ad9f514b447c3627da015
--- /dev/null
+++ b/src/Facade/README.md
@@ -0,0 +1 @@
+Фасад представляет собой шаблон проектирования, который позволяет скрыть сложность системы с помощью представления упрощенного интерфейса и взаимодействия с ней
\ No newline at end of file
diff --git a/src/FactoryMethod/Card.php b/src/FactoryMethod/Card.php
new file mode 100644
index 0000000000000000000000000000000000000000..5f73743918e57160b3b05376d583d76225bebe22
--- /dev/null
+++ b/src/FactoryMethod/Card.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace Hp\Patterns\FactoryMethod;
+
+interface Card
+{
+    public function deposit(float $amount);
+
+    public function withdraw(float $amount);
+}
\ No newline at end of file
diff --git a/src/FactoryMethod/CardFactory.php b/src/FactoryMethod/CardFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..2a67fe16f038d423285cf93d5b91198d1dca9c2b
--- /dev/null
+++ b/src/FactoryMethod/CardFactory.php
@@ -0,0 +1,8 @@
+<?php
+
+namespace Hp\Patterns\FactoryMethod;
+
+interface CardFactory
+{
+    public function createCard(): Card;
+}
\ No newline at end of file
diff --git a/src/FactoryMethod/CreditCard.php b/src/FactoryMethod/CreditCard.php
new file mode 100644
index 0000000000000000000000000000000000000000..e5505e59a6b606ec4355fbc4e715692bfd6ed6ad
--- /dev/null
+++ b/src/FactoryMethod/CreditCard.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace Hp\Patterns\FactoryMethod;
+
+class CreditCard implements Card
+{
+    private float $wallet;
+
+    public function deposit(float $amount): void
+    {
+        $this->wallet += $amount;
+    }
+
+    public function withdraw(float $amount): void
+    {
+        $this->wallet -= $amount;
+    }
+}
\ No newline at end of file
diff --git a/src/FactoryMethod/CreditCardFactory.php b/src/FactoryMethod/CreditCardFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..7f410f33398bef6eb56893d222869b340fb90585
--- /dev/null
+++ b/src/FactoryMethod/CreditCardFactory.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace Hp\Patterns\FactoryMethod;
+
+class CreditCardFactory implements CardFactory
+{
+    public function createCard(): Card
+    {
+        return new CreditCard();
+    }
+}
\ No newline at end of file
diff --git a/src/FactoryMethod/DebitCard.php b/src/FactoryMethod/DebitCard.php
new file mode 100644
index 0000000000000000000000000000000000000000..915929135dfdec9d3ac49cea2cc3486db7b6420a
--- /dev/null
+++ b/src/FactoryMethod/DebitCard.php
@@ -0,0 +1,8 @@
+<?php
+
+namespace Hp\Patterns\FactoryMethod;
+
+class DebitCard implements Card
+{
+
+}
\ No newline at end of file
diff --git a/src/FactoryMethod/DebitCardFactory.php b/src/FactoryMethod/DebitCardFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..6eefe73b9f7a8cbdf1128593635674c38d9c2aad
--- /dev/null
+++ b/src/FactoryMethod/DebitCardFactory.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace Hp\Patterns\FactoryMethod;
+
+class DebitCardFactory implements CardFactory
+{
+    public function createCard(): Card
+    {
+        return new DebitCard();
+    }
+}
\ No newline at end of file
diff --git a/src/FactoryMethod/README.md b/src/FactoryMethod/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..cce8ef7b8af0f9daa758df7bf12e078ebc443e00
--- /dev/null
+++ b/src/FactoryMethod/README.md
@@ -0,0 +1 @@
+Фабричный метод - это паттерн, который определяет интерфейс для создания объектов некоторого класса, где при этом решение о том, объект какого класса создавать передается в подклассы
\ No newline at end of file
diff --git a/src/Iterator/Payment.php b/src/Iterator/Payment.php
new file mode 100644
index 0000000000000000000000000000000000000000..f28a3a78b9ceda248178cd8ed42a31dee7425819
--- /dev/null
+++ b/src/Iterator/Payment.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Hp\Patterns\Iterator;
+
+class Payment
+{
+    private int $id;
+
+    private \DateTimeImmutable $date;
+
+    private float $amount;
+
+    public function getId(): int
+    {
+        return $this->id;
+    }
+}
\ No newline at end of file
diff --git a/src/Iterator/PaymentList.php b/src/Iterator/PaymentList.php
new file mode 100644
index 0000000000000000000000000000000000000000..99a2c957eab0b1c9c51249487699de1c579f42de
--- /dev/null
+++ b/src/Iterator/PaymentList.php
@@ -0,0 +1,60 @@
+<?php
+
+namespace Hp\Patterns\Iterator;
+
+use Countable;
+use Iterator;
+
+class PaymentList implements Countable, Iterator
+{
+    /** @var array Payment */
+    private array $payments;
+
+    private int $currentIndex = 0;
+
+    public function addPayment(Payment $payment): void
+    {
+        $this->payments[] = $payment;
+    }
+
+    public function removePayment(Payment $payment): void
+    {
+        foreach ($this->payments as $key => $value) {
+            if ($value->getId() === $payment->getId()) {
+                unset($this->payments[$key]);
+            }
+        }
+
+        $this->payments = array_values($this->payments);
+    }
+
+    public function current(): Payment
+    {
+        return $this->payments[$this->currentIndex];
+    }
+
+    public function next(): void
+    {
+        $this->currentIndex++;
+    }
+
+    public function key(): int
+    {
+        return $this->currentIndex;
+    }
+
+    public function valid(): bool
+    {
+        return isset($this->payments[$this->currentIndex]);
+    }
+
+    public function rewind(): void
+    {
+        $this->currentIndex = 0;
+    }
+
+    public function count(): int
+    {
+        return count($this->payments);
+    }
+}
\ No newline at end of file
diff --git a/src/Iterator/README.md b/src/Iterator/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..97de2755a103306b388adb7d7471c4c654f06603
--- /dev/null
+++ b/src/Iterator/README.md
@@ -0,0 +1 @@
+Паттерн Iterator представляет собой интерфейс для последовательного доступа к элементам составного объекта
\ No newline at end of file
diff --git a/src/Observer/Card.php b/src/Observer/Card.php
new file mode 100644
index 0000000000000000000000000000000000000000..4a0f6a9f36774b21beb3d06b3eb70eb9fff30e2e
--- /dev/null
+++ b/src/Observer/Card.php
@@ -0,0 +1,47 @@
+<?php
+
+namespace Hp\Patterns\Observer;
+
+use SplObjectStorage;
+use SplSubject;
+use SplObserver;
+
+class Card implements SplSubject
+{
+    private SplObjectStorage $observers;
+
+    private float $money = 0;
+
+    public function __construct()
+    {
+        $this->observers = new SplObjectStorage();
+    }
+
+    public function attach(SplObserver $observer): void
+    {
+        $this->observers->attach($observer);
+    }
+
+    public function detach(SplObserver $observer): void
+    {
+        $this->observers->detach($observer);
+    }
+
+    public function deposit(float $money): void
+    {
+        $this->money += $money;
+        $this->notify();
+    }
+
+    public function getAmount(): float
+    {
+        return $this->money;
+    }
+
+    public function notify(): void
+    {
+        foreach ($this->observers as $observer) {
+            $observer->update($this);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/Observer/CardObserver.php b/src/Observer/CardObserver.php
new file mode 100644
index 0000000000000000000000000000000000000000..f6c444b58d834f923e3ba4fdf28a9137f8c12f30
--- /dev/null
+++ b/src/Observer/CardObserver.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace Hp\Patterns\Observer;
+
+use SplObserver;
+use SplSubject;
+
+class CardObserver implements SplObserver
+{
+    private array $updatedCards = [];
+
+    public function update(SplSubject $subject): void
+    {
+        $this->updatedCards[] = $subject;
+    }
+
+    public function getSumUpdatedCards(): void
+    {
+        foreach ($this->updatedCards as $card) {
+            echo $card->getAmount();
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/Observer/README.md b/src/Observer/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..dfaff8c155dae22839bbd59093116bf6e54d27db
--- /dev/null
+++ b/src/Observer/README.md
@@ -0,0 +1 @@
+Паттерн Наблюдатель - это шаблон проектирования, где при изменении наблюдаемого объекта автоматические происходит оповещение всех наблюдателей
\ No newline at end of file
diff --git a/src/Registry/README.md b/src/Registry/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..269373d313c84be625660d05d14ea9b4a26c0183
--- /dev/null
+++ b/src/Registry/README.md
@@ -0,0 +1 @@
+Registry используется для реализации централизированного хранения объектов, которые часто используются во всем приложении. Считается антипаттерном из-за того, что вводится глобальное состояние
\ No newline at end of file
diff --git a/src/Registry/Registry.php b/src/Registry/Registry.php
new file mode 100644
index 0000000000000000000000000000000000000000..4a69a0aa0fea1eb499956b0851a966ccf9899edd
--- /dev/null
+++ b/src/Registry/Registry.php
@@ -0,0 +1,33 @@
+<?php
+
+namespace Hp\Patterns\Registry;
+
+use InvalidArgumentException;
+use Hp\Patterns\ServiceLocator\ServiceInterface;
+
+abstract class Registry
+{
+    private static array $services = [];
+
+    private static array $allowedKeys = [
+        'RegisterService'
+    ];
+
+    public static function set(string $key, ServiceInterface $service): void
+    {
+        if (!in_array($key, self::$allowedKeys, true)) {
+            throw new InvalidArgumentException();
+        }
+
+        self::$services[$key] = $service;
+    }
+
+    public static function get(string $key): ServiceInterface
+    {
+        if (!in_array($key, self::$allowedKeys, true) || !isset(self::$services[$key])) {
+            throw new InvalidArgumentException();
+        }
+
+        return self::$services[$key];
+    }
+}
\ No newline at end of file
diff --git a/src/ServiceLocator/README.md b/src/ServiceLocator/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..642e75773c06d3734d22a6c23dcf2a83c07d9c0a
--- /dev/null
+++ b/src/ServiceLocator/README.md
@@ -0,0 +1 @@
+Service Locator считают антипаттерном, поскольку он нарушает принципы инверсии зависимостей. Он позволяет скрывать зависимости класса и предназначен для реализации слабосвязанной архитектуры. Однако, в случае изменения зависимостей имеется риск сломать функционалы классов, которые их используют.
\ No newline at end of file
diff --git a/src/ServiceLocator/RegisterService.php b/src/ServiceLocator/RegisterService.php
new file mode 100644
index 0000000000000000000000000000000000000000..dd2b7b411906264f61640e114830550a68e81bfb
--- /dev/null
+++ b/src/ServiceLocator/RegisterService.php
@@ -0,0 +1,20 @@
+<?php
+
+namespace Hp\Patterns\ServiceLocator;
+
+class RegisterService implements ServiceInterface
+{
+    public function __construct(private array $users)
+    {
+    }
+
+    public function register(string $name): void
+    {
+        $this->users[] = $name;
+    }
+
+    public function getUsers(): array
+    {
+        return $this->users;
+    }
+}
\ No newline at end of file
diff --git a/src/ServiceLocator/ServiceInterface.php b/src/ServiceLocator/ServiceInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..77e1510fec68976c6af247e7ba26bff12fbea004
--- /dev/null
+++ b/src/ServiceLocator/ServiceInterface.php
@@ -0,0 +1,8 @@
+<?php
+
+namespace Hp\Patterns\ServiceLocator;
+
+interface ServiceInterface
+{
+
+}
\ No newline at end of file
diff --git a/src/ServiceLocator/ServiceLocator.php b/src/ServiceLocator/ServiceLocator.php
new file mode 100644
index 0000000000000000000000000000000000000000..df87b51761ab6b332246fed540c2d38966f75ba9
--- /dev/null
+++ b/src/ServiceLocator/ServiceLocator.php
@@ -0,0 +1,44 @@
+<?php
+
+namespace Hp\Patterns\ServiceLocator;
+
+use InvalidArgumentException;
+
+class ServiceLocator
+{
+    private array $services = [];
+
+    private array $instantiated = [];
+
+    public function addInstance(string $class, ServiceInterface $service): void
+    {
+        $this->instantiated[$class] = $service;
+    }
+
+    public function addClass(string $class, array $params): void
+    {
+        $this->services[$class] = $params;
+    }
+
+    public function has(string $class): bool
+    {
+        return isset($this->instantiated[$class]) || isset($this->services[$class]);
+    }
+
+    public function get(string $class): ServiceInterface
+    {
+        if (isset($this->instantiated[$class])) {
+            return $this->instantiated[$class];
+        }
+
+        $object = new $class(...$this->services[$class]);
+
+        if (!$object instanceof ServiceInterface) {
+            throw new InvalidArgumentException();
+        }
+
+        $this->instantiated[$class] = $object;
+
+        return $object;
+    }
+}
diff --git a/src/Strategy/AnnuityPayment.php b/src/Strategy/AnnuityPayment.php
new file mode 100644
index 0000000000000000000000000000000000000000..6cd40f58e55cf527082e2f0e0f37f4679776e13f
--- /dev/null
+++ b/src/Strategy/AnnuityPayment.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace Hp\Patterns\Strategy;
+
+class AnnuityPayment implements Payment
+{
+
+    public function calculate(float $total, float $balanceDebt, int $monthCount, float $percentOfRate): float
+    {
+        $percentInMonth = $percentOfRate / 12 / 100;
+
+        $payment = $total * ($percentInMonth + ($percentInMonth / ((1 + $percentInMonth)**$monthCount - 1)));
+
+        $payment += $balanceDebt * $percentInMonth;
+
+        return $payment;
+    }
+}
\ No newline at end of file
diff --git a/src/Strategy/DifferentialPayment.php b/src/Strategy/DifferentialPayment.php
new file mode 100644
index 0000000000000000000000000000000000000000..68631f097f67f7011b8460ed2394b2c514fbc09d
--- /dev/null
+++ b/src/Strategy/DifferentialPayment.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Hp\Patterns\Strategy;
+
+class DifferentialPayment implements Payment
+{
+    public function calculate(float $total, float $balanceDebt, int $monthCount, float $percentOfRate): float
+    {
+        $payment = $total / $monthCount;
+
+        $percentInMonth = $percentOfRate / 12 / 100;
+
+        $payment += $balanceDebt * $percentInMonth;
+
+        return $payment;
+    }
+}
diff --git a/src/Strategy/Payment.php b/src/Strategy/Payment.php
new file mode 100644
index 0000000000000000000000000000000000000000..f6c2d88083ba092c68e086e2eca4e9459c1ba91a
--- /dev/null
+++ b/src/Strategy/Payment.php
@@ -0,0 +1,8 @@
+<?php
+
+namespace Hp\Patterns\Strategy;
+
+interface Payment
+{
+    public function calculate(float $total, float $balanceDebt, int $monthCount, float $percentOfRate): float;
+}
\ No newline at end of file
diff --git a/src/Strategy/README.md b/src/Strategy/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..81595ea9afd80ed6ffa8538d3253e96477faf51f
--- /dev/null
+++ b/src/Strategy/README.md
@@ -0,0 +1 @@
+Паттерн Strategy представляет собой шаблон, который определяет набор каких-либо алгоритмов, где каждый из них инкапсулируется и является взаимозаменяемым
\ No newline at end of file