UNPKG

@algorithm.ts/gomoku

Version:

A algorithm based on minimax search and alpha-beta prune to solve gomoku game.

401 lines (309 loc) 19.4 kB
# Change Log All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. ## [3.1.1](https://github.com/guanghechen/algorithm.ts/compare/@algorithm.ts/gomoku@3.1.0...@algorithm.ts/gomoku@3.1.1) (2023-06-10) ### Performance Improvements - 🎨 use looser type IReadonlyCollection ([152a57c](https://github.com/guanghechen/algorithm.ts/commit/152a57c53b025258164c2987ad35bc2552cb249b)) - ⬆️ upgrade dependencies ([c555512](https://github.com/guanghechen/algorithm.ts/commit/c55551269eda0f98e75fca3fb862ce122b1a4889)) # 3.1.0 (2023-05-13) ### Performance Improvements - ⬆️ upgrade dependencies ([1ebc2c1](https://github.com/guanghechen/algorithm.ts/commit/1ebc2c167dcc4024d9552aacf5838e1ffc73e58f)) # 3.0.0 (2023-04-02) ### Performance Improvements - 🔧 add missing devDependencies ([69f6da4](https://github.com/guanghechen/algorithm.ts/commit/69f6da43cf1ecebac9f6bf8a7d8ffaced7f9de4c)) - 🔧 don't pack src/ folder into tarball file ([2dc61ad](https://github.com/guanghechen/algorithm.ts/commit/2dc61ad8c031cfc1ecf4f63c405d3e23eff1d9c9)) - 🔖 publish v3.0.0 ([9bb1f35](https://github.com/guanghechen/algorithm.ts/commit/9bb1f3515444890907c8e811b989f17073f39591)) - ⬆️ upgrade devDependencies ([e88a181](https://github.com/guanghechen/algorithm.ts/commit/e88a181201ea675715be11d165b0c49c0f9224b8)) # 3.0.0-alpha.8 (2023-03-11) ### Performance Improvements - 🔖 publish v3.0.0-alpha.8 ([104385f](https://github.com/guanghechen/algorithm.ts/commit/104385f40c0be99b843e3342e85b618761047b69)) - 🔧 update package entry ([fd4445a](https://github.com/guanghechen/algorithm.ts/commit/fd4445a0197b21b1d6cc157c543c1f59116c2cc5)) - ⬆️ upgrade devDependencies ([4aac0d0](https://github.com/guanghechen/algorithm.ts/commit/4aac0d0267b4050689e95902d081302131417ec5)) # 3.0.0-alpha.7 (2023-01-09) ### Performance Improvements - 🔖 publish v3.0.0-alpha.7 ([336c4da](https://github.com/guanghechen/algorithm.ts/commit/336c4da3b92a49804c60d0a6dfb783b14712ce0a)) # 3.0.0-alpha.6 (2023-01-07) ### Performance Improvements - 🔖 publish v3.0.0-alpha.6 ([1758289](https://github.com/guanghechen/algorithm.ts/commit/1758289e40e4d8786800b21aeed3525a572e89fe)) - 🔧 set engine node>=16.0.0 ([76e08d7](https://github.com/guanghechen/algorithm.ts/commit/76e08d7a410d437f83a84002c97892204c1fd5ca)) # 3.0.0-alpha.5 (2023-01-07) ### Performance Improvements - 🔖 publish v3.0.0-alpha.5 ([6c10d3c](https://github.com/guanghechen/algorithm.ts/commit/6c10d3c77bf342c7284a27e0fe07ce26fbdba05b)) - 🔧 set engine node>=16.15.1 ([464c990](https://github.com/guanghechen/algorithm.ts/commit/464c99062aeec99258c1a1e475570b549f63addb)) # 3.0.0-alpha.4 (2023-01-07) ### Performance Improvements - 🔖 publish v3.0.0-alpha.4 ([969d685](https://github.com/guanghechen/algorithm.ts/commit/969d68502c3c35690ed7aee86dde2fe60cddddfc)) - 🔧 update npm entries ([950e3ec](https://github.com/guanghechen/algorithm.ts/commit/950e3ec1d0c9ec3a53de613b9048b3442697404d)) # 3.0.0-alpha.3 (2023-01-04) ### Performance Improvements - 🔖 publish v3.0.0-alpha.3 ([d50b472](https://github.com/guanghechen/algorithm.ts/commit/d50b4725bde1b43474f490a29672db5aa1482ae3)) - 🔧 support dual esm/commonjs packages ([0f91fbf](https://github.com/guanghechen/algorithm.ts/commit/0f91fbf7c22d7778175ee833afdcf05df5dd34ba)) # 3.0.0-alpha.2 (2023-01-02) ### Performance Improvements - ✅ fix test timeout ([bea9acf](https://github.com/guanghechen/algorithm.ts/commit/bea9acfc5cf28c09cf4416b49e5dd88d6cd99b8d)) - 🔖 publish v3.0.0-alpha.2 ([3d718fb](https://github.com/guanghechen/algorithm.ts/commit/3d718fba94605e2fd60a3056b502e2e1376ca0ed)) - ⬆️ upgrade dependencies ([2672a11](https://github.com/guanghechen/algorithm.ts/commit/2672a119246358d4589ae36bcabd044d395b6136)) # 3.0.0-alpha.1 (2022-11-13) ### Performance Improvements - 🔖 publish v3.0.0-alpha.1 ([8f9a0d0](https://github.com/guanghechen/algorithm.ts/commit/8f9a0d0dfee15efc08c4165848123b118c13ce81)) - ✅ update test snapshots due to the upgrade of jest ([56015d1](https://github.com/guanghechen/algorithm.ts/commit/56015d13f204dc7f3e6b23ff860ea2bb19784aab)) # 3.0.0-alpha.0 (2022-09-12) ### Features - ✨ refactor gomoku ([3f14d1e](https://github.com/guanghechen/algorithm.ts/commit/3f14d1e5fbbd07b58ae0a58acc645c9c1f84dc0f)) ### Performance Improvements - fix package names ([f647d76](https://github.com/guanghechen/algorithm.ts/commit/f647d76ebf0606a773624c9d0121151d6e75ddd3)) - 🔖 publish v3.0.0-alpha.0 ([7562a90](https://github.com/guanghechen/algorithm.ts/commit/7562a908843d63b6b1bf92e7aa2104e7b294eaa0)) ## 2.0.14 (2022-08-27) ### Performance Improvements - 🔖 publish v2.0.14 ([53a2462](https://github.com/guanghechen/algorithm.ts/commit/53a24624195c9f09422c9769c552f9066bc22c70)) - 🔧 update build configs ([266538b](https://github.com/guanghechen/algorithm.ts/commit/266538bb6736e85c2439b706f11865425b570563)) - 📝 update repo link ([f0210ca](https://github.com/guanghechen/algorithm.ts/commit/f0210ca93780ed4109c90d4d337604a6b998b01b)) ## 2.0.13 (2022-06-26) ### Performance Improvements - 🎨 refactor algorithm ([339864e](https://github.com/guanghechen/algorithm.ts/commit/339864ed68b97d5cb3aa954dc1c4644812ac0891)) - 🔖 publish v2.0.13 ([ebd6447](https://github.com/guanghechen/algorithm.ts/commit/ebd6447586d9958adaff5218e91768eda82b5bec)) ## 2.0.12 (2022-06-07) ### Performance Improvements - ⚡️ optimize gomoku ([2c839a4](https://github.com/guanghechen/algorithm.ts/commit/2c839a484f5be43bcf2c7b3ebcc1c29191ad0905)) - 🔖 publish v2.0.12 ([cfc415a](https://github.com/guanghechen/algorithm.ts/commit/cfc415a6e56d76dcf795421d92dd81ac2a39a5fc)) ## 2.0.11 (2022-04-19) ### Performance Improvements - 🔖 publish v2.0.11 ([42feafd](https://github.com/guanghechen/algorithm.ts/commit/42feafd0303f51767aa7e498f6de84d9478c1dca)) ## 2.0.10 (2022-04-12) ### Performance Improvements - ⚡️ maintain candidates in priority-queue cross state changes ([595490b](https://github.com/guanghechen/algorithm.ts/commit/595490b16d5df845f5d2e4afa7614d3db4871992)) - ⚡️ optimize unnecessary operations on maintaining candidates ([db9374f](https://github.com/guanghechen/algorithm.ts/commit/db9374f52e3cd6d95a81e29e10733d600773b6fe)) - 🔖 publish v2.0.10 ([65694a5](https://github.com/guanghechen/algorithm.ts/commit/65694a5108c220d1edff9be57a12bf8c8403e14d)) ## 2.0.9 (2022-04-10) ### Bug Fixes - 🐛 fix unreasonable scoreMap ([475cc20](https://github.com/guanghechen/algorithm.ts/commit/475cc208ee144d90cc1acaa6901c7d2d4ed78ffe)) ### Performance Improvements - 🚨 fix lint warnings ([e478cc1](https://github.com/guanghechen/algorithm.ts/commit/e478cc19dc3390070101a0f321bfa744ffb6a81a)) - 🎨 tweak constants ([8ffd74a](https://github.com/guanghechen/algorithm.ts/commit/8ffd74a9ddc79356ca957cf4be9cd5b241883e9f)) - ✅ update tests ([062fa3d](https://github.com/guanghechen/algorithm.ts/commit/062fa3d24fc652a6b9e09a7ed97bbcac91884313)) - 🔖 publish v2.0.9 ([1bdac64](https://github.com/guanghechen/algorithm.ts/commit/1bdac6453d21e3cfeca2e65413e01aa720a34d38)) ## 2.0.8 (2022-04-10) ### Performance Improvements - ⚡️ improve performance ([2bcb90a](https://github.com/guanghechen/algorithm.ts/commit/2bcb90ac5e63de80ffd3cebb5a49d6a70adb34b4)) - 🎨 refactor code -- separate minimax-searcher for different layers ([4ba6af6](https://github.com/guanghechen/algorithm.ts/commit/4ba6af64e2960c529ca0cb51f236810ad9330c38)) - 🎨 refactor codes ([3d8fa39](https://github.com/guanghechen/algorithm.ts/commit/3d8fa390cf06cc6c02dae546fba3a2434f71db92)) - 🔥 remove unused codes ([7dadeca](https://github.com/guanghechen/algorithm.ts/commit/7dadeca0f58363ec5f915a6f612e5b237958888b)) - ✅ update tests ([aa2c739](https://github.com/guanghechen/algorithm.ts/commit/aa2c7393306df404a6b72515ef9fa9d0a2d457bb)) - ✅ update tests ([963bea8](https://github.com/guanghechen/algorithm.ts/commit/963bea8e8a362dac50ce7ba29873eac6d9bd0644)) - 🔖 publish v2.0.8 ([7d92191](https://github.com/guanghechen/algorithm.ts/commit/7d921919d03570e772a847763100eb1a58d10d2d)) ## 2.0.8-alpha.0 (2022-04-05) ### Performance Improvements - ⚡️ hierarchical search ([9db8961](https://github.com/guanghechen/algorithm.ts/commit/9db8961369928c6c22fd4654bdcd5d69cb8f49d4)) - ⚡️ improve: detect must-drop position ([3bfbb9e](https://github.com/guanghechen/algorithm.ts/commit/3bfbb9e5c887905ed2a1ede7855d9fc476bc87db)) - ⚡️ maintain mustDropPos to get the top priority candidate faster ([86113e8](https://github.com/guanghechen/algorithm.ts/commit/86113e8a1c52b3003a28080d2eb85659246069ee)) - 🎨 rename type fields ([8a6adad](https://github.com/guanghechen/algorithm.ts/commit/8a6adad500505a3ef6cc0c19f652aab282fb223c)) - ⚡️ tweak search thresholds ([2f03fe1](https://github.com/guanghechen/algorithm.ts/commit/2f03fe14297a54234330da436d101a36642ca10c)) - ⚡️ tweak search thresholds ([a266744](https://github.com/guanghechen/algorithm.ts/commit/a266744f9ab7ab5ce9017ed65e682be11e288ca2)) - ⚡️ use priority_queue to improve GomokuState.expand ([a360ccf](https://github.com/guanghechen/algorithm.ts/commit/a360ccf8cc2c81f4b21e4da5056a9419dc9633e7)) - ⚡️ use topCandidate in searchDeepSpace ([11abb27](https://github.com/guanghechen/algorithm.ts/commit/11abb27468638549be5891577279bb900c184acb)) - 🔖 publish v2.0.8-alpha.0 ([24a301c](https://github.com/guanghechen/algorithm.ts/commit/24a301c145ad9f6c0e50494de39456c42bb02f29)) ## 2.0.7 (2022-04-03) ### Performance Improvements - add POSSIBILITY_SEARCH_EQUIV_CANDIDATE ([88ea7ec](https://github.com/guanghechen/algorithm.ts/commit/88ea7ecd4c2e6fd3ae5eb52df78a6de6b9dd711a)) - ⚡️ tweak scoreMap ([af85d27](https://github.com/guanghechen/algorithm.ts/commit/af85d27bf4fcc935810ad80c969b8795ddab087c)) - ⚡️ improve with priority-queue ([8cfe922](https://github.com/guanghechen/algorithm.ts/commit/8cfe92262a6bafca9811e8aac519427325eda5ec)) - 🔖 publish v2.0.7 ([814bc48](https://github.com/guanghechen/algorithm.ts/commit/814bc48415c5bbea555e0807b8a862cf348df5c1)) - 🔥 remove unused codes ([36ce18f](https://github.com/guanghechen/algorithm.ts/commit/36ce18f416f01468ed7c171a17e8bdfdf142835e)) - tweak algorithm ([fd90575](https://github.com/guanghechen/algorithm.ts/commit/fd9057574c51ab2c9aa82274c032d749753e7ddf)) ## 2.0.7-alpha.1 (2022-04-03) ### Bug Fixes - 🐛 tweak initial constants ([a69f372](https://github.com/guanghechen/algorithm.ts/commit/a69f37202943db235c77cabcba05c9f80c9d8dd5)) ### Performance Improvements - 🎨 add GomokuCountMap ([9e326dd](https://github.com/guanghechen/algorithm.ts/commit/9e326dd0cb6f7272810f950ff41f0ef2bfc7433d)) - ⚡️ cache candidate score per position and direction ([41bbb77](https://github.com/guanghechen/algorithm.ts/commit/41bbb774787e1664dc6137c95672ff743d710bb6)) - 🎨 refactor algorithm ([e79b67f](https://github.com/guanghechen/algorithm.ts/commit/e79b67f58cb28d1df7979d0874a10570da503c27)) - 🎨 refactor codes ([0099728](https://github.com/guanghechen/algorithm.ts/commit/0099728355348226b20ce49ff7ee17897f12e28a)) - 🎨 refactor codes ([93f2517](https://github.com/guanghechen/algorithm.ts/commit/93f25177c9b9861f66cf0fe64bc948fbdd3a6a63)) - 🔖 publish v2.0.7-alpha.1 ([fd487f4](https://github.com/guanghechen/algorithm.ts/commit/fd487f425bd3b8273a414ead8b697010fe1a3a83)) ## 2.0.7-alpha.0 (2022-03-27) ### Bug Fixes - 🐛 add the center pos as initial candidate ([496ceb5](https://github.com/guanghechen/algorithm.ts/commit/496ceb52518896c2b3ea686fb95715b0cdcc140a)) - 🐛 fix incorrectly result in '\_reAppriseCandidates' ([0e7e820](https://github.com/guanghechen/algorithm.ts/commit/0e7e8205641068918e53ddd8659642765d4230dd)) - 🐛 avoid to parse a invalid pos id ([c19a328](https://github.com/guanghechen/algorithm.ts/commit/c19a32884c884de5eec2b953caa754f9a145f9f6)) ### Performance Improvements - 🎨 default search neighbors within 2-steps as candidates ([8a9512e](https://github.com/guanghechen/algorithm.ts/commit/8a9512e3b27f60e01cf1581ba58989ae94aa242d)) - 🎨 refactor score func ([c8976b3](https://github.com/guanghechen/algorithm.ts/commit/c8976b3161c9d7553231df9153773babef05bdda)) - ⚡️ revert state cache ([54c7363](https://github.com/guanghechen/algorithm.ts/commit/54c73632acdf7e7c057e02c5976dde6f7b172056)) - ⚡️ tweak score map ([52c48b1](https://github.com/guanghechen/algorithm.ts/commit/52c48b18be4e7d6fad7f7543bdf34c7c62911e63)) - ⚡️ tweak score map ([2dae96c](https://github.com/guanghechen/algorithm.ts/commit/2dae96cb64dc341f144456d3606cbc4e241c42be)) - ✅ update snapshots ([2dfd446](https://github.com/guanghechen/algorithm.ts/commit/2dfd44692a05dfa8e733ea8026420d130d475ea1)) - ✅ update tests ([a967c8b](https://github.com/guanghechen/algorithm.ts/commit/a967c8b2394674b2b2653792696dec8e49c1bbb6)) - 🎨 move board from GomokuState to GomokuContext ([40810bb](https://github.com/guanghechen/algorithm.ts/commit/40810bb88d1c965a022e3b3a91a9a6cca0d5d535)) - 🎨 move placedCount from GomokuState to GomokuContext ([69f7648](https://github.com/guanghechen/algorithm.ts/commit/69f76481b63c00abbc9797dd4f0ab69c644a4b47)) - ⚡️ only re-calc related candidate scores ([f7d3b43](https://github.com/guanghechen/algorithm.ts/commit/f7d3b436c64bb59e3cb69ee440d4b57e63b11521)) - 🔖 publish v2.0.7-alpha.0 ([8a89b2b](https://github.com/guanghechen/algorithm.ts/commit/8a89b2b68855a8eee6b244188792bd294e56045f)) - 🔥 remove dead codes ([1f3772f](https://github.com/guanghechen/algorithm.ts/commit/1f3772f20e21759625c0a53b62b10958b6aa693c)) - 🔥 remove unused vars ([670d209](https://github.com/guanghechen/algorithm.ts/commit/670d20930e890786868d962e615d39310e8ec20a)) ## 2.0.6 (2022-03-26) ### Performance Improvements - ⚡️ avoid division and modulo operations ([754b580](https://github.com/guanghechen/algorithm.ts/commit/754b5806b877355c4366641eae44e9affd02288a)) - ⚡️ avoid encode/decode coordinates ([56fa8cf](https://github.com/guanghechen/algorithm.ts/commit/56fa8cfe99ebccca18db3c6d9640a5ee8bc6739f)) - ⚡️ avoid encode/decode coordinates ([cf0926e](https://github.com/guanghechen/algorithm.ts/commit/cf0926ed5bd715542663623e00f8e4f2f99fafbd)) - ⚡️ avoid unnecessary check ([278d041](https://github.com/guanghechen/algorithm.ts/commit/278d041169b00843a6ce3f6bba0ceb17793bd7da)) - ⚡️ tweak score map ([49f13d4](https://github.com/guanghechen/algorithm.ts/commit/49f13d46b0ee0e375a1980c55a214e58386d682a)) - ⚡️ use 'context.safeMove()' and 'context.fastMove()' instead of 'context.move()' ([616f8a6](https://github.com/guanghechen/algorithm.ts/commit/616f8a6f4b4df356e988e1d78ef1a32d9902e648)) - 🔖 publish v2.0.6 ([27a96ca](https://github.com/guanghechen/algorithm.ts/commit/27a96ca7e37b440880b5fd3be8bd1bd08939104e)) - 🎨 rename NEXT_MOVER_BUFFER_FAC to NEXT_MOVER_MAX_BUFFER ([ed0de20](https://github.com/guanghechen/algorithm.ts/commit/ed0de206d7641050f9da06c6a62c06c5f1974555)) ## 2.0.5 (2022-03-23) ### Performance Improvements - 🎨 detected max-possible size for gap shapes ([697b131](https://github.com/guanghechen/algorithm.ts/commit/697b1317a6d17f898a0a71169e711fbecc183365)) - 🎨 refactor updateRelatedConShapeCountMap to make it more readable ([45c6128](https://github.com/guanghechen/algorithm.ts/commit/45c612850c374b41ade745608be2c5b9b7318400)) - ✅ udpate tests ([1bfebee](https://github.com/guanghechen/algorithm.ts/commit/1bfebeead8fb981ec34562239f1ae045c2c7b38d)) - 🎨 prefer iterator instead of high-level func ([8270395](https://github.com/guanghechen/algorithm.ts/commit/8270395f67d222df5e498093c933629aaf33cc04)) - 🔖 publish v2.0.5 ([b6f49a9](https://github.com/guanghechen/algorithm.ts/commit/b6f49a92024b9062f89a47277f692069e3abd9ec)) - ✅ update tests ([5d6b494](https://github.com/guanghechen/algorithm.ts/commit/5d6b494987e44ca2dcd85323ae7bf5ea91478045)) ## 2.0.4 (2022-03-20) ### Bug Fixes - fix logic error ([e1aa811](https://github.com/guanghechen/algorithm.ts/commit/e1aa811c21e7de53cc0549a4a35f3bc0f395a210)) - 🐛 fix logic error ([8e9ac56](https://github.com/guanghechen/algorithm.ts/commit/8e9ac567e5bba3dfdfda285ced42ea78d956aa2d)) - 🐛 fix logic error in score func ([2c9fde2](https://github.com/guanghechen/algorithm.ts/commit/2c9fde278311e8985cda0cc2ab88688c2f12f738)) - 🐛 init continuouslyShapeCountMap when GomokuCountMap.init is called ([6dfa81e](https://github.com/guanghechen/algorithm.ts/commit/6dfa81e84798684953da9fdac89375a5c31c81e3)) - 🐛 tweak score ([e9229ad](https://github.com/guanghechen/algorithm.ts/commit/e9229ad761bcc98432b950e0765b37f71d28508a)) - 🐛 tweak score ([7befcaa](https://github.com/guanghechen/algorithm.ts/commit/7befcaab1c28b373530fd50e5b93840862e574f1)) ### Features - ✨ add GomokuStateCompressor ([ad419ad](https://github.com/guanghechen/algorithm.ts/commit/ad419adb2e8223699c8b02fb7b711f66065ef813)) - maintain gapShapeCountMap ([6b60cde](https://github.com/guanghechen/algorithm.ts/commit/6b60cde9de7069101b453b07367d8e4e0bf45901)) - ✨ implement [@algorithm](https://github.com/algorithm).ts/gomoku ([a961f2c](https://github.com/guanghechen/algorithm.ts/commit/a961f2c465f358269becfdce8087b8f3c6bb9e8b)) ### Performance Improvements - 🎨 detect max-possible size ([ddbc92b](https://github.com/guanghechen/algorithm.ts/commit/ddbc92b3b3b4380f4e6b8296acad019b512e7381)) - ⚡️ cache intermediate search states to improve performance ([b82504a](https://github.com/guanghechen/algorithm.ts/commit/b82504a9457311053252aafc965e18bedef50ddf)) - 🎨 detect COMPRESS_MOVE_BIT_BASE automaticly ([1752cca](https://github.com/guanghechen/algorithm.ts/commit/1752ccad21427c50d230a72a9325eb3b8b514afc)) - ⚡️ improve algorithm ([c31b64b](https://github.com/guanghechen/algorithm.ts/commit/c31b64bc9d1098e040040dbba49884844e0131fd)) - ⚡️ next mover should take a advantage factor ([af99efd](https://github.com/guanghechen/algorithm.ts/commit/af99efda2b1d58d37f50e61f7e8458770ebbcf9c)) - 🎨 refactor codes ([40569ae](https://github.com/guanghechen/algorithm.ts/commit/40569ae6674a5e22451476a5096b9b158987ed0b)) - 🎨 refactor interface of alphaBeta ([f88940d](https://github.com/guanghechen/algorithm.ts/commit/f88940d42c094156a58d60d360b3b0d64adb1e4a)) - 🔥 remove dead codes ([d5d779e](https://github.com/guanghechen/algorithm.ts/commit/d5d779ec86041c555bbf99d3103de1d1e281160e)) - ⚡️ tweak scoreMap ([a5ced54](https://github.com/guanghechen/algorithm.ts/commit/a5ced54d9613c86bcd4d7a1a3ac7909b8fff1c60)) - ✅ update tests ([40ed757](https://github.com/guanghechen/algorithm.ts/commit/40ed757ea6dff8193ec8f05893169cf196a68b48)) - 🔖 publish v2.0.4 ([1f37699](https://github.com/guanghechen/algorithm.ts/commit/1f37699b24bbf498fa820a44056c5f7b291308ee)) - 🎨 update randomMove to perform a reasonable move & update tests ([116b563](https://github.com/guanghechen/algorithm.ts/commit/116b563ff537ad8365195980bff6cc2c86dd661b)) - ✅ update tests ([d78bfdb](https://github.com/guanghechen/algorithm.ts/commit/d78bfdbfdae75c45bf2a2bf3c1c77658db867e9c))