2
argsPrefixmainChannelNamewindowWidthwindowHeight_childChannel_windows
_lastState_hwnds_initialRects	isClosing
_lastRects
_lastPrune_pruning_ready_pendingSetup_sending_queued_lastSendErrorLog_handlerSet_busy_counterisOpen
knownHwndsopenIdssendTileFromChildonTileActionsendDialogAnsweronDialogAnsweronWindowClosedopen	_sanitize	pushState
_lastThumb_closing_sendCoalesced_maxSendRounds_sendhwndOfcaptureRects	applyRectupdateTitle_applySetupWhenReadyonClosedselftestChildclose	pruneDeadstop_ensureHandler_onCall	parseArgsCardWindowService\WindowMethodChannelmodeChannelModeunidirectionalMapStringWindowControllerdynamicint
WindowRectboolcontainsDateTimefromMillisecondsSinceEpochSetcontainsKeyvaluestoSetListkeystoListgrowableFuturevoidPaletteTileRequestinvokeMethodtoJsontimeoutDurationseconds
debugPrinteObjectinitialRectforceremoveisUsableshowNativeBridgelistChildWindowscreateWindowConfigurationhiddenAtLaunch	argumentsiwherehreversedconfirmCardWindowdelayedmillisecondshwndtitle	unawaited_lateSetupRetrywindowIdlength
replaceAlltrim
isNotEmptyofroundnow
differenceentriesentryvaluegetCardWindowRectkeyapplyCardWindowRectsetCardWindowTitlesetupCardWindowwidthheightcalladdcloseCardWindowhideisEmptycardWindowAliveclearsetMethodCallHandler
MethodCallmethodhandleridstatefromJsonsplitfirst
instanceIdtryParse 5„€�¹™0L£&`å³    „B   
dart:async  „Z   6package:desktop_multi_window/desktop_multi_window.dart  „œ   package:flutter/foundation.dart  „Ç   package:flutter/services.dart  „ò   native_bridge.dart  …   palette_tile.dart  …-   window_rect.dartÀ FÆ À ¤[ƒž K€�€”€×��`�e�´‚‚J‚š‚Á‚Æƒƒ`ƒ¬ƒø„5„?„A„W„Y„›„Æ„ï„ñ……,…H…J…e……�…Ì…ñ…ó†,†e†g†¸†¿‡‡W‡Ž‡±‡Õ‡×ˆˆeˆšˆ°ˆ×ˆÝˆß‰‰J‰L‰•‰Ø‰ÚŠ'ŠUŠWŠžŠ¥Ší‹:‹ˆ‹ÆŒŒŒGŒLŒ™ŒÑ���c�j�´�øŽDŽ�ŽÙ�(�X�_�¬�õ�8�?�Œ�Û‘+‘d‘¬‘Í‘Ï’!’(’v’¿’ë““Z“¡“í”>”Š”©”°”û•D•u•w•¿•ô–<–k–m–ª–±–ü—H—–—å˜3˜n˜­˜é™™™`™¯™Ó™ñšššBš�š’šÛ›››_›®›øœ8œtœvœ«œøœú�=�D���Üž+žyžÂžÍžèŸŸHŸ[Ÿ•ŸœŸ¡Ÿ£Ÿö = ? Š ‘ Ü¡*¡w¡Æ¢¢¢U¢¡¢ê£0£Y£q£‡£�£ª£µ£Ð¤¤3¤W¤{¤‰¤º¤Í¥¥¥¥¥r¥“¥«¥Á¥×¥Ý¥ð¥ò¦2¦9¦€¦Ì§§J§†§ˆ§Ö¨¨^¨`¨Œ¨“¨á©)©0©x©½ªªª7ªLªjªxª·ªÚ«'«k«³«Õ¬"¬*¬v¬Á­­M­†­°­Ù­ç®®®6®~®Ï¯¯¯m¯¼°°Z°ˆ°•°¶°ü±±±4±m±v±š±À±Ç²²`²r²…²Ù²ã²ø²ÿ³³³<³y³Œ³Å³ã´´J´�´ß´ëµµCµEµ…µÉµËµïµù¶H¶–¶Ü·+·t·~·Î¸¸k¸º¹¹X¹§¹ç¹üº6º�º¨º²»»N»Ÿ»í¼>¼~¼ˆ¼Ú½+½c½–½à¾¾+¾q¾‰¾´¾î¿¿¿&¿1¿K¿•¿Ï¿Ú¿ã¿úÀ @À @jÀ @“À @ŸÀ @ïÀ AAÀ A‘À AÚÀ B&À BvÀ BÅÀ CÀ C<À CLÀ CaÀ C«À C·À DÀ DWÀ D«À E À EQÀ EŠÀ E“À E¦À EòÀ FÀ F)À FqÀ F»À GÀ GCÀ GWÀ GjÀ GªÀ GÎÀ GðÀ HÀ H.À H?À HUÀ H\À HaÀ HcÀ H·À HþÀ I À I9À I@À I�À I´À I»À J
À JSÀ JšÀ JéÀ K0À KuÀ K|À KÇÀ LÀ L@À LbÀ LzÀ L›À L¨À LÍÀ LôÀ MÀ M;À M†À MÓÀ MâÀ MéÀ N À N(À NqÀ N¸À OÀ OMÀ O–À OÝÀ OÿÀ PÀ PQÀ P�À PÐÀ Q À QFÀ QiÀ Q”À QÄÀ QòÀ RCÀ R~À RÂÀ RÒÀ RûÀ SÀ SÀ S@À SEÀ SGÀ S‹À SÀÀ SÂÀ TÀ TÀ TVÀ T“À TâÀ U)À UwÀ UªÀ U¬À UæÀ UíÀ V;À V‰À VÚÀ W-À WeÀ WlÀ W»À X	À XAÀ XhÀ XƒÀ X›À X¼À XÉÀ YÀ YXÀ YŸÀ YÏÀ YøÀ ZÀ Z+À Z2À ZTÀ ZkÀ ZvÀ ZÅÀ ZÏÀ [!À [sÀ [¾À \À \]À \gÀ \°À \ùÀ ]6À ]tÀ ]¡À ]çÀ ^0À ^^À ^…À ^˜À ^£À ^×À ^ûÀ _À _À _-À _RÀ _YÀ _^À _`À _—À _žÀ _èÀ `5À `ƒÀ `ÎÀ `þÀ a&À a(À aFÀ aaÀ ayÀ ašÀ a§À aöÀ bEÀ b„À b´À b¿À bÐÀ bùÀ c1À cDÀ c„À cŽÀ cÙÀ d$À dkÀ dŽÀ dÜÀ dþÀ eGÀ ePÀ eWÀ e\À e^À e²À e¹À fÀ f\À f‰À fÍÀ fÏÀ gÀ gÀ gcÀ gµÀ gïÀ göÀ h?À h‡À hÓÀ iÀ i7À i>À iuÀ i½À iþÀ j'À jYÀ jqÀ jœÀ j½À jÝÀ kÀ kIÀ kiÀ k´À kåÀ lÀ lÀ lÀ l-À l2À l4À l…À lŒÀ lÓÀ mÀ mlÀ m�À mÈÀ mäÀ n(À nsÀ nxÀ nzÀ nÁÀ nÈÀ oÀ o`À o¢À o¾À oÅÀ pÀ pWÀ p£À pÎÀ pêÀ q3À qyÀ q°À qÃÀ qôÀ qüÀ rJÀ rOÀ rQÀ r‘À r˜À rçÀ s3À s~À sÅÀ tÀ tZÀ tŒÀ t“À tßÀ uÀ u\À u¢À uðÀ vÀ v]À vŒÀ vÒÀ vÙÀ wÀ w2À wfÀ wqÀ w§À wÄÀ wôÀ xÀ x0À x:À x‰À xÓÀ yÀ yhÀ yŸÀ yÕÀ zÀ z$À zcÀ zjÀ z©À zÔÀ {À {À {À {UÀ {�À {ÐÀ {ØÀ |'À |OÀ |WÀ |¦À |ùÀ }DÀ }^À }fÀ }²À }üÀ ~@À ~kÀ ~§À ~´À ~öÀ AÀ VÀ žÀ §À ®À ÐÀ ðÀ €À €8À €_À €†À €¦À €ÇÀ €éÀ �2À �xÀ �ÃÀ ‚À ‚<À ‚cÀ ‚hÀ ‚jÀ ‚¶À ƒÀ ƒGÀ ƒnÀ ƒŒÀ ƒ—À ƒ¨À ƒÓÀ „À „À „[À „bÀ „gÀ „iÀ „©À „°À …À …TÀ …ŒÀ …ÃÀ …ËÀ †	À †SÀ †›À †ÚÀ †ÿÀ ‡7À ‡?À ‡ŠÀ ‡ÔÀ ˆÀ ˆCÀ ˆbÀ ˆ¨À ˆñÀ ‰:À ‰‰À ‰ªÀ ‰ÎÀ ŠÀ ŠZÀ Š}À Š­À ŠóÀ ŠúÀ ‹%À ‹^À ‹fÀ ‹µÀ ‹üÀ ŒMÀ ŒUÀ ŒŸÀ ŒêÀ �.À �6À �…À �ËÀ �àÀ �íÀ Ž/À ŽzÀ Ž�À ŽÓÀ ŽÜÀ ŽãÀ ŽüÀ �BÀ �VÀ �À �™À �¨À �ðÀ �À �À �À �9À �{À ��À �¢À �¤À �òÀ ‘,À ‘kÀ ‘˜À ‘¹À ‘ÌÀ ’À ’'À ’.À ’EÀ ’[À ’fÀ ’¤À ’áÀ “À “À “À “(À “AÀ “HÀ “MÀ “OÀ “zÀ “’À “©À “¾À “×À “ðÀ ”À ”XÀ ”©À ”îÀ •À •"À •>À •TÀ •kÀ •‚À •‡À •‰À •×À –À –YÀ –[À –‹À –©À –ðÀ —8À —…À —ÀÀ —øÀ ˜À ˜À ˜À ˜SÀ ˜oÀ ˜ƒÀ ˜™À ˜µÀ ™À ™À ™WÀ ™¦À ™ðÀ š?À šhÀ šˆÀ š­À šÈÀ šòÀ ›À ›<À ›xÀ ›£À ›²À ›¿À ›ÊÀ ›àÀ ›õÀ œAÀ œ[À œgÀ œµÀ œÿÀ �MÀ �•À �ÃÀ žÀ ž9À žRÀ žyÀ ž±À žÇÀ žÛÀ Ÿ'À ŸNÀ ŸnÀ Ÿ²À ŸâÀ ŸíÀ  À  À  dÀ  ¶À  ÌÀ  âÀ  ûÀ ¡BÀ ¡NÀ ¡dÀ ¡kÀ ¡}À ¡‚À ¡„À ¡ÒÀ ¢À ¢]À ¢_À ¢˜À ¢æÀ £	À £@À £vÀ £}À £‹À £ËÀ ¤ À ¤KÀ ¤SÀ ¤XÀ ¤[   „v/// ðŸªŸ KART PENCERESÄ° â€” bir CATIA kartÄ±nÄ± baÄŸÄ±msÄ±z, taÅŸÄ±nabilir pencereye
/// "aktarÄ±r" (kullanÄ±cÄ± isteÄŸi: kartÄ±n saÄŸ Ã¼stÃ¼ndeki ðŸ—– dÃ¼ÄŸmesi).
///
/// MÄ°MARÄ° (palette_service.dart ile AYNI kalÄ±p, iki fark yerde):
///   ana â†’ alt : `state` (gÃ¶rÃ¼necek kartÄ±n tam verisi, JSON)
///   alt â†’ ana : `ready`, `tile` (kart aksiyonu â€” `PaletteTileRequest`)
///
/// ðŸ“Œ NEDEN AYRI PENCERE: kart penceresi `desktop_multi_window` ile aÃ§Ä±lÄ±r â†’
///   kendi engine/isolate'Ä± vardÄ±r. BÃ¶ylece (a) kartta CATIA meÅŸgulken ana
///   pencere kilitlenmez, (b) kart baÅŸka bir sanal masaÃ¼stÃ¼nde aÃ§Ä±kken
///   `provider` nesnesi PAYLAÅžILMAZ (bunun iÃ§in kartÄ±n verisi JSON kanalÄ±ndan
///   akar â€” bkz. `PaletteTileView`).
///
/// ðŸ“Œ TEK YAZICI KURALI: alt pencere KARAR VERMEZ; `ðŸ‘� Ã¶ne getir`, `ðŸ’¾ kaydet`,
///   `â–¶ makro` gibi her ÅŸey istek olarak ana pencereye gider ve orada
///   `CatiaProvider.handlePaletteTileAction` ile YÃœRÃœTÃœLÃœR. BÃ¶ylece "aynÄ±
///   fonksiyonlarla kontrol" isteÄŸi birebir karÅŸÄ±lanÄ±r: alt pencere kendi
///   iÅŸ kodu YAZMAZ, ana pencerenin aynÄ± kapÄ±larÄ±nÄ± Ã§alar.„A  „Y  „›  „Æ  „ñ  …  …,      …g…x…z    …g…g…y  …è…Û…ƒk…ÛM/// `multi_window` argÃ¼manÄ±nÄ±n Ã¶neki (main.dart bu Ã¶nekle yÃ¶nlendirir).†M†;…õm†;6/// Alt pencerenin ana pencereye haber verdiÄŸi kanal.‡«‡�†i�E‡��1/// Pencere boyutu (FÄ°ZÄ°KSEL px, mantÄ±ksal px DEÄžÄ°L â€” native bÃ¶yle bekliyor).
///
/// ðŸ“Œ ORAN 16:10 â€” `CatiaListTile`'daki TV kartÄ±nÄ±n `AspectRatio`'si ile
///   AYNI. Pencere kart gibi gÃ¶rÃ¼nsÃ¼n diye oran birebir eÅŸitlenmiÅŸtir;
///   farklÄ± olursa iÃ§erik kÄ±rpÄ±lÄ±r / boÅŸluk kalÄ±r.‡Ï‡À‡³‡À 	ˆ„ˆ—ˆÙˆžˆ¸ˆ´ˆºˆÅˆÆˆt‡Ù�ˆt€‡/// Alt pencere -> ana pencere kanali (ayri kanal adli: ayni pencere
/// hem iki yonu kullanir ama `WindowMethodChannel` tek yonludur).‰E‰F‰:ˆáf‰:./// ðŸªŸ instanceId â†’ pencere denetleyicisi.‰Ó‰Ô‰Æ‰N€‡‰ÆP/// ðŸªŸ instanceId â†’ o kartÄ±n son gÃ¶nderilen Ã¶zeti (yeniden aÃ§Ä±lÄ±ÅŸta).ŠPŠQŠG‰ÜvŠGK/// instanceId â†’ kart penceresinin HWND'si (kapatma / canlilik kontrolu).‹ý‹þ‹íŠY�¦‹í�t/// ðŸªŸ instanceId â†’ geri yÃ¼klemede uygulanacak kayÄ±tlÄ± konum/boyut.
///
/// ðŸ“Œ NEDEN AYRI HARÄ°TA: `open()` Ã§aÄŸrÄ±ldÄ±ÄŸÄ± anda HWND henÃ¼z YOKTUR
///   (pencere `show()` olmadan listede bulunamÄ±yor). KayÄ±tlÄ± konum ancak
///   `_applySetupWhenReady` iÃ§inde, HWND bulunduktan SONRA uygulanabilir.
///   Harita `open` sÄ±rasÄ±nda doldurulur, orada tÃ¼ketilir.‘_‘`‘R�!„@‘R„3/// ðŸªŸ instanceId â†’ o kartÄ±n PENCERESÄ°NÄ°N SON KONUMU (HAFIZADA).
///
/// ðŸ”´ 29.09.2026 â€” KULLANICI: "kartÄ± dÄ±ÅŸarÄ± aktardÄ±m, boyutlandÄ±rdÄ±m,
///   taÅŸÄ±dÄ±m, kapattÄ±m, TEKRAR AÃ‡ dedim â†’ aynÄ± yerde aÃ§Ä±lmadÄ±".
///   KÃ–K NEDEN: `open()` konumu yalnÄ±z `initialRect` ile alÄ±yordu; o da
///   sadece oturum GERÄ° YÃœKLEME'de doluydu. Elle kapatÄ±p aÃ§Ä±nca hafÄ±za
///   boÅŸ kalÄ±yordu â†’ pencere imlecin yanÄ±nda (varsayÄ±lan) aÃ§Ä±lÄ±yordu.
///   Ã‡Ã–ZÃœM: pencere kapanÄ±rken son konumu buraya yazÄ±lÄ±r, sonraki `open()`
///   bu deÄŸeri `initialRect` gibi kullanÄ±r.
///
/// ðŸ“Œ BU AYRI BÄ°R HARÄ°TADIR (`_initialRects` DEÄžÄ°L): `_initialRects` bir
///   kezlik iÅŸ bayraÄŸÄ±dÄ±r ve tÃ¼ketilince SÄ°LÄ°NÄ°R; buradaki konum ise
///   kullanÄ±cÄ± yeni bir konum verene kadar SÃœREKLÄ° hatÄ±rlanÄ±r.
///
/// ðŸ“Œ OTURUMDAN BAÄžIMSIZ: bu ayarlanÄ±ÅŸ, uygulama yeniden baÅŸlatÄ±lsa bile
///   kaybolur (yalnÄ±z `session.json` kalÄ±cÄ±dÄ±r). Ä°stenirse oturum kaydÄ±yla
///   da saklanÄ±r (`CatiaProvider._snapshotLiveSession` â†’ `cardWindowRect`).‘ƒ‘‹‘Œ‘¦‘¨‘§‘v‘fC‘v ‘Å‘º‘®‘º •p•q•h•o•i•_‘Ñƒ¡•_ƒ…/// ðŸªŸ Alt pencerenin kanala `setWindowMethodHandler` kaydÄ±nÄ± YAPTIGI kartlar.
///
/// ðŸ”´ KÃ–K NEDEN (ikinci pencere aÃ§Ä±lÄ±nca donma/Ã§Ã¶kme): `WindowController`
///   oluÅŸturulurken alt motor HENÃœZ baÅŸlamamÄ±ÅŸtÄ±r. `open()` bu arada
///   `pushState` Ã§aÄŸÄ±rÄ±rsa native taraf
///   `CHANNEL_UNREGISTERED` dÃ¶ndÃ¼rÃ¼r:
///   `Channel "mixin.one/window_controller/<id>" not accessible`
///   (bkz. `window_channel_plugin.cc` â†’ `GetTarget`; pencere henÃ¼z
///   `registerMethodHandler` Ã§aÄŸÄ±rmamÄ±ÅŸ). Her baÅŸarÄ±sÄ±z gÃ¶nderim 700 ms
///   `timeout` + gÃ¼nlÃ¼k satÄ±rÄ± demek; `open()` 8 kez denediÄŸi ve her pencere
///   iÃ§in ayrÄ± Ã§alÄ±ÅŸtÄ±ÄŸÄ± iÃ§in yÃ¼k pencere sayÄ±sÄ±yla KATLANARAK bÃ¼yÃ¼r ve
///   UI thread'i kilitler.
///
///   Ã‡Ã–ZÃœM: alt pencere `ready` gÃ¶nderene kadar veri gÃ¶nderilMEZ; veri
///   `_lastState`'te bekler, `ready` gelince tek seferde gÃ¶nderilir.–f–g–B–e–C–K–d–L–c–Q–M–^–W–+•y€ï–+y/// instanceId -> `ready` geldikten sonra uygulanacak biÃ§imlendirme.
/// (HWND + baÅŸlÄ±k). Bkz. [_applySetupWhenReady].˜¨˜©˜š˜§˜›˜£˜�–o‚;˜�‚	/// AynÄ± pencereye aynÄ± anda TEK gÃ¶nderim (backpressure).
///
/// ðŸ“Œ NEDEN: `desktop_multi_window`Ä±n `invokeMethod` Ã§aÄŸrÄ±sÄ± **senkron
///   beklemelidir** (native'de `channel_->InvokeMethod` hedef engine'in
///   yanÄ±tÄ±nÄ± bekler). Alt pencere meÅŸgulse (PNG decode, kart Ã§izimi) ana
///   pencere bloklanÄ±r. `unawaited` Ã§aÄŸrÄ±lar birikince kanal kuyruÄŸu ÅŸiÅŸer
///   ve uygulama kilitlenir. Burada pencere baÅŸÄ±na tek uÃ§uÅŸ sÄ±nÄ±rÄ± koyup,
///   sÄ±rada kalan veriyi EN YENÄ°SÄ°YLE birleÅŸtiriyoruz.
™™˜ï™˜ð˜ø˜û™˜ü™˜Þ˜¯`˜Þ ™†™Ž™�™©™«™ª™r™€–™rS/// Kanal hatasÄ± gÃ¼nlÃ¼ÄŸÃ¼ iÃ§in son yazma zamanÄ± (hata fÄ±rtinasÄ±nÄ± kÄ±sar).™Ë™½™±™½ ™é™á™Õ™á š	™þ™ó™þ   .Ÿ¥€• .T/// ðŸ—‚ Alt pencereden gelen kart aksiyonu. `CatiaProvider` baÄŸlar (tek yazÄ±cÄ±). ¥ß¥ €Í¥ßZ/// ðŸ’¬âž¡ï¸� Alt pencereden gelen cevap isteÄŸi. `CatiaProvider` baÄŸlar (tek yazÄ±cÄ±). §u¥ô��§u�k/// ðŸªŸâœ–ï¸� Kart penceresi kapandÄ± (X, Alt+F4, Ã¶lÃ¼m temizliÄŸi).
///
/// ðŸ“Œ AMAÃ‡: `CatiaProvider` bu olayla kart baÅŸÄ±na tuttuÄŸu GÃ–NDERÄ°M
/// imzalarÄ±nÄ±/parmak izlerini temizler. Temizlenmezse aynÄ± kart yeniden
/// pencereye aktarÄ±ldÄ±ÄŸÄ±nda ESKÄ° imza durur, ilk state "deÄŸiÅŸmemiÅŸ" sayÄ±lÄ±p
/// elenir ve pencere boÅŸ/karÄ±ÅŸÄ±k gÃ¶rÃ¼nÃ¼r.À S»À S¼À S®À SItÀ S®K/// Son gÃ¶nderilen gÃ¶rÃ¼ntÃ¼ (kart baÅŸÄ±na) â€” deÄŸiÅŸim tespiti iÃ§in.À U¥À U¦À U�À U¤À UžÀ U’À SÄ�ãÀ U’�Í/// ðŸªŸ KapanÄ±ÅŸ sÃ¼recindeki pencereler â€” bunlara GÃ–NDERÄ°M YAPILMAZ.
///
/// ðŸ”´ Ã‡Ã–KMENÄ°N KÃ–KÃœ (29.09.2026): `invokeMethod` SENKRON beklidir;
/// pencere motoru yok edilirken uÃ§an bir Ã§aÄŸrÄ± native'da
/// **use-after-free** yapÄ±p uygulamayÄ± dÃ¼ÅŸÃ¼rÃ¼yordu. KullanÄ±cÄ± "iki pencere
/// aÃ§tÄ±m, birini kapatÄ±rken program Ã§Ã¶ktÃ¼" diyordu â€” Ã§Ã¼nkÃ¼ kapanan
/// pencere hÃ¢lÃ¢ `_pushAllCardWindows` sÄ±rasÄ±ndaki gÃ¶nderim kuyruÄŸundaydÄ±.À a"À aÀ _b�ÁÀ a�®/// ðŸ”´ Tek Ã§aÄŸrÄ±da en fazla bu kadar gÃ¶nderim turu.
///
/// ðŸ“Œ NEDEN: 30+ canlÄ± kartta alt pencereler PNG decode + kart Ã§izimi
///   yaparken ana pencere bloke olur. SÄ±nÄ±rsÄ±z "kuyruÄŸu boÅŸaltana kadar"
///   dÃ¶ngÃ¼, `close()`'nin 700 ms penceresini aÅŸÄ±p motoru Ã¶lÃ¼ yakalÄ±yordu.
///   2 tur, arayÃ¼zÃ¼n canlÄ±lÄ±ÄŸÄ±nÄ± korur (en gÃ¼ncel kare yine ulaÅŸÄ±r) ve
///   kuyruÄŸun sÄ±nÄ±rsÄ±z bÃ¼yÃ¼mesini engeller.   š”š”�ÞœN�©/// ðŸªŸ KayÄ±tlÄ± KART penceresi HWND'leri (palet/ayarlar gibi diÄŸer alt
/// pencereler BÄ°LEREK dahil deÄŸildir).
///
/// ðŸ“Œ NEDEN: `PaletteService.ensure()` HWND'yi bulamayÄ±nca `listChildWindows`
///   listesinden bir pencere seÃ§iyordu ve `.last` alÄ±yordu. Kart penceresi
///   aÃ§Ä±ldÄ±ÄŸÄ±nda liste sonunda O bulunduÄŸu iÃ§in `setupPalette` yanlÄ±ÅŸ
///   pencereye uygulanÄ±yordu. Bu liste onlarÄ± ayÄ±rmak iÃ§in.   œxœx~œÅ3/// AÃ§Ä±k kart pencerelerinin instance id listesi.    ŒçŒçŒî  ŒŒ�ŒÝ€Ó/// ðŸªŸ Bu kart penceresi ÅŸu an KAPANIYOR mu? GÃ¶nderim yapÄ±lmaz.
///
/// ðŸ“Œ `CatiaProvider._pushAllCardWindows` turunda boÅŸa iÅŸ + 700 ms bekleme
///   olmasÄ±n diye dÄ±ÅŸarÄ±dan okunur (bkz. `_closing`).   šWšWš^  šš}šP3/// Bu kart iÃ§in zaten aÃ§Ä±k bir pencere var mÄ±?   ž¡ž¡ž´  œüœü‚£ž��ˆ/// ðŸ—‚ Kart aksiyonu â†’ ANA PENCERE (alt pencereden gÃ¶nderilir).
///
/// ðŸ“Œ NEDEN BURADA: `onTileAction` geri Ã§aÄŸÄ±rmasÄ± yalnÄ±z ANA pencerede
///   baÄŸlanÄ±r (bkz. `CatiaProvider` constructor). Alt pencerede o statik
///   NULL'dur ve `?.call` sessizce hiÃ§bir ÅŸey yapmaz â€” kullanÄ±cÄ± "dÃ¼ÄŸmeler
///   Ã§alÄ±ÅŸmÄ±yor" der. Bu metot alt pencereye Ã¶zel, doÄŸrudan kanala yazar.   £]£]£d   £u£u£y   £‹£‹£�   A A„Ù£Fƒ/// ðŸ’¬âž¡ï¸� Kart penceresindeki sorunun [buttonIndex]. dÃ¼ÄŸmesine tÄ±klanÄ±r.
///
/// ðŸ�› 29.09.2026 â€” KULLANICI: soru pencerede gÃ¶rÃ¼ndÃ¼ ama cevap dÃ¼ÄŸmesi
///   Ã§alÄ±ÅŸmÄ±yordu. NEDEN: alt pencere `cardWindowMode`'da native snapshot
///   dinlemez; `realWindowPid` boÅŸ olduÄŸu iÃ§in `answerDialog` `pid <= 0`
///   kontrolÃ¼nde `false` dÃ¶nÃ¼yor, tÄ±klama hiÃ§ native'e gitmiyordu. TÄ±klama
///   "tek yazÄ±cÄ±" kuralÄ± gereÄŸi ANA pencerede yapÄ±lmalÄ±dÄ±r.
///
/// ðŸ“Œ NOT: Pencere modu DIÅžINDA bu yol kullanÄ±lmaz; `CatiaProvider`
///   doÄŸrudan `NativeBridge.answerCatiaDialog` Ã§aÄŸÄ±rÄ±r. Alt pencere her
///   zaman kendi `CatiaProvider`'Ä±na sahip olduÄŸu iÃ§in buradaki geri
///   Ã§aÄŸÄ±rma yalnÄ±z ana pencerede baÄŸlÄ±dÄ±r (bkz. `onTileAction`).   ª#ª#ª*   ª;ª;ªB   ªPªPª\  ¨b¨bŸýª�§/// ðŸªŸ KartÄ± baÄŸÄ±msÄ±z pencereye aktarÄ±r.
///
/// AynÄ± kart iÃ§in zaten pencere varsa **yenisi aÃ§Ä±lmaz**, mevcut olan Ã¶ne
/// getirilir (kullanÄ±cÄ± dÃ¼ÄŸmeye iki kez basÄ±p iki pencere istemez).
///
/// ðŸªŸ [initialRect] verilirse (oturum geri yÃ¼kleme) pencere kayÄ±tlÄ±
/// KONUM/BOYUTTA aÃ§Ä±lÄ±r. Konum, HWND bulunduktan SONRA uygulanÄ±r
/// (bkz. [_applySetupWhenReady]) Ã§Ã¼nkÃ¼ HWND o anda henÃ¼z yoktur.   À HÑÀ HÑÀ HØ  À HeÀ He€—À HÇ[/// BaÅŸlÄ±ktaki `|` karakterini temizler (argÃ¼man ayrÄ±ÅŸtÄ±rÄ±cÄ±sÄ±nÄ± bozmamak iÃ§in).   À LfÀ LfÀ Lm   À L~À L~À L“  À IÀ IŠAÀ LVƒQ/// ðŸ“¤ KartÄ±n gÃ¼ncel verisini alt pencereye gÃ¶nderir.
///
/// Pencere henÃ¼z hazÄ±r deÄŸilse veri kaybolmaz: [_lastState]'a yazÄ±lÄ±r ve
/// `open` tamamlanÄ±nca gÃ¶nderilir.
///
/// ðŸ“Œ Ä°MZA FÄ°LTRESÄ°: `thumb` alanÄ± base64 PNG'dir (yÃ¼zlerce KB). Her turda
///   aynÄ± kareyi yeniden gÃ¶ndermek kanalÄ± boÄŸardÄ±; bu yÃ¼zden gÃ¶rÃ¼ntÃ¼
///   deÄŸiÅŸmedikÃ§e ATLANIR â€” alt pencerede o kare zaten duruyordur.
/// ðŸ“Œ Ä°MZA FÄ°LTRESÄ°: `thumb` alanÄ± base64 PNG'dir (yÃ¼zlerce KB). Her turda
/// aynÄ± kareyi yeniden gÃ¶ndermek kanalÄ± boÄŸardÄ±; bu yÃ¼zden gÃ¶rÃ¼ntÃ¼
/// deÄŸiÅŸmedikÃ§e ATLANIR â€” alt pencerede o kare zaten duruyordur.
///
/// ðŸ”´ HAZIR KAPISI: alt pencere `ready` gÃ¶ndermeden gÃ¶nderim yapÄ±lmaz.
///   Aksi halde native `CHANNEL_UNREGISTERED` dÃ¶ner ve her deneme 700 ms
///   bekler (bkz. [_ready] aÃ§Ä±klamasÄ±).   À XlÀ XlÀ X}   À X‡À X‡À XŽ   À XŸÀ XŸÀ X´  À U®À U®‰®À XW‚˜/// ðŸ”´ BACKPRESSURE: pencereye aynÄ± anda TEK gÃ¶nderim.
///
/// `desktop_multi_window`Ä±n `invokeMethod`'Ä± senkron beklemelidir (native
/// `channel_->InvokeMethod` hedef engine'in cevabÄ±nÄ± bekler). Alt pencere
/// meÅŸgulken (PNG decode + kartÄ±n tam yeniden Ã§izimi) ana pencere bloklanÄ±r;
/// `unawaited` Ã§aÄŸrÄ±lar birikince kanal kuyruÄŸu ÅŸiÅŸer ve uygulama kilitlenir â€”
/// pencereler arttÄ±kÃ§a bu "kasma" katlanarak bÃ¼yÃ¼r.
///
/// Burada pencere baÅŸÄ±na tek uÃ§uÅŸ izni verilir; sÄ±radaki veri [_queued]'ta
/// TUTULUR ve en gÃ¼ncel haliyle birleÅŸtirilerek gÃ¶nderilir (eski kareleri
/// atarÄ±z â€” arayÃ¼z zaten en son durumu gÃ¶stermeli).   À aJÀ aJÀ a[   À aeÀ aeÀ al   À a}À a}À a’  À a*À a*„0À a>    À f�À f�À f¤  À e`À e`�kÀ f–�9/// ðŸªŸ KartÄ±n ÃœST pencere HWND'si (0 ise kayÄ±t yok / pencere henÃ¼z hazÄ±r deÄŸil).
///
/// ðŸ“Œ TAÅžIMA Ä°Ã‡Ä°N: Alt pencere bu deÄŸeri `state` ile alÄ±r. `GetForegroundWindow()`
///   Flutter'Ä±n Ã‡OCUK HWND'sini dÃ¶ndÃ¼rÃ¼r; o pencereye kurulan sÃ¼rÃ¼kleme
///   dÃ¶ngÃ¼sÃ¼ gÃ¶rÃ¼nmez pencereyi taÅŸÄ±maz.   À fÑÀ fÑ…_À iæ‚û/// ðŸªŸ KayÄ±t anÄ±ndaki AÃ‡IK kart pencerelerinin konum/boyutu.
///
/// DÃ¶nen anahtar = `instanceId`, deÄŸer = `WindowRect` (FÄ°ZÄ°KSEL piksel).
/// HWND'si olmayan / kÃ¼Ã§Ã¼ltÃ¼lmÃ¼ÅŸ pencereler **bilinÃ§li olarak boÅŸ bÄ±rakÄ±lÄ±r**
/// (konumlarÄ± anlamsÄ±z â€” bkz. `WindowRect.isUsable`).
///
/// ðŸ“Œ NEDEN ANA PENCEREDEN: alt pencere kendi engine'inde Ã§alÄ±ÅŸÄ±r ve
///   `window_manager`/native kÃ¶prÃ¼sÃ¼ orada gÃ¼venilir DEÄžÄ°LDÄ°R (bkz.
///   `DetailWindowService` notlarÄ±). HWND'leri `_hwnds`'te tutan da ana
///   penceredir; `GetWindowRect` saf Win32 Ã§aÄŸrÄ±sÄ± olduÄŸu iÃ§in motor
///   farkÄ± Ã¶nemsizdir.
///
/// ðŸ“Œ YALNIZ "OTURUM KAYDEDÄ°LÄ°RKEN" Ã§aÄŸrÄ±lÄ±r (bkz.
///   `CatiaProvider._snapshotLiveSession`): her taÅŸÄ±mada dinlenmez.   À m>À m>À mE   À mQÀ mQÀ m]  À l6À l6‚@À m4€ù/// ðŸªŸ Pencereyi kayÄ±tlÄ± [rect]'e taÅŸÄ±r (HWND hazÄ±r olduktan sonra Ã§aÄŸrÄ±lÄ±r).
///
/// BaÅŸarÄ±sÄ±z olursa sessizce geÃ§ilir â€” pencere zaten aÃ§Ä±ldÄ±, konum
/// uygulanamamasÄ± kullanÄ±cÄ±yÄ± KAYBETMÄ°Z (varsayÄ±lan yerleÅŸimde kalÄ±r).   À pyÀ pyÀ p€   À pŒÀ pŒÀ p“  À n|À n|ƒÑÀ pm�ý/// ðŸªŸâœ�ï¸� Kart PENCERESÄ° baÅŸlÄ±ÄŸÄ±nÄ± gÃ¼nceller (konum/boyut deÄŸiÅŸmez).
///
/// ðŸ“Œ NEDEN: `SetupCardWindow` baÅŸlÄ±ÄŸÄ± yalnÄ±z AÃ‡ILIÅžTA bir kez yazÄ±lÄ±yor.
/// Kart baÅŸlÄ±ÄŸÄ± deÄŸiÅŸince (kullanÄ±cÄ± pencerede Ã§ift tÄ±klayÄ±p yazÄ±nca)
/// Alt+Tab/gÃ¶rev Ã§ubuÄŸu ipucu ESKÄ° adÄ± gÃ¶steriyordu â†’ "baÅŸlÄ±k
/// deÄŸiÅŸmedi" izlenimi.
///
/// HWND yoksa (pencere henÃ¼z biÃ§imlenmedi/yok) sessizce geÃ§ilir; gÃ¶rev
/// `open` sÄ±rasÄ±nda zaten `pending.title` ile yeni baÅŸlÄ±k yazÄ±lÄ±r.   À u@À u@À uG  À rSÀ rSˆÀÀ u+‚Ð/// ðŸª— `ready` geldikten SONRA pencerenin biÃ§imlendirilmesi.
///
/// ðŸ”´ NEDEN GECÄ°KLETÄ°LDÄ°: `SetupCardWindow`, Flutter Ã‡OCUK HWND'sini bulup
///   onu `CardChildProc` ile alt sÄ±nÄ±flar (sÃ¼rÃ¼kleme + boyutlandÄ±rma bu
///   alt sÄ±nÄ±flamaya baÄŸlÄ±dÄ±r). O Ã§ocuk pencere alt motorun `OnCreate`
///   â†’ `SetChildContent` adÄ±mÄ±nda oluÅŸur. Motor henÃ¼z baÅŸlamadÄ±ysa
///   `GetWindow(hwnd, GW_CHILD)` NULL dÃ¶ner, alt sÄ±nÄ±flama sessizce
///   atlanÄ±r ve pencere taÅŸÄ±namaz/kasÄ±lÄ± kalÄ±r. Log kanÄ±tÄ±: `setup=true`
///   24.397'de, alt motor 24.472'de baÅŸlÄ±yor.
///
/// `ready` mesajÄ± `setWindowMethodHandler` kaydÄ±ndan SONRA gÃ¶nderildiÄŸi
/// iÃ§in o noktada Ã§ocuk HWND kesinlikle hazÄ±rdÄ±r.   À {tÀ {tÀ {{  À {À {‡MÀ {k>/// âœ• ile pencere kapandÄ±: kaydÄ± sil (kart listede KALIR).   À ƒ+À ƒ+À ƒ2  À ‚lÀ ‚l�ùÀ ƒ€£/// ðŸ§ª Selftest: alt pencereye "kendi provider'Ä±ndan dÃ¼ÄŸmelere bas" der.
/// BÃ¶ylece zincir GERÃ‡EK yoldan sÄ±nanÄ±r: alt provider â†’ kanal â†’ ana pencere.   À …pÀ …pÀ …w  À „kÀ „kŒ5À …j€Þ/// Kart penceresini GERCEKTEN kapatir (kart listede KALIR).
///
/// Onceki hata: `onClosed` yalniz kaydi siliyordu, pencere ekranda kaliyordu.
/// Simdi native WM_CLOSE gonderilir; HWND yoksa/basarisizsa pencere gizlenir.   À ‘MÀ ‘MÀ ‘R À ‘ZÀ �¦À �¦‚¥À ‘B€�/// Yikilmis (ornegin Alt+F4) pencerelerin kaydini temizler. Sik cagrilir,
/// bu yuzden [force] olmadikca 1.5 sn'de bir calisir.   À “QÀ “Q‚4À “ˆ+/// Uygulama kapanÄ±ÅŸÄ± / test temizliÄŸi.   À –]À –]�·À –q    À ˜9À ˜9À ˜D  À ˜À ˜‰fÀ ˜1    À ¢×À ¢×
À ¢Þ  À ¢aÀ ¢a�õÀ ¢Í:/// `multi_window` argÃ¼manÄ±ndan kart kimliÄŸini Ã§Ã¶zer. …J…JÀ Ÿ…P              ƒž K€�€”€×��`�e�´‚‚J‚š‚Á‚Æƒƒ`ƒ¬ƒø„5„?„A„W„Y„›„Æ„ï„ñ……,…H…J…e……�…Ì…ñ…ó†,†e†g†¸†¿‡‡W‡Ž‡±‡Õ‡×ˆˆeˆšˆ°ˆ×ˆÝˆß‰‰J‰L‰•‰Ø‰ÚŠ'ŠUŠWŠžŠ¥Ší‹:‹ˆ‹ÆŒŒŒGŒLŒ™ŒÑ���c�j�´�øŽDŽ�ŽÙ�(�X�_�¬�õ�8�?�Œ�Û‘+‘d‘¬‘Í‘Ï’!’(’v’¿’ë““Z“¡“í”>”Š”©”°”û•D•u•w•¿•ô–<–k–m–ª–±–ü—H—–—å˜3˜n˜­˜é™™™`™¯™Ó™ñšššBš�š’šÛ›››_›®›øœ8œtœvœ«œøœú�=�D���Üž+žyžÂžÍžèŸŸHŸ[Ÿ•ŸœŸ¡Ÿ£Ÿö = ? Š ‘ Ü¡*¡w¡Æ¢¢¢U¢¡¢ê£0£Y£q£‡£�£ª£µ£Ð¤¤3¤W¤{¤‰¤º¤Í¥¥¥¥¥r¥“¥«¥Á¥×¥Ý¥ð¥ò¦2¦9¦€¦Ì§§J§†§ˆ§Ö¨¨^¨`¨Œ¨“¨á©)©0©x©½ªªª7ªLªjªxª·ªÚ«'«k«³«Õ¬"¬*¬v¬Á­­M­†­°­Ù­ç®®®6®~®Ï¯¯¯m¯¼°°Z°ˆ°•°¶°ü±±±4±m±v±š±À±Ç²²`²r²…²Ù²ã²ø²ÿ³³³<³y³Œ³Å³ã´´J´�´ß´ëµµCµEµ…µÉµËµïµù¶H¶–¶Ü·+·t·~·Î¸¸k¸º¹¹X¹§¹ç¹üº6º�º¨º²»»N»Ÿ»í¼>¼~¼ˆ¼Ú½+½c½–½à¾¾+¾q¾‰¾´¾î¿¿¿&¿1¿K¿•¿Ï¿Ú¿ã¿úÀ @À @jÀ @“À @ŸÀ @ïÀ AAÀ A‘À AÚÀ B&À BvÀ BÅÀ CÀ C<À CLÀ CaÀ C«À C·À DÀ DWÀ D«À E À EQÀ EŠÀ E“À E¦À EòÀ FÀ F)À FqÀ F»À GÀ GCÀ GWÀ GjÀ GªÀ GÎÀ GðÀ HÀ H.À H?À HUÀ H\À HaÀ HcÀ H·À HþÀ I À I9À I@À I�À I´À I»À J
À JSÀ JšÀ JéÀ K0À KuÀ K|À KÇÀ LÀ L@À LbÀ LzÀ L›À L¨À LÍÀ LôÀ MÀ M;À M†À MÓÀ MâÀ MéÀ N À N(À NqÀ N¸À OÀ OMÀ O–À OÝÀ OÿÀ PÀ PQÀ P�À PÐÀ Q À QFÀ QiÀ Q”À QÄÀ QòÀ RCÀ R~À RÂÀ RÒÀ RûÀ SÀ SÀ S@À SEÀ SGÀ S‹À SÀÀ SÂÀ TÀ TÀ TVÀ T“À TâÀ U)À UwÀ UªÀ U¬À UæÀ UíÀ V;À V‰À VÚÀ W-À WeÀ WlÀ W»À X	À XAÀ XhÀ XƒÀ X›À X¼À XÉÀ YÀ YXÀ YŸÀ YÏÀ YøÀ ZÀ Z+À Z2À ZTÀ ZkÀ ZvÀ ZÅÀ ZÏÀ [!À [sÀ [¾À \À \]À \gÀ \°À \ùÀ ]6À ]tÀ ]¡À ]çÀ ^0À ^^À ^…À ^˜À ^£À ^×À ^ûÀ _À _À _-À _RÀ _YÀ _^À _`À _—À _žÀ _èÀ `5À `ƒÀ `ÎÀ `þÀ a&À a(À aFÀ aaÀ ayÀ ašÀ a§À aöÀ bEÀ b„À b´À b¿À bÐÀ bùÀ c1À cDÀ c„À cŽÀ cÙÀ d$À dkÀ dŽÀ dÜÀ dþÀ eGÀ ePÀ eWÀ e\À e^À e²À e¹À fÀ f\À f‰À fÍÀ fÏÀ gÀ gÀ gcÀ gµÀ gïÀ göÀ h?À h‡À hÓÀ iÀ i7À i>À iuÀ i½À iþÀ j'À jYÀ jqÀ jœÀ j½À jÝÀ kÀ kIÀ kiÀ k´À kåÀ lÀ lÀ lÀ l-À l2À l4À l…À lŒÀ lÓÀ mÀ mlÀ m�À mÈÀ mäÀ n(À nsÀ nxÀ nzÀ nÁÀ nÈÀ oÀ o`À o¢À o¾À oÅÀ pÀ pWÀ p£À pÎÀ pêÀ q3À qyÀ q°À qÃÀ qôÀ qüÀ rJÀ rOÀ rQÀ r‘À r˜À rçÀ s3À s~À sÅÀ tÀ tZÀ tŒÀ t“À tßÀ uÀ u\À u¢À uðÀ vÀ v]À vŒÀ vÒÀ vÙÀ wÀ w2À wfÀ wqÀ w§À wÄÀ wôÀ xÀ x0À x:À x‰À xÓÀ yÀ yhÀ yŸÀ yÕÀ zÀ z$À zcÀ zjÀ z©À zÔÀ {À {À {À {UÀ {�À {ÐÀ {ØÀ |'À |OÀ |WÀ |¦À |ùÀ }DÀ }^À }fÀ }²À }üÀ ~@À ~kÀ ~§À ~´À ~öÀ AÀ VÀ žÀ §À ®À ÐÀ ðÀ €À €8À €_À €†À €¦À €ÇÀ €éÀ �2À �xÀ �ÃÀ ‚À ‚<À ‚cÀ ‚hÀ ‚jÀ ‚¶À ƒÀ ƒGÀ ƒnÀ ƒŒÀ ƒ—À ƒ¨À ƒÓÀ „À „À „[À „bÀ „gÀ „iÀ „©À „°À …À …TÀ …ŒÀ …ÃÀ …ËÀ †	À †SÀ †›À †ÚÀ †ÿÀ ‡7À ‡?À ‡ŠÀ ‡ÔÀ ˆÀ ˆCÀ ˆbÀ ˆ¨À ˆñÀ ‰:À ‰‰À ‰ªÀ ‰ÎÀ ŠÀ ŠZÀ Š}À Š­À ŠóÀ ŠúÀ ‹%À ‹^À ‹fÀ ‹µÀ ‹üÀ ŒMÀ ŒUÀ ŒŸÀ ŒêÀ �.À �6À �…À �ËÀ �àÀ �íÀ Ž/À ŽzÀ Ž�À ŽÓÀ ŽÜÀ ŽãÀ ŽüÀ �BÀ �VÀ �À �™À �¨À �ðÀ �À �À �À �9À �{À ��À �¢À �¤À �òÀ ‘,À ‘kÀ ‘˜À ‘¹À ‘ÌÀ ’À ’'À ’.À ’EÀ ’[À ’fÀ ’¤À ’áÀ “À “À “À “(À “AÀ “HÀ “MÀ “OÀ “zÀ “’À “©À “¾À “×À “ðÀ ”À ”XÀ ”©À ”îÀ •À •"À •>À •TÀ •kÀ •‚À •‡À •‰À •×À –À –YÀ –[À –‹À –©À –ðÀ —8À —…À —ÀÀ —øÀ ˜À ˜À ˜À ˜SÀ ˜oÀ ˜ƒÀ ˜™À ˜µÀ ™À ™À ™WÀ ™¦À ™ðÀ š?À šhÀ šˆÀ š­À šÈÀ šòÀ ›À ›<À ›xÀ ›£À ›²À ›¿À ›ÊÀ ›àÀ ›õÀ œAÀ œ[À œgÀ œµÀ œÿÀ �MÀ �•À �ÃÀ žÀ ž9À žRÀ žyÀ ž±À žÇÀ žÛÀ Ÿ'À ŸNÀ ŸnÀ Ÿ²À ŸâÀ ŸíÀ  À  À  dÀ  ¶À  ÌÀ  âÀ  ûÀ ¡BÀ ¡NÀ ¡dÀ ¡kÀ ¡}À ¡‚À ¡„À ¡ÒÀ ¢À ¢]À ¢_À ¢˜À ¢æÀ £	À £@À £vÀ £}À £‹À £ËÀ ¤ À ¤KÀ ¤SÀ ¤XÀ ¤[   CardWindowService  v“