/*
 *  Copyright (C) 1999-2000 Harri Porten (porten@kde.org)
 *  Copyright (C) 2008 Apple Inc. All rights reserved.
 *
 *  This library is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public
 *  License as published by the Free Software Foundation; either
 *  version 2 of the License, or (at your option) any later version.
 *
 *  This library is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 *
 */

#ifndef NativeErrorPrototype_h
#define NativeErrorPrototype_h

#include "ErrorPrototype.h"

namespace JSC {
    class NativeErrorConstructor;

    class NativeErrorPrototype : public ErrorPrototype {
    private:
        NativeErrorPrototype(VM&, Structure*);

    public:
        typedef ErrorPrototype Base;

        static NativeErrorPrototype* create(VM& vm, JSGlobalObject* globalObject, Structure* structure, const String& name, NativeErrorConstructor* constructor)
        {
            NativeErrorPrototype* prototype = new (NotNull, allocateCell<NativeErrorPrototype>(vm.heap)) NativeErrorPrototype(vm, structure);
            prototype->finishCreation(vm, globalObject, name, constructor);
            return prototype;
        }

    protected:
        void finishCreation(VM&, JSGlobalObject*, const String& nameAndMessage, NativeErrorConstructor*);
    };

} // namespace JSC

#endif // NativeErrorPrototype_h


enderImage(this.dropdownBackground, this.getX() + 2, this.getY() + (int)(78.0D * this.scale), 480, l * this.list.length + 13, this.scale);
         if(this.list != null) {
            int i1 = this.getY() + this.getHeight();

            for(int j1 = 0; j1 < this.list.length; ++j1) {
               String s = this.list[j1];
               int k1 = (int)((double)j1 * (double)l * this.scale + (double)i1 + (double)(this.scrollOffset * (int)(40.0D * this.scale)));
               if(this.hoveredIndex == j1) {
                  Gui.drawRect(this.getX() + 6, k1 - 2, this.getX() - 2 + (int)((double)j * this.scale), k1 + (int)((double)k * this.scale), -7829368);
               }

               GL11.glScaled(d0, d0, d0);
               this.fontRenderer.drawString(s, (int)((double)(this.getX() + 9) / d0), (int)((double)(k1 - 4) / d0), -2631709);
               GL11.glScaled(1.0D / d0, 1.0D / d0, 1.0D / d0);
            }
         }
      }

      GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
      SlideoutGUI.renderImage(this.dropdown, this.getX(), this.getY(), 508, 108, this.scale);
      if(this.value != null) {
         GL11.glScaled(d0, d0, d0);
         this.fontRenderer.drawString(this.value.substring(0, Math.min(40, this.value.length())), (int)((double)(this.getX() + i) / d0), (int)(((double)this.getY() + 3.2D) / d0), -11053477);
         GL11.glScaled(1.0D / d0, 1.0D / d0, 1.0D / d0);
      }

   }

   public void update(int mX, int mY) {
      if(this.open) {
         int i = 480;
         int j = 98 * this.list.length;
         if(mX > this.getX() && (double)mX < (double)this.getX() + (double)i * this.scale && mY > this.getY() && (double)mY < (double)this.getY() + (double)j * this.scale) {
            for(int k = 0; k < this.list.length; ++k) {
               int l = this.getX() + 2;
               int i1 = 110;
               int j1 = 40;
               int k1 = 58;
               int l1 = (int)((double)k * (double)k1 * this.scale + (double)this.getY() + (double)((int)((double)i1 * this.scale)) + (double)(this.scrollOffset * (int)((double)j1 * this.scale)));
               if(mX > l && (double)mX < (double)l + (double)i * this.scale && mY > l1 && (double)mY < (double)l1 + (double)k1 * this.scale) {
                  this.hoveredIndex = k;
               }
            }
         }
      }

   }

   public boolean onClick(int mouseButton) {
      int i = Wrapper.getInstance().getMouseX();
      int j = Wrapper.getInstance().getMouseY();
      boolean flag = i > this.getX() && i < this.getX() + this.getWidth() && j > this.getY() && j < this.getY() + this.getHeight();
      boolean flag1 = false;
      if(this.open && !flag) {
         int k = 480;
         int l = 98 * this.list.length;
         if(i > this.getX() && (double)i < (double)this.getX() + (double)k * this.scale && j > this.getY() && (double)j < (double)this.getY() + (double


',eq('e21'))).has('p12',eq('e12'))).has('p13',eq('e13'))).has('p24',eq('e24')));"
                + "f6(f5(f4(f3(f2(f1().has('p20',eq('e20'))).has('p21',eq('e21'))).has('p12',eq('e12'))).has('p23',eq('e23'))).has('p14',eq('e14')));"
                + "f6(f5(f4(f3(f2(f1().has('p20',eq('e20'))).has('p21',eq('e21'))).has('p12',eq('e12'))).has('p23',eq('e23'))).has('p24',eq('e24')));"
                + "f6(f5(f4(f3(f2(f1().has('p20',eq('e20'))).has('p21',eq('e21'))).has('p22',eq('e22'))).has('p13',eq('e13'))).has('p14',eq('e14')));"
                + "f6(f5(f4(f3(f2(f1().has('p20',eq('e20'))).has('p21',eq('e21'))).has('p22',eq('e22'))).has('p13',eq('e13'))).has('p24',eq('e24')));"
                + "f6(f5(f4(f3(f2(f1().has('p20',eq('e20'))).has('p21',eq('e21'))).has('p22',eq('e22'))).has('p23',eq('e23'))).has('p14',eq('e14')));"
                + "f6(f5(f4(f3(f2(f1().has('p20',eq('e20'))).has('p21',eq('e21'))).has('p22',eq('e22'))).has('p23',eq('e23'))).has('p24',eq('e24')));"
                + "r";

    }

    @Override
    protected String getExpectedGremlinForTestAndFollowedByAnd() {
        return "g.V().has('name',eq('Fred')).has('name',eq('George')).has('age',eq('13')).has('age',eq('14'))";
    }

    @Override
    protected String getExpectedGremlinForTestAndFollowedByOr() {
        return "def r=(([]) as Set);"
                + "def f1={g.V().has('name',eq('Fred')).has('name',eq('George'))};"
                + "f1().has('age',eq('13')).fill(r);"
                + "f1().has('age',eq('14')).fill(r);"
                + "r";
    }

    @Override
    protected String getExpectedGremlinForTestInitialAlias() {
        return "def r=(([]) as Set);"
                + "g.V().as('x').has('name',eq('Fred')).fill(r);"
                + "g.V().as('x').has('name',eq('George')).fill(r);"
                + "r";
    }

    @Override
    protected String getExpectedGremlinForTestFinalAlias() {
        return "def r=(([]) as Set);"
                + "g.V().has('name',eq('Fred')).as('x').fill(r);"
                + "g.V().has('name',eq('George')).as('x').fill(r);"
                + "r";
    }

    @Override
    protected String getExpectedGremlinForTestAliasInMiddle() {
        return "def r=(([]) as Set);"
                + "g.V().has('name',eq('Fred')).as('x').has('age',eq('13')).fill(r);"
                + "g.V().has('name',eq('Fred')).as('x').has('age',eq('14')).fill(r);"
                + "g.V().has('name',eq('George')).as('x').has('age',eq('13')).fill(r);"
                + "g.V().has('name',eq('George')).as('x').has('age',eq('14')).fill(r);"
                + "r";
    }

    @Override
    protected String getExpectedGreminForTestMultipleAliases() {


local W = unpack((select(2, ...))) ---@type WindTools

W.Changelog[375] = {
	RELEASE_DATE = "2024/09/03",
	IMPORTANT = {
		["zhCN"] = {
			"新发布一个临时插件用来解决跨阵营公会的成就系统，Curse 搜索 [Guild Achievements Fix] 下载！",
			"[高级] 由于暴雪已经修复 Bug，移除了 PlayStyleString 修复功能。",
		},
		["zhTW"] = {
			"新發布一個臨時插件用來解決跨陣營公會的成就系統，Curse 搜索 [Guild Achievements Fix] 下載！",
			"[進階] 由於暴雪已經修復 Bug，移除了 PlayStyleString 修復功能。",
		},
		["enUS"] = {
			"Newly released a temporarily addon to fix the cross-faction guild achievement system, search [Guild Achievements Fix] on Curse to download!",
			"[Advanced] Removed the PlayStyleString fix feature as Blizzard has fixed the bug.",
		},
		["koKR"] = {
			"신규로 출시된 애드온으로, 교전 진영 길드 업적 시스템을 일시적으로 수정합니다. Curse 에서 [Guild Achievements Fix] 를 검색하여 다운로드하세요!",
			"[고급] 블리자드가 버그를 수정했기 때문에 PlayStyleString 수정 기능을 제거했습니다.",
		},
		["ruRU"] = {
			"Недавно выпущено временное дополнение,


d then
			ZMKP_AtkHit = ZMKP_AtkHit + 200
			e.self:ModifyNPCStat("atk", tostring(ZMKP_AtkHit))
			failed = true
		end

		if failed then
			eq.get_entity_list():MessageClose(e.self, false, 120, MT.Yellow, "Your failure to balance the scales has added to Kvxe's already impressive skills.")
		else
			eq.get_entity_list():MessageClose(e.self, false, 120, MT.Yellow, "Kvxe's body trembles as he fails to gather power from the balanced scales.")
		end

		-- so dots will oddly still hurt him, with enough necros it is possible to skip an event if we just used HP events (live doesn't skip, probably does if you manage to kill him though)
		-- So instead of just using straight HP events, we gotta do some checking here!
		if math.floor(e.self:GetHPRatio()) <= (target_hp - 10) then
				-- we'll we gotta skip an active phase basically, to next balance!
				eq.set_timer("balance", ZMKP_Balance_Timer)
				eq.get_entity_list():MessageClose(e.self, false, 120, MT.Yellow, "Kvxe enters a state of battle meditation.")
				e.self:SetOOCRegen(0)
				target_hp = target_hp - 10

				eq.signal(298125, 2) -- NPC: #Balance_of_Speed
				eq.signal(298126, 2) -- NPC: #Balance_of_Defense
				eq.signal(298127, 2) -- NPC: #Balance_of_Fury
				eq.signal(298128, 2) -- NPC: #Balance_of_Rage
		else
				e.self:ProcessSpecialAbilities(ZMKP_Active)
				target_hp = target_hp - 10
				eq.set_next_hp_event(target_hp)
		end
	elseif e.timer == "wipecheck" then
		-- Check to see if there are any Clients in the room with ZMKP
		local client = eq.get_entity_list():GetRandomClient(e.self:GetX(), e.self:GetY(), e.self:GetZ(), 9000)
		if not client:IsClient() then
			-- Clean up after a wipe
			eq.depop_all(298125)
			eq.depop_all(298126)
			eq.depop_all(298127)
			eq.depop_all(298128)

			eq.spawn2(298029, 0, 0, e.self:GetX(), e.self:GetY(), e.self:GetZ(), e.self:GetHeading()) -- NPC: Zun`Muram_Kvxe_Pirik
			eq.depop()

			eq.signal(298223,2) -- Unlock Doors
		end
	end
end

function ZMKP_Hp(e)
	if e.hp_event == 90 or e.hp_event == 80 or e.hp_event == 70 or e.hp_event == 60 or e.hp_event == 50 or e.hp_event == 40 or e.hp_event == 30 then
		if e.hp_event == 90 then
			eq.signal(298223,1) -- Lock Doors
		end

		eq.set_timer("balance", ZMKP_Balance_Timer)
		eq.get_entity_list():MessageClose(e.self, false, 120, MT.Yellow, "Kvxe enters a state of battle meditation.")
		e.self:ProcessSpecialAbilities(ZMKP_Inactive)
		e.self:SetOOCRegen(0)
		e.self:WipeHateList()

		eq.signal(298125, 2) -- NPC: #


a	T_CHANGE_HPRIV	! macro
	.word 0xe08544a0  ! 4217: LDUWA_R	lduwa	[%r21, %r0] 0x25, %r16
	.word 0xe4a5c4a0  ! 4218: STWA_R	stwa	%r18, [%r23 + %r0] 0x25
	mov	0x70, %r18
	mov	0x3f8, %r20
	.word 0xe8b4c400  ! 4221: STHA_R	stha	%r20, [%r19 + %r0] 0x20
	.word 0xe0cc8400  ! 4222: LDSBA_R	ldsba	[%r18, %r0] 0x20, %r16
	.word 0xecc6a000  ! 4223: LDSWA_I	ldswa	[%r26, + 0x0000] %asi, %r22
	.word 0xe8c40400  ! 4224: LDSWA_R	ldswa	[%r16, %r0] 0x20, %r20
	.word 0xe8bfce80  ! 4225: STDA_R	stda	%r20, [%r31 + %r0] 0x74
	mov	0x10, %r16
	.word 0x87802020  ! 4227: WRASI_I	wr	%r0, 0x0020, %asi
	.word 0xeacda000  ! 4228: LDSBA_I	ldsba	[%r22, + 0x0000] %asi, %r21
	.word 0xeaa48400  ! 4229: STWA_R	stwa	%r21, [%r18 + %r0] 0x20
	.word 0x87802020  ! 4230: WRASI_I	wr	%r0, 0x0020, %asi
	.word 0xe0ce89e0  ! 4231: LDSBA_R	ldsba	[%r26, %r0] 0x4f, %r16
	.word 0x87802020  ! 4232: WRASI_I	wr	%r0, 0x0020, %asi
	.word 0x87802025  ! 4233: WRASI_I	wr	%r0, 0x0025, %asi
	mov	0x7d8, %r20
	mov	0x40, %r24
	.word 0xeac76000  ! 4236: LDSWA_I	ldswa	[%r29, + 0x0000] %asi, %r21
	.word 0xeac7a000  ! 4237: LDSWA_I	ldswa	[%r30, + 0x0000] %asi, %r21
	.word 0xec9f8e80  ! 4238: LDDA_R	ldda	[%r30, %r0] 0x74, %r22
	.word 0xe8d649e0  ! 4239: LDSHA_R	ldsha	[%r25, %r0] 0x4f, %r20
	.word 0xe2f7a000  ! 4240: STXA_I	stxa	%r17, [%r30 + 0x0000] %asi
	.word 0xe6a4c400  ! 4241: STWA_R	stwa	%r19, [%r19 + %r0] 0x20
	mov	0x58, %r24
	.word 0xe4d7ce40  ! 4243: LDSHA_R	ldsha	[%r31, %r0] 0x72, %r18
	.word 0x8780204f  ! 4244: WRASI_I	wr	%r0, 0x004f, %asi
	.word 0xeab7ce60  ! 4245: STHA_R	stha	%r21, [%r31 + %r0] 0x73
	.word 0xe4c62000  ! 4246: LDSWA_I	ldswa	[%r24, + 0


px dotted #FFFFFF;
}

.cp-light[hover="true"] {
  border : 2px dotted #909090;
}
/* ***** BEGIN LICENSE BLOCK *****
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 *
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (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.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * The Original Code is mozilla.org code.
 *
 * The Initial Developer of the Original Code is
 * Netscape Communications Corporation.
 * Portions created by the Initial Developer are Copyright (C) 1998
 * the Initial Developer. All Rights Reserved.
 *
 * Contributor(s):
 *   Joe Hewitt <hewitt@netscape.com>
 *   Dan Mosedale <dmose@netscape.com>
 *
 * Alternatively, the contents of this file may be used under the terms of
 * either of the GNU General Public License Version 2 or later (the "GPL"),
 * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 * in which case the provisions of the GPL or the LGPL are applicable instead
 * of those above. If you wish to allow use of your version of this file only
 * under the terms of either the GPL or the LGPL, and not to allow others to
 * use your version of this file under the terms of the MPL, indicate your
 * decision by deleting the provisions above and replace them with the notice
 * and other provisions required by the GPL or the LGPL. If you do not delete
 * the provisions above, a recipient may use your version of this file under
 * the terms of any one of the MPL, the GPL or the LGPL.
 *
 * ***** END LICENSE BLOCK ***** */

/* ===== messengercompose.css ===========================================
  == Styles for the main Messenger Compose window.
  ======================================================================= */

@import url("chrome://messenger/skin/");

@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");

/* ::::: primary toolbar masthead ::::: */

#composeToolbar > .toolbar-holder > .toolbar-primary-icon {
  background-image: url("chrome://messenger/skin/messengercompose/icons/mast-msgcomp.gif");
}

/* ::::: primary toolbar buttons ::::: */

.toolbarbutton-1 {
  list-style-image: url("chrome://messenger/skin/icons/btn1.gif");
}

#button-send {
  -moz-image-region: rect(374px 49px 407px 0);
}

#button-send:hover {
  -moz-image-region: rect(374px 99px 407px 50px);
}

#button-send:hover:active {
  -moz-image-region: rect(374px 149px 407px 100px);
}

#button-send[disabled="true"] {
  -moz-image-region: rect(374px 199px 407px 150px) !important;
}

#button-address {
  -moz-image-region: rect(306px 49px 339px 0);
}

#button-address:hover {
  -moz-image-region: rect(306px 99px 339px 50px);
}

#button-address:hover:active {
  -mo


RequirementsControllerConfiguration,
	seedCluster cluster.Cluster,
) error {
	seedIsGarden, err := gardenletutils.SeedIsGarden(ctx, seedCluster.GetAPIReader())
	if err != nil {
		return fmt.Errorf("failed checking whether the seed is the garden cluster: %w", err)
	}
	if seedIsGarden {
		return nil // When the seed is the garden cluster at the same time, the gardener-operator runs this controller.
	}

	if err := (&vpaevictionrequirements.Reconciler{
		ConcurrentSyncs: cfg.ConcurrentSyncs,
	}).AddToManager(mgr, seedCluster); err != nil {
		return err
	}

	// At this point, the seed is not the garden cluster at the same time. However, this could change during the runtime
	// of gardenlet. If so, gardener-operator will take over responsibility of the VPA eviction requirements and will run
	// this controller. Since there is no way to stop a controller after it started, we cancel the manager context in
	// case the seed is registered as garden during runtime. This way, gardenlet will restart and not add the controller
	// again.
	return mgr.Add(manager.RunnableFunc(func(ctx context.Context) error {
		wait.Until(func() {
			seedIsGarden, err = gardenletutils.SeedIsGarden(ctx, seedCluster.GetClient())
			if err != nil {
				mgr.GetLogger().Error(err, "Failed checking whether the seed cluster is the garden cluster at the same time")
				return
			}
			if !seedIsGarden {
				return
			}

			mgr.GetLogger().Info("Terminating gardenlet since seed cluster has been registered as garden cluster. " +
				"This effectively stops the VPAEvictionRequirements controller (gardener-operator takes over now).")
			gardenletCancel()
		}, SeedIsGardenCheckInterval, ctx.Done())
		return nil
	}))
}
// SPDX-FileCopyrightText: SAP SE or an SAP affiliate company and Gardener contributors
//
// SPDX-License-Identifier: Apache-2.0

package backupbucket_test

import (
	"context"

	. "github.com/onsi/ginkgo/v2"
	. "github.com/onsi/gomega"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/apimachinery/pkg/types"
	"k8s.io/utils/ptr"
	"sigs.k8s.io/controller-runtime/pkg/event"
	"sigs.k8s.io/controller-runtime/pkg/predicate"
	"sigs.k8s.io/controller-runtime/pkg/reconcile"

	gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1"
	extensionsv1alpha1 "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1"
	. "github.com/gardener/gardener/pkg/gardenlet/controller/backupbucket"
)

var _ = Describe("Add", func() {
	var (
		reconciler   *Reconciler
		backupBucket *gardencorev1beta1.BackupBucket
		bucketName   = "bucket"
	)

	BeforeEach(func() {
		reconciler = &Reconciler{
			SeedName: "seed",
		}

		backupBucket = &gardencorev1beta1.BackupBucket{
			ObjectMeta: metav1.ObjectMeta{
				Name: bucketName,
			},
			Spec: gardencorev1beta1.BackupBucketSpec{
				SeedName: ptr.To("seed"),
			},
		}
	})

	Describe("#SeedNamePredicate", func() {
		var (
			p predicat


),
            SkipLeadingWhitespace(kCrHello.data(),
                                  kCrHello.data() + kCrHello.size()));
  const string kTabHello("\thello");
  ASSERT_EQ(static_cast<size_t>(1),
            SkipLeadingWhitespace(kTabHello.data(),
                                  kTabHello.data() + kTabHello.size()));
  const string kWsHello("\r \t \n  hello");
  ASSERT_EQ(static_cast<size_t>(7),
            SkipLeadingWhitespace(kWsHello.data(),
                                  kWsHello.data() + kWsHello.size()));
}

TEST(StringUtilTest, TestSplitQuotedUsing) {
  const string kStuff("\"a\",\"b\",\"c\"");
  std::vector<string> output;
  SplitQuotedUsingFromString(kStuff, ',', &output);
  ASSERT_EQ(static_cast<size_t>(3), output.size());
  ASSERT_EQ(string("a"), output[0]);
  ASSERT_EQ(string("b"), output[1]);
  ASSERT_EQ(string("c"), output[2]);

  const string kStuffDq("\"a,a\",\"b\"\"\",\"c\"");
  output.clear();
  SplitQuotedUsingFromString(kStuffDq, ',', &output);
  ASSERT_EQ(static_cast<size_t>(3), output.size());
  ASSERT_EQ(string("a,a"), output[0]);
  ASSERT_EQ(string("b\""), output[1]);
  ASSERT_EQ(string("c"), output[2]);

  const string kUnbalanced("\"a\"junk,b,c");
  output.clear();
  SplitQuotedUsingFromString(kUnbalanced, ',', &output);

  output.clear();
  SplitQuotedUsingFromString("a", ',', &output);
  ASSERT_EQ(static_cast<size_t>(1), output.size());
  ASSERT_EQ(string("a"), output[0]);

  output.clear();
  SplitQuotedUsingFromString("\"b,b\"", ',', &output);
  ASSERT_EQ(static_cast<size_t>(1), output.size());
  ASSERT_EQ(string("b,b"), output[0]);

  output.clear();
  SplitQuotedUsingFromString("\"c\"\"x\"\"", ',', &output);
  ASSERT_EQ(static_cast<size_t>(1), output.size());
  ASSERT_EQ(string("c\"x\""), output[0]);

  output.clear();
  SplitQuotedUsingFromString("\"c\"\"x\"\"", ',', &output);
  ASSERT_EQ(static_cast<size_t>(1), output.size());
  ASSERT_EQ(string("c\"x\""), output[0]);

  const string kDqAndNot("a,\"b,b\",\"c\"\"x\"\"");
  output.clear();
  SplitQuotedUsingFromString(kDqAndNot, ',', &output);
  ASSERT_EQ(static_cast<size_t>(3), output.size());
  ASSERT_EQ(string("a"), output[0]);
  ASSERT_EQ(string("b,b"), output[1]);
  ASSERT_EQ(string("c\"x\""), output[2]);

  output.clear();
  SplitQuotedUsingFromString("a,b,c", ',', &output);
  ASSERT_EQ(static_cast<size_t>(3), output.size());
  ASSERT_EQ(string("a"), output[0]);
  ASSERT_EQ(string("b"), output[1]);
  ASSERT_EQ(string("c"), output[2]);

  output.clear();
  SplitQuotedUsingFromString("a,,c", ',', &output);
  ASSERT_EQ(static_cast<size_t>(3), output.size());
  ASSERT_EQ(string("a"), output[0]);
  ASSERT_TRUE(output[1].empty());
  ASSERT_EQ(string("c"), output[2]);

  output.clear();
  SplitQuotedUsingFromString(",,", ',', &output);
  ASSERT_EQ(static_cast<size_t>(3), output.size());
  ASSERT_TRUE(output[0].empty());
  ASSERT_TRUE(output[1].empty());
  ASSERT_TRUE(output[2].empty());

  output.clear();
  SplitQuotedUsingFromString("a,b,c,", ',', &output);
  ASSERT_EQ(static_cast<size_t>(4), output.size());
  ASSERT_EQ(string("a"), output[0]);
  ASSERT_E


1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}`,sl=$s(Zu,Tu),lu=$s(Hc,mf),lc=$s(Ts,Du),qs=$s(Wc,Ol),$u=$s(Cl,Bl),Yl=$s(Au,Vs),uu=$s(Ll,Go),tl=$s(Ms,Yu),xc=$s(Ql,ic),Fu=$s(el,kf),uc=$s(No,jf),Bc=$s(us,Ni),Lf=$s(_c,Su),Kf=$s(wl,Xc),bc=$s(oc,Cc),Nc=$s(Pl,_f),yu=$s(tf,Lc),Uc=$s(sc,Zc),Nl=$s(Yc,Mu),wc=$s(rf,Ku),sf=$s(zu,Il),Tc=$s(pc,Kc),Ys=$s(Ps,Oc),cu=$s(Cf,af),Eu=$s(Pc,nf),$c=$s(su,of);function $s(me,j){var ce=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,K=j.match(/attribute ([\w]+) ([\w]+)/g),ge=me.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),Be=j.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),rt=Be?Be.concat(ge):ge,st={};return me=me.replace(ce,function(Ge,Qe,pt,Bt,It){return st[It]=!0,Qe==="define"?`
#ifndef HAS_UNIFORM_u_`+It+`
varying `+pt+" "+Bt+" "+It+`;
#else
uniform `+pt+" "+Bt+" u_"+It+`;
#endif
`:`
#ifdef HAS_UNIFORM_u_`+It+`
    `+pt+" "+Bt+" "+It+" = u_"+It+`;
#endif
`}),j=j.replace(ce,function(Ge,Qe,pt,Bt,It){var Nt=Bt==="float"?"vec2":"vec4",Xt=It.match(/color/)?"color":Nt;return st[It]?Qe==="define"?`
#ifndef HAS_UNIFORM_u_`+It+`
uniform lowp float u_`+It+`_t;
attribute `+pt+" "+Nt+" a_"+It+`;
varying `+pt+" "+Bt+" "+It+`;
#else
uniform `+pt+" "+Bt+" u_"+It+`;
#endif
`:Xt==="vec4"?`
#ifndef HAS_UNIFORM_u_`+It+`
    `+It+" = a_"+It+`;
#else
    `+pt+" "+Bt+" "+It+" = u_"+It+`;
#endif
`:`
#ifndef HAS_UNIFORM_u_`+It+`
    `+It+" = unpack_mix_"+Xt+"(a_"+It+", u_"+It+`_t);
#else
    `+pt+" "+Bt+" "+It+" = u_"+It+`;
#endif
`:Qe==="define"?`
#ifndef HAS_UNIFORM_u_`+It+`
uniform lowp float u_`+It+`_t;
attribute `+pt+" "+Nt+" a_"+It+`;
#else
uniform `+pt+" "+Bt+" u_"+It+`;
#endif
`:Xt==="vec4"?`
#ifndef HAS_UNIFORM_u_`+It+`
    `+pt+" "+Bt+" "+It+" = a_"+It+`;
#else
    `+pt+" "+Bt+" "+It+" = u_"+It+`;
#endif
`:`
#ifndef HAS_UNIFORM_u_`+It+`
    `+pt+" "+Bt+" "+It+" = unpack_mix_"+Xt+"(a_"+


e) {
      return eventKeyCode;
    }
    if (result == null) {
      if ((eventCode ?? '').isEmpty && (eventKey ?? '').isEmpty) {
        return null;
      }
      final int? heuristicResult = heuristicMapper(eventCode ?? '', eventKey ?? '');
      if (heuristicResult != null) {
        return heuristicResult;
      }
      // Characters: map to unicode zone.
      //
      // While characters are usually resolved in the last step, this can happen
      // in non-latin layouts when a non-latin character is on a symbol key (ru,
      // Semicolon-ж) or on an alnum key that has been assigned elsewhere (hu,
      // Digit0-Ö).
      final int? characterLogicalKey = _characterToLogicalKey(eventKey);
      if (characterLogicalKey != null) {
        return characterLogicalKey;
      }
    }
    return result;
  }

  final Map<String, Map<String, int>> _mapping;
}
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

class TexturePage extends StatefulWidget {
  const TexturePage({super.key});

  @override
  State<TexturePage> createState() => _TexturePageState();
}

class _TexturePageState extends State<TexturePage> {
  static const int textureWidth = 300;
  static const int textureHeight = 300;
  static const MethodChannel channel = MethodChannel('samples.flutter.io/texture');
  final Future<int?> textureId = channel.invokeMethod('create', <int>[textureWidth, textureHeight]);

  // Set the color of the texture.
  Future<void> setColor(int r, int g, int b) async {
    await channel.invokeMethod('setColor', <int>[r, g, b]);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: const Text('Texture Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          spacing: 10,
          children: <Widget>[
            FutureBuilder<int?>(
              future: textureId,
              builder: (BuildContext context, AsyncSnapshot<int?> snapshot) {
                if (!snapshot.hasData) {
                  return const Text('Creating texture...');
                }

                if (snapshot.data == null) {
                  return const Text('Error creating texture');
                }

                return SizedBox(
                  width: textureWidth.toDouble(),
                  height: textureHeight.toDouble(),
                  child: Texture(textureId: snapshot.data!),
                );
              },
            ),
            OutlinedButton(
              child: const Text('Flutter Navy'),
              onPressed: () => setColor(0x04, 0x2b, 0x59),
            ),
            OutlinedButton(
              child: const Text('Flutter Blue'),
              onPressed: () => setColor(0x05, 0x53, 0xb1),
            ),
            OutlinedButton(
              child: const Text('Flutter Sky'),
              onPressed: () => setColor(0x02, 0x7d, 0xfd),
            ),
            OutlinedButton(child: const Text('Red'), onPressed: () => setColor(0xf2, 0x5d, 0x50)),
            OutlinedButton(
              child: const Text('Yellow'),
              onPressed: () => setColor(0xff, 0xf2, 0x75),
            ),
            OutlinedButton(
              child: const Text


e release claimReward

    INITIALIZED.save(deps.storage, &true)?;
    OPERATOR.save(deps.storage, &info.sender)?;

    Ok(Response::new()
        .add_attribute("action", "initialize"))
}
pub fn try_setoperator(
    deps: DepsMut,
    info: MessageInfo,
    operator: Addr,
)
    -> Result<Response, ContractError>
{
    check_onlyoperator(deps.storage, info.sender)?;

    OPERATOR.save(deps.storage, &operator)?;
    Ok(Response::new()
        .add_attribute("action", "set operator"))
}

pub fn try_setlockup(
    deps: DepsMut,
    env: Env,
    info: MessageInfo,
    withdraw_lockup_epochs: Uint128,
    reward_lockup_epochs: Uint128
)
    -> Result<Response, ContractError>
{
    check_onlyoperator(deps.storage, info.sender)?;

    if withdraw_lockup_epochs < reward_lockup_epochs || withdraw_lockup_epochs > Uint128::from(56u128) {
        return Err(ContractError::OutofRange{});
    }
    WITHDRAW_LOCKUP_EPOCHS.save(deps.storage, &withdraw_lockup_epochs)?;
    REWARD_LOCKUP_EPOCHS.save(deps.storage, &reward_lockup_epochs)?;

    Ok(Response::new()
        .add_attribute("action", "set lock up"))
}

pub fn _stake(
    storage: &mut dyn Storage,
    querier: &QuerierWrapper,
    env: Env,
    sender: Addr,
    amount: Uint128
)
    -> StdResult<CosmosMsg>
{
    let mut total_supply = TOTALSUPPLY.load(storage)?;
    total_supply += amount;
    TOTALSUPPLY.save(storage, &total_supply)?;

    let mut balance = BALANCES.load(storage, sender.clone())?;
    balance += amount;
    BALANCES.save(storage, sender.clone(), &balance)?;

    safe_share_transferfrom(storage, querier, sender, env.contract.address, amount)
}

pub fn _withdraw(
    storage: &mut dyn Storage,
    querier: &QuerierWrapper,
    env: Env,
    sender: Addr,
    amount: Uint128
)
    -> StdResult<CosmosMsg>
{
    let mut mason_share = BALANCES.load(storage, sender.clone())?;
    if mason_share < amount {
        return Err(StdError::GenericErr {
            msg: "Masonry: withdraw request greater than staked amount".to_string()
        })
    }

    let mut total_supply = TOTALSUPPLY.load(storage)?;
    total_supply -= amount;
    TOTALSUPPLY.save(storage, &total_supply)?;

    mason_share -= amount;
    BALANCES.save(storage, sender.clone(), &mason_share)?;

    safe_share_transferfrom(storage, querier, env.contract.address,sender,  amount)
}

pub fn try_stake(
    deps: DepsMut,
    env: Env,
    info: MessageInfo,
    amount: Uint128
)
    ->Result<Response, ContractError>
{
    let sender = info.sender;
    check_onlyoneblock(deps.storage, Uint128::from(env.block.height as u128), sender.clone())?;
    update_reward(deps.storage, sender.clone())?;

    if amount <= Uint128::zero() {
        return Err(ContractError::ZeroStake{ })
    }
    let msg = _stake(deps.storage, &deps.querier, env, sender.clone(), amount)?;
    let epoch: Uint128 = deps.querier.query_wasm_smart(
        TREAS


ndedAt, widget.region);
    }
    rows.add(
      CustomTableRow.fromChildren(
        children: [
          _EventTime(
            startTime: startTime,
            endTime: endTime,
            shownRegions: {Region.jp, db.curUser.region, widget.region},
            format: (v) => v?.sec2date().toStringShort(omitSec: true) ?? '?',
          ),
        ],
      ),
    );

    if (event.id < 0) {
      rows.add(
        CustomTableRow.fromChildren(
          children: [Text('* Campaign info from Mooncell wiki *', style: Theme.of(context).textTheme.bodySmall)],
        ),
      );
    }

    children.add(CustomTable(selectable: true, children: rows));
    if (event.type == EventType.questCampaign) {
      children.add(SFooter(S.current.ap_campaign_time_mismatch_hint));
    }

    List<Widget> warTiles = [];
    for (final warId in event.warIds) {
      warTiles.add(
        LayoutBuilder(
          builder: (context, constraints) {
            final war = db.gameData.wars[warId];
            String title = war == null ? 'War $warId' : war.lLongName.l.setMaxLines(1);
            final height = min(constraints.maxWidth / 2, 164.0) / 142 * 354;
            return ListTile(
              leading: war?.shownBanner == null ? null : db.getIconImage(war?.shownBanner, height: height),
              horizontalTitleGap: 8,
              title: Text(
                title,
                maxLines: 2,
                textScaler: const TextScaler.linear(0.8),
                overflow: TextOverflow.ellipsis,
              ),
              onTap: () {
                router.push(url: Routes.warI(warId));
              },
            );
          },
        ),
      );
    }

    // extra quests not in wars
    Set<int> warQuestIds = {};
    for (final warId in event.warIds) {
      warQuestIds.addAll(db.gameData.wars[warId]?.quests.map((e) => e.id) ?? {});
    }
    if (warTiles.isNotEmpty) {
      children.add(TileGroup(header: S.current.war, children: warTiles));
    }
    // quests
    final originEventQuestIds = db.gameData.others.eventQuestGroups[event.id] ?? [];
    Set<int> extraQuestIds = originEventQuestIds.toSet().difference(warQuestIds);
    if (event.isAdvancedQuestEvent) {
      final advancedQuests = db.gameData.wars[WarId.advanced]?.quests.where((q) => q.openedAt == event.startedAt) ?? [];
      // advanced 1 contains all quests
      extraQuestIds.removeWhere((e) => db.gameData.quests[e]?.warId == WarId.advanced);
      extraQuestIds.addAll(advancedQuests.map((e) => e.id));
    }
    final extraQuests = extraQuestIds.map((e) => db.gameData.quests[e]).whereType<Quest>().toList();

    if (extraQuests.isNotEmpty) {
      children.add(addQuestCategoryTile(context: context, event: event, extraQuests: extraQuests));
    }

    final subEvents = ConstData.subEvents[event.id] ?? [];
    if (subEvents.isNotEmpty) {
      List<Widget> subEventTiles = [];
      for (final subEventId in subEvents) {
        subEventTiles.add(
          LayoutBuilder(
            builder: (context, constraints) {
              final subEvent = db.gameData.events[subEventId];
              String title = subEvent == null ? '${S.current.event} $subEventId' : subEvent.lName.l;
              final height = min(constraints.maxWidth / 2, 164.0) / 142 * 354;
              final banner = subEvent?.extra.allBanners.firstOrNull ?? event.shopBanner;
              return ListTile


6c/assembly19.png)](https://youtu.be/yu75VkMaIyc)

- The bottom plate indicates the direction of the motor.
- The propellers that have a white/silver coating go on that respective motor with the similar coat.
- The unlocking and locking of the propeller is indicated on the propeller itself.
- Use the 4 propellers and insert them on the motors keeping the above 3 points in mind.

The following parts can be placed as per usual.

### GPS

**Screw-** Locknut M3 4 pcs | Screw M3\*10 4pcs

1. Assemble the GPS by following the video.

  [![Assembly20](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly20.png)](https://youtu.be/aiFxVJFjlos)

  This guide uses the GPS mount location suggested in Holybro’s guide.

2. Screw the GPS mount’s bottom end on the payload holder side using Locknut M3 & Screw M3\*10

  [![Assembly21](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly21.png)](https://youtu.be/uG5UKy3FrIc)

### Pixhawk 6C

- The wire from the PM02 goes to POWER1 in Pixhawk
- The telemetry goes to TELEM1
- The GPS to GPS1

[![Assembly22](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly22.png)](https://youtu.be/wFlr_I3jERQ)

### Companion Computer (Optional)

**Screw-** Socket Cap Screw M2.5_12 4pcs | Nylon Standoff M2.5_5 4pcs Locknut M2.5 4pcs

The X500 kit is provides space for a companion computer, such as Raspberry Pi or Jetson nano can be placed here [TBD].

- Insert 4 Socket Cap Screw M2.5\*12 and put the standoffs on the same.
- Now place the companion computer and assemble it using Locknut M2.5

### 카메라

- Cameras such as Intel Realsense depth/ tracking camera or Structure Core can be mounted using the Depth Camera Mount
- Simply insert the mount inside the 2 bars and use the screws according to the camera you’re using.

![payloads_x500v2](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/payloads_x500v2.png)

## Install/Configure PX4

:::tip
Full instructions for installing and configuring PX4 can be found in [Basic Configuration](../config/index.md).
:::

_QGroundControl_ is used to install the PX4 autopilot and configure/tune it for the X500 frame.
[Download and install](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/getting_started/download_and_install.html) _QGroundControl_ for your platform.

First update the firmware, airframe, and actuator mappings:

- [Firmware](../config/firmware.md)

- [Airframe](../config/airframe.md)

  You will need to select the _Holybro X500 V2_ airframe (**Quadrotor x > Holybro 500 V2**)

  ![QGroundControl - Select HolyBro 500 airframe](../../assets/airframes/multicopter/x5


      //       style = TextStyle(decoration: TextDecoration.underline);
      //       break;
      //     case BBcode.s:
      //       style = TextStyle(decoration: TextDecoration.lineThrough);
      //       break;
      //     case BBcode.url:
      //       style = TextStyle(fontWeight: FontWeight.w500);
      //       recognizer = TapGestureRecognizer()..onTap = () => launchUrlString(textToStyle);
      //       break;
      //     case BBcode.spoiler:
      //       if (!unSpoiledText.contains(textToStyle)) {
      //         style = TextStyle(backgroundColor: kColor().tertiary);
      //       }
      //       recognizer = TapGestureRecognizer()..onTap = () => _toggleTextSpoiler(textToStyle);
      //       break;
      //   }
      // } catch (e) {
      //   style = TextStyle(backgroundColor: kColor().tertiary);
      // }

      // Add span
      spans.add(
        TextSpan(
          text: textToStyle,
          style: style.copyWith(color: kColor().secondary),
          recognizer: recognizer,
        ),
      );
      lastIndex = match.end;
    }

    // Add any remaining text after the last match
    if (lastIndex < text.length) {
      spans.add(
        TextSpan(text: text.substring(lastIndex), style: TextStyle(color: kColor().tertiary)),
      );
    }

    return TextSpan(children: spans);
  }

  @override
  Widget build(BuildContext context) {
    return RichText(text: _formatDesc(widget.desc));
  }
}
// GENERATED CODE - DO NOT MODIFY BY HAND

part of 'api_service.dart';

// **************************************************************************
// RiverpodGenerator
// **************************************************************************

@ProviderFor(apiService)
const apiServiceProvider = ApiServiceProvider._();

final class ApiServiceProvider
    extends $FunctionalProvider<ApiService, ApiService, ApiService>
    with $Provider<ApiService> {
  const ApiServiceProvider._()
    : super(
        from: null,
        argument: null,
        retry: null,
        name: r'apiServiceProvider',
        isAutoDispose: true,
        dependencies: const <ProviderOrFamily>[dioProvider],
        $allTransitiveDependencies: const <ProviderOrFamily>[
          ApiServiceProvider.$allTransitiveDependencies0,
        ],
      );

  static const $allTransitiveDependencies0 = dioProvider;

  @override
  String debugGetCreateSourceHash() => _$apiServiceHash();

  @$internal
  @override
  $ProviderElement<ApiService> $createElement($ProviderPointer pointer) =>
      $ProviderElement(pointer);

  @override
  ApiService create(Ref ref) {
    return apiService(ref);
  }

  /// {@macro riverpod.override_with_value}
  Override overrideWithValue(ApiService value) {
    return $ProviderOverride(
      origin: this,
      providerOverride: $SyncValueProvider<ApiService>(value),
    );
  }
}

String _$apiServiceHash() => r'11aac02c40f0fb2aa9cab0650677bdf36d498767';

// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
// GENERATED CODE - DO NOT MODIFY BY HAND

part of 'shared_prefs.dart';

// **************************************************************************
// RiverpodGenerator
// **************************************************************************

@ProviderFor(sharedPref)
const sharedPrefProvider = SharedPref


2html1775"
  HREF="manual-node89.html">File Systems and I/O
 Up: Unix System Calls
 Previous: Times
     Contents
     Index

<ADDRESS>

2016-03-23
</ADDRESS>

            pagination.previous

            pagination.next

                Showing
                1
                to
                10
                of
                20
                results

                        <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
                            <path fill-rule="evenodd" d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" clip-rule="evenodd"></path>
                        </svg>

                    1

                    2

                <a href="#" rel="next" class="relative inline-flex items-center px-2 py-2 -ml-px text-sm font-medium te


n\nTags: Stählung, Schadensreduktion.",
			"esES": "Aumenta un {2/4/6/8/10/12/14/16/18/20}% la reducción de daño obtenida mientras tienes fortificación.\n\nTags: Fortificación, Reducción de daño.",
			"esMX": "Aumenta la reducción de daño obtenida un {2/4/6/8/10/12/14/16/18/20}% adicional mientras tienes fortificación.\n\nTags: Fortificar, Reducción de daño.",
			"frFR": "Augmente la réduction des dégâts obtenue de {2/4/6/8/10/12/14/16/18/20}% supplémentaires tant que vous bénéficiez d'une fortification.\n\nTags: Fortification, Réduction des dégâts.",
			"itIT": "La riduzione danni ottenuta mentre hai Fortificazione aumenta di un ulteriore {2/4/6/8/10/12/14/16/18/20}%.\n\nTags: Fortificazione, Riduzione danni.",
			"jaJP": "強化中のダメージ減少率がさらに{2/4/6/8/10/12/14/16/18/20}%増加する。\n\nTags: 強化, ダメージ減少.",
			"koKR": "보강 상태에서 얻는 피해 감소가 추가로 {2/4/6/8/10/12/14/16/18/20}% 증가합니다.\n\nTags: 보강, 피해 감소.",
			"plPL": "Redukcja obrażeń otrzymana w stanie umocnienia jest dodatkowo zwiększona o {2/4/6/8/10/12/14/16/18/20}%.\n\nTags: Umocnienie, Redukcja Obrażeń.",
			"ptBR": "Aumenta a redução de dano recebida enquanto tiver fortificação em mais {2/4/6/8/10/12/14/16/18/20}%.\n\nTags: Fortificação, Redução de Dano.",
			"ruRU": "Укрепление уменьшает получаемый урон еще на {2/4/6/8/10/12/14/16/18/20}%.\n\nTags: Укрепление, Уменьшение урона.",
			"trTR": "Güçlendirilmişken kazanılan Hasar Azaltmayı ilave {2/4/6/8/10/12/14/16/18/20}% artır.\n\nTags: Güçlendirme, Hasar Azaltma.",
			"zhCN": "当你被强固时, 伤害减免额外提高 {2/4/6/8/10/12/14/16/18/20}%。\n\nTags: 强固, 伤害减免.",
			"zhTW": "在強韌狀態下,你獲得的傷害減免效果額外提高 {2/4/6/8/10/12/14/16/18/20}%。\n\nTags: 強韌, 傷害減免."
},
		id: 126,
		maxPoints: 3,
		x: -158.837,
		y: 482.93
	},
	"Death Blow": {
		connections: [ "Weapon Mastery", "Enhanced Death Blow" ],
		description: `Cooldown: 15 seconds
Lucky Hit Chance: 50% (per hit)
Attempt a killing strike, dealing {120/132/144/156/168/180/192/204/216/228}% damage to enemies in front of you.

If this kills an enemy, its Cooldown is reset.

Tags: Weapon Mastery, Damage, Physical, Cooldown.`,
		nameLocalized: {
			"deDE": "Todesstoß",
			"esES": "Golpe mortal


;
}

static long fsidiv_round_rate(struct clk *clk, unsigned long rate)
{
	return clk_rate_div_range_round(clk, 1, 0xffff, rate);
}

static void fsidiv_disable(struct clk *clk)
{
	__raw_writel(0, clk->mapping->base);
}

static int fsidiv_enable(struct clk *clk)
{
	u32 value;

	value  = __raw_readl(clk->mapping->base) >> 16;
	if (value < 2)
		return 0;

	__raw_writel((value << 16) | 0x3, clk->mapping->base);

	return 0;
}

static int fsidiv_set_rate(struct clk *clk, unsigned long rate)
{
	int idx;

	idx = (clk->parent->rate / rate) & 0xffff;
	if (idx < 2)
		__raw_writel(0, clk->mapping->base);
	else
		__raw_writel(idx << 16, clk->mapping->base);

	return 0;
}

static struct sh_clk_ops fsidiv_clk_ops = {
	.recalc		= fsidiv_recalc,
	.round_rate	= fsidiv_round_rate,
	.set_rate	= fsidiv_set_rate,
	.enable		= fsidiv_enable,
	.disable	= fsidiv_disable,
};

int __init sh_clk_fsidiv_register(struct clk *clks, int nr)
{
	struct clk_mapping *map;
	int i;

	for (i = 0; i < nr; i++) {

		map = kzalloc(sizeof(struct clk_mapping), GFP_KERNEL);
		if (!map) {
			pr_err("%s: unable to alloc memory\n", __func__);
			return -ENOMEM;
		}

		/* clks[i].enable_reg came from SH_CLK_FSIDIV() */
		map->phys		= (phys_addr_t)clks[i].enable_reg;
		map->len		= 8;

		clks[i].enable_reg	= 0; /* remove .enable_reg */
		clks[i].ops		= &fsidiv_clk_ops;
		clks[i].mapping		= map;

		clk_register(&clks[i]);
	}

	return 0;
}


Logger) { s.Fatalw("foo") }, ""},
		{FatalLevel, func(s *SugaredLogger) { s.Fatalw("foo") }, "foo"},
		{DebugLevel, func(s *SugaredLogger) { s.Fatalw("foo") }, "foo"},
		{FatalLevel + 1, func(s *SugaredLogger) { s.Fatalln("foo") }, ""},
		{FatalLevel, func(s *SugaredLogger) { s.Fatalln("foo") }, "foo"},
		{DebugLevel, func(s *SugaredLogger) { s.Fatalln("foo") }, "foo"},
	}

	for _, tt := range tests {
		withSugar(t, tt.loggerLevel, nil, func(sugar *SugaredLogger, logs *observer.ObservedLogs) {
			stub := exit.WithStub(func() { tt.f(sugar) })
			assert.True(t, stub.Exited, "Expected all calls to fatal logger methods to exit process.")
			if tt.expectedMsg != "" {
				assert.Equal(t, []observer.LoggedEntry{{
					Context: []Field{},
					Entry:   zapcore.Entry{Message: tt.expectedMsg, Level: FatalLevel},
				}}, logs.AllUntimed(), "Unexpected log output.")
			} else {
				assert.Equal(t, 0, logs.Len(), "Didn't expect any log output.")
			}
		})
	}
}

func TestSugarAddCaller(t *testing.T) {
	tests := []struct {
		options []Option
		pat     string
	}{
		{opts(AddCaller()), `.+/sugar_test.go:[\d]+$`},
		{opts(AddCaller(), AddCallerSkip(1), AddCallerSkip(-1)), `.+/sugar_test.go:[\d]+$`},
		{opts(AddCaller(), AddCallerSkip(1)), `.+/common_test.go:[\d]+$`},
		{opts(AddCaller(), AddCallerSkip(1), AddCallerSkip(5)), `.+/src/runtime/.*:[\d]+$`},
	}
	for _, tt := range tests {
		withSugar(t, DebugLevel, tt.options, func(logger *SugaredLogger, logs *observer.ObservedLogs) {
			logger.Info("")
			output := logs.AllUntimed()
			assert.Equal(t, 1, len(output), "Unexpected number of logs written out.")
			assert.Regexp(
				t,
				tt.pat,
				output[0].Caller,
				"Expected to find package name and file name in output.",
			)
		})
	}
}

func TestSugarAddCallerFail(t *testing.T) {
	errBuf := &ztest.Buffer{}
	withSugar(t, DebugLevel, opts(AddCaller(), AddCallerSkip(1e3), ErrorOutput(errBuf)), func(log *SugaredLogger, logs *observer.ObservedLogs) {
		log.Info("Failure.")
		assert.Regexp(
			t,
			`Logger.check error: failed to get caller`,
			errBuf.String(),
			"Didn't find expected failure message.",
		)
		assert.Equal(
			t,
			logs.AllUntimed()[0].Message,
			"Failure.",
			"Expected original message to survive failures in runtime.Caller.")
	})
}

func TestSugarWithOptionsIncreaseLevel(t *testing.T) {
	withSugar(t, DebugLevel, nil, func(logger *SugaredLogger, logs *observer.ObservedLogs) {
		logger = logger.WithOptions(IncreaseLevel(WarnLevel))
		logger.Info("logger.Info")
		logger.Warn("logger.Warn")
		logger.Error("logger.Error")
		require.Equal(t, 2, logs.Len(), "expected only warn + error logs due to IncreaseLevel.")
		assert.Equal(
			t,
			logs.AllUntimed()[0].Message,
			"logger.Warn",
			"Expected first logged message to be warn level message",
		)
	})
}

func TestSugarLnWithOptionsIncreaseLevel(t *testing.T) {
	withSugar(t, DebugLevel, nil, func(logger *SugaredLogger, logs


256_sub(res_x, res_x, Hcub);

	add	r2,sp,#256
	add	r0,sp,#32
	bl	__ecp_nistz256_sub_morf	@ p256_sub(res_y, U2, res_x);

	add	r1,sp,#416
	add	r2,sp,#128
	add	r0,sp,#288
	bl	__ecp_nistz256_mul_mont	@ p256_mul_mont(S2, in1_y, Hcub);

	add	r1,sp,#352
	add	r2,sp,#32
	add	r0,sp,#32
	bl	__ecp_nistz256_mul_mont	@ p256_mul_mont(res_y, res_y, R);

	add	r2,sp,#288
	bl	__ecp_nistz256_sub_from	@ p256_sub(res_y, res_y, S2);

	ldr	r11,[sp,#32*15+4]	@ ~in1infty
	ldr	r12,[sp,#32*15+8]	@ ~in2infty
	add	r1,sp,#0
	add	r2,sp,#192
	and	r10,r11,r12		@ ~in1infty & ~in2infty
	mvn	r11,r11
	add	r3,sp,#96
	and	r11,r11,r12		@ in1infty & ~in2infty
	mvn	r12,r12			@ in2infty
	ldr	r0,[sp,#32*15]
	ldmia	r1!,{r4,r5}		@ res_x
	ldmia	r2!,{r6,r7}		@ in2_x
	ldmia	r3!,{r8,r9}		@ in1_x
	and	r4,r4,r10		@ ~in1infty & ~in2infty
	and	r5,r5,r10
	and	r6,r6,r11		@ in1infty & ~in2infty
	and	r7,r7,r11
	and	r8,r8,r12		@ in2infty
	and	r9,r9,r12
	orr	r4,r4,r6
	orr	r5,r5,r7
	orr	r4,r4,r8
	orr	r5,r5,r9
	stmia	r0!,{r4,r5}
	ldmia	r1!,{r4,r5}		@ res_x
	ldmia	r2!,{r6,r7}		@ in2_x
	ldmia	r3!,{r8,r9}		@ in1_x
	and	r4,r4,r10		@ ~in1infty & ~in2infty
	and	r5,r5,r10
	and	r6,r6,r11		@ in1infty & ~in2infty
	and	r7,r7,r11
	and	r8,r8,r12		@ in2infty
	and	r9,r9,r12
	orr	r4,r4,r6
	orr	r5,r5,r7
	orr	r4,r4,r8
	orr	r5,r5,r9
	stmia	r0!,{r4,r5}
	ldmia	r1!,{r4,r5}		@ res_x
	ldmia	r2!,{r6,r7}		@ in2_x
	ldmia	r3!,{r8,r9}		@ in1_x
	and	r4,r4,r10		@ ~in1infty & ~in2inft


? m = y.getMonth(lunarMonth);
    if (null == m) {
      throw 'wrong lunar year $lunarYear month $lunarMonth';
    }
    if (lunarDay < 1) {
      throw 'lunar day must bigger than 0';
    }
    int days = m.getDayCount();
    if (lunarDay > days) {
      throw 'only $days days in lunar year $lunarYear month $lunarMonth';
    }
    _year = lunarYear;
    _month = lunarMonth;
    _day = lunarDay;
    _hour = hour;
    _minute = minute;
    _second = second;
    Solar noon = Solar.fromJulianDay(m.getFirstJulianDay() + lunarDay - 1);
    _solar = Solar.fromYmdHms(
        noon.getYear(), noon.getMonth(), noon.getDay(), hour, minute, second);
    if (noon.getYear() != lunarYear) {
      y = LunarYear.fromYear(noon.getYear());
    }
    _compute(y);
  }

  Lunar.fromSolar(Solar solar) {
    LunarYear ly = LunarYear.fromYear(solar.getYear());
    for (LunarMonth m in ly.getMonths()) {
      int days = solar.subtract(Solar.fromJulianDay(m.getFirstJulianDay()));
      if (days < m.getDayCount()) {
        _year = m.getYear();
        _month = m.getMonth();
        _day = days + 1;
        break;
      }
    }
    _hour = solar.getHour();
    _minute = solar.getMinute();
    _second = solar.getSecond();
    _solar = solar;
    _compute(ly);
  }

  Lunar.fromDate(DateTime date) : this.fromSolar(Solar.fromDate(date));

  void _computeJieQi(LunarYear lunarYear) {
    List<double> julianDays = lunarYear.getJieQiJulianDays();
    for (int i = 0, j = JIE_QI_IN_USE.length; i < j; i++) {
      _jieQi[JIE_QI_IN_USE[i]] = Solar.fromJulianDay(julianDays[i]);
    }
  }

  void _computeYear() {
    //以正月初一开始
    int offset = _year - 4;
    _yearGanIndex = offset % 10;
    _yearZhiIndex = offset % 12;

    if (_yearGanIndex < 0) {
      _yearGanIndex += 10;
    }

    if (_yearZhiIndex < 0) {
      _yearZhiIndex += 12;
    }

    //以立春作为新一年的开始的干支纪年
    int g = _yearGanIndex;
    int z = _yearZhiIndex;

    //精确的干支纪年，以立春交接时刻为准
    int gExact = _yearGanIndex;
    int zExact = _yearZhiIndex;

    int solarYear = _solar!.getYear();
    String solarYmd = _solar!.toYmd();
    String solarYmdHms = _solar!.toYmdHms();

    //获取立春的阳历时刻
    Solar liChun = _jieQi['立春']!;
    if (liChun.getYear() != solarYear) {
      liChun = _jieQi['LI_CHUN']!;
    }
    String liChunYmd = liChun.toYmd();
    String liChunYmdHms = liChun.toYmdHms();

    //阳历和阴历年份相同代表正月初一及以后
    if (_year == solarYea


)
	 */
	@Override
	public void ignorableWhitespace(final char[] ch, final int start, final int length) throws SAXException {}

	/*
	 * (non-Javadoc)
	 *
	 * @see org.xml.sax.ContentHandler#processingInstruction(java.lang.String, java.lang.String)
	 */
	@Override
	public void processingInstruction(final String target, final String data) throws SAXException {}

	/*
	 * (non-Javadoc)
	 *
	 * @see org.xml.sax.ContentHandler#setDocumentLocator(org.xml.sax.Locator)
	 */
	@Override
	public void setDocumentLocator(final Locator locator) {}

	/*
	 * (non-Javadoc)
	 *
	 * @see org.xml.sax.ContentHandler#skippedEntity(java.lang.String)
	 */
	@Override
	public void skippedEntity(final String name) throws SAXException {}

	/*
	 * (non-Javadoc)
	 *
	 * @see org.xml.sax.ContentHandler#startDocument()
	 */
	@Override
	public void startDocument() throws SAXException {}

	/*
	 * (non-Javadoc)
	 *
	 * @see org.xml.sax.ContentHandler#startElement(java.lang.String, java.lang.String, java.lang.String,
	 * org.xml.sax.Attributes)
	 */
	@Override
	public void startElement(final String namespaceURI, final String localName, final String qName,
			final Attributes atts) throws SAXException {
		if (namespaceURI.equals(XMLNS_KABEJA_PARSER)) {
			if (localName.equals(ELEMENT_HANDLER)) {
				String clazz = atts.getValue(ATTRIBUTE_CLASS);

				try {
					// load the class and add to the currentHandlerManager
					Class c = this.getClass().getClassLoader().loadClass(clazz);
					handler = (Handler) c.newInstance();
					currentHandlerManager.addHandler(handler);
				} catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
					e.printStackTrace();
				}
			} else if (localName.equals(ELEMENT_HANDLERS)) {
				stack.add(currentHandlerManager);
				currentHandlerManager = (HandlerManager) handler;
			} else if (localName.equals(ELEMENT_PARSER)) {
				String clazz = atts.getValue(ATTRIBUTE_CLASS);

				try {
					// load the class and add to the currentHandlerManager
					Class c = this.getClass().getClassLoader().loadClass(clazz);
					this.parser = (Parser) c.newInstance();

					if (this.parser instanceof HandlerManager) {
						this.currentHandlerManager = (HandlerManager) this.parser;
					}

					this.stack = new Stack<>();
				} catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
					e.printStackTrace();
				}
			}
		}
	}

	/*
	 * (non-Javadoc)
	 *
	 * @see org.xml.sax.ContentHandler#startPrefixMapping(java.lang.String, java.lang.String)
	 */
	@Override
	public void startPrefixMapping(final String prefix, final String uri) throws SAXException {

	}

	/**
	 * Gets the parser.
	 *
	 * @return the parser
	 */
	public Parser getParser() { return parser; }

	/**
	 *
	 * @param in
	 *            the InputStream
	 * @return The DXFParser build from the XML description
	 */
	public static Parser buildFromStream(final InputStream in) {
		SAXParserBuilder builder = new SAXParserBuilder();

		try {
			XMLReader parser = XMLReaderFactory.createXMLReader();
			parser.setFeature("http://apache.org/xml/features/xinclude", true);
			parser.setContentHandler(builder);
			parser.parse(new InputSource(in));
		} catch (SAXException e) {
			System.err.println(e.getMessage());
		} catch (IOException ioe) {}

		return builder.getParser();
	}
}
/*
 * Created on Jun 28,


�析Kubeadm安装过程及错误排查_.mp4

 ┣━4-3 Kubernetes的架构和核心概念_.mp4

 ┣━4-2 为什么需要Kubernetes_[2].mp4

 ┣━4-8 安装配置worker node节点_.mp4

 ┣━4-4 Kubernetes部署方案_.mp4

 ┣━4-10 安装Dashboard_[2].mp4

 ┣━4-1 Kuberentes的起源和发展_[2].mp4

 ┣━4-5 安装基础软件_.mp4

 ┣━4-6 Master节点安装kubeadm_.mp4

 ┣━第10章 Kubernetes之容器镜像中心

 ┣━10-2 实战搭建私有镜像中心.mp4

 ┣━10-3 配置私有镜像中心.mp4

 ┣━10-4 配置私有镜像仓库.mp4

 ┣━10-1 如何使用公有镜像仓库.mp4

 ┣━10-5 推送镜像到私有镜像仓库.mp4

  # HBase+SpringBoot实战分布式文件存储

## 联系方式

客服微信号：itziyuan_xiaozhi

## 课程简介

下载链接：https://it.bcwex.shop/posts?id=1193

  ┣━mksz205 – HBase+SpringBoot实战分布式文件存储

 ┣━第5章 容灾与监控

 ┣━5-3 Hadoop JMX监控实战[2].mp4

 ┣━5-2 HBase监控简介[2].mp4

 ┣━5-1 HBase备份与恢复[2].mp4

 ┣━5-4 HBase JMX监控实战[2].mp4

 ┣━第15章 课程总结

 ┣━15-1 课程总结[2].mp4

 ┣━第1章 课程简介

 ┣━1-1 导学[2].mp4

 ┣━1-2 课程技术分析[2].mp4

 ┣━第13章 子模块-接口模块

 ┣━13-1 Hos服务登陆验证[2].mp4

 ┣━13-3 Hos服务用户及权限管理接口开发[2].mp4

 ┣━13-4 Hos服务文件管理接口开发[2].mp4

 ┣━13-2 Hos服务web权限配置类开发[2].mp4

 ┣━13-5 Hos服务API接口测试[2].mp4

 ┣━第4章 HBase进阶

 ┣━4-2 HBase优化策略二：常用优化策


 null | null | null | null | null'
		'dtdData=#D8D8D8 | null | null | null | null | null'
		'dtdSymbol=#BED6FF | null | null | null | null | null'
		'dtdComment=#C7DD0C | null | null | false | null | null'
}
IEclipsePreferences#org-eclipse-wst-html-ui {
	preferences:
		'doctypeExternalPubref=#FFFFFF | null | null | null | null | null'
		'tagBorder=#79ABFF | null | null | null | null | null'
		'declBoder=#FFFFFF | null | null | null | null | null'
		'doctypeExtrenalSysref=#FFFFFF | null | null | null | null | null'
		'tagName=#BED6FF | null | null | null | null | null'
		'commentText=#C7DD0C | null | null | false | null | null'
		'doctypeExternalId=#FFFFFF | null | null | null | null | null'
		'doctypeName=#FFFFFF | null | null | null | null | null'
		'tagAttributeValue=#FFC600 | null | null | null | null | null'
		'tagAttributeEquals=#D8D8D8 | null | null | null | null | null'
		'entityReference=#8DCBE2 | null | null | null | null | null'
		'commentBorder=#C7DD0C | null | null | false | null | null'
		'tagAttributeName=#BED6FF | null | null | null | null | null'
		'xmlContent=#D8D8D8 | null | null | null | null | null'
}
IEclipsePreferences#org-eclipse-wst-jsdt-ui {
	preferences:
		'CONTENT_ASSIST_BACKGROUND_COLOR=46,52,56'
		'CONTENT_ASSIST_FOREGROUND_COLOR=233,235,237'
		'content_assist_parameters_background=46,52,56'
		'content_assist_parameters_foreground=233,235,237'
		'content_assist_proposals_background=46,52,56'
		'content_assist_proposals_foreground=233,235,237'
		'java_bracket=216,216,216'
		'java_comment_task_tag=204,223,50'
		'java_default=216,216,216'
		'java_doc_default=204,223,50'
		'java_doc_keyword=217,229,119'
		'java_doc_link=217,229,119'
		'java_doc_tag=217,229,119'
		'java_keyword=141,203,226'
		'java_keyword_return=141,203,226'
		'java_multi_line_comment=199,221,12'
		'java_operator=216,216,216'
		'java_single_line_comment=199,221,12'
		'java_string=255,198,0'
		'semanticHighlighting.localVariable.bold=false'
		'semanticHighlighting.localVariable.color=121,171,255'
		'semanticHighlighting.localVariable.enabled=true'
		'semanticHighlighting.localVariable.italic=false'
		'semanticHighlighting.localVariable.strikethrough=false'
		'semanticHighlighting.localVariable.underline=false'
		'semanticHighlighting.localVariableDeclaration.bold=false'
		'semanticHighlighting.localVariableDeclaration.color=190,214,255'
		'semanticHighlighting.localVariableDeclaration.enabled=true'
		'semanticHighlighting.localVariableDeclaration.italic=false'
		'semanticHighlighting.localVariableDeclaration.strikethrough=false'
		'semanticHighlighting.localVariableDeclaration.underline=false'
		'semanticHighlighting.methodDeclarationName.bold=false'
		'semanticHighlighting.methodDeclarationName.color=190,214,255'
		'semanticHighlighting.methodDeclarationName.ena


B);

    return result;
  }

  List<String>? _isSpecialFunctionsLiteral(String formula, List<String> parts) {
    var functionName = parts[0].trim();

    var result = <String>[];
    var arguments = _separateArguments(formula);
    int? maxCommaCount;
    int minCommaCount = 0;
    switch (functionName) {
      case 'LOG':
        minCommaCount = 1;
        maxCommaCount = minCommaCount;
        break;
      case 'NTH':
        minCommaCount = 0;
        maxCommaCount = 2;
        break;
      case 'ROUND':
        minCommaCount = 0;
        maxCommaCount = 1;
        break;
      case 'NRT':
        maxCommaCount = null;
        break;
      case 'MIN':
      case 'MAX':
      case 'CS':
      case 'CSI':
        break;
      case 'AV':
      case 'LEN':
        maxCommaCount = null;
        break;
      default:
        maxCommaCount = minCommaCount;
    }
    minCommaCount = minCommaCount * 2 + 1;
    maxCommaCount = maxCommaCount == null ? null : maxCommaCount * 2 + 1;
    if (arguments.length < minCommaCount) return null;

    _parentFunctionName = functionName;
    for (var i = 0; i < arguments.length; i++) {
      if (maxCommaCount != null && i >= maxCommaCount) {
        var subresult = _paintSubFormula(arguments[i], 0);
        result.add(subresult.toUpperCase());
      } else if (arguments[i] == ',') {
        result.add(_wordFunction(functionName) ? Number : OFRB);
      } else {
        _operatorBevor = true;
        var subresult = _paintSubFormula(arguments[i], 0);
        result.add(subresult);
      }
    }
    _parentFunctionName = null;

    return result;
  }

  bool _wordFunction(String? functionName) {
    switch (functionName) {
      case 'BWW':
      case 'AV':
      case 'LEN':
        return true;
      default:
        return false;
    }
  }

  bool _numberFunction(String? functionName) {
    switch (functionName) {
      case 'MIN':
      case 'MAX':
      case 'CS':
      case 'CSI':
      case 'NTH':
        return true;
      default:
        return false;
    }
  }

  String _coloredSpecialFunctionsLiteral(String result, List<String>? parts) {
    if (parts != null) {
      for (var i = 0; i < parts.length; i++) {
        result = _replaceRange(result, _calcOffset(parts, count: i), null, parts[i]);
      }
    } else {
      result = _buildResultString(VariableError, result.length);
    }

    return result;
  }

  List<String>? _isFaculty(String formula) {
    RegExp regex = RegExp(r'^(\s*)(!)(\s*)');

    var match = regex.firstMatch(formula);
    if (match == null) return null;

    regex = RegExp(r'(\d)');
    var matchNumber = regex.firstMatch(this.formula);
    regex = RegExp(r'(' + _variablesRegEx + ')');
    var matchVariable = regex.firstMatch(this.formula);

    return (matchNumber == null || matchVariable == null) ? null : [match.group(0)!];
  }

  List<String>? _isLiteral(String formula) {
    RegExp regex = RegExp(r'^([({])');
    var match = regex.firstMatch(formula);

    if (match == null) return null;
    var result = _separateLiteral(formula.substring(match.start), match.group(1)!, _bracket[match.group(1)]!


Clone, Debug, Trace, Finalize, PartialEq)]
pub struct StatementList {
    #[cfg_attr(feature = "deser", serde(flatten))]
    items: Box<[Node]>,
    strict: bool,
}

impl StatementList {
    /// Gets the list of items.
    #[inline]
    pub fn items(&self) -> &[Node] {
        &self.items
    }

    /// Get the strict mode.
    #[inline]
    pub fn strict(&self) -> bool {
        self.strict
    }

    /// Set the strict mode.
    #[inline]
    pub fn set_strict(&mut self, strict: bool) {
        self.strict = strict;
    }

    /// Implements the display formatting with indentation.
    pub(in crate::syntax::ast::node) fn display(
        &self,
        f: &mut fmt::Formatter<'_>,
        indentation: usize,
    ) -> fmt::Result {
        // Print statements
        for node in self.items.iter() {
            // We rely on the node to add the correct indent.
            node.display(f, indentation)?;

            match node {
                Node::Block(_) | Node::If(_) | Node::Switch(_) | Node::WhileLoop(_) => {}
                _ => write!(f, ";")?,
            }
            writeln!(f)?;
        }
        Ok(())
    }

    pub fn lexically_declared_names(&self) -> HashSet<&str> {
        let mut set = HashSet::new();
        for stmt in self.items() {
            if let Node::LetDeclList(decl_list) | Node::ConstDeclList(decl_list) = stmt {
                for decl in decl_list.as_ref() {
                    // It is a Syntax Error if the LexicallyDeclaredNames of StatementList contains any duplicate entries.
                    // https://tc39.es/ecma262/#sec-block-static-semantics-early-errors
                    match decl {
                        Declaration::Identifier { ident, .. } => {
                            if !set.insert(ident.as_ref()) {
                                unreachable!("Redeclaration of {}", ident.as_ref());
                            }
                        }
                        Declaration::Pattern(p) => {
                            for ident in p.idents() {
                                if !set.insert(ident) {
                                    unreachable!("Redeclaration of {}", ident);
                                }
                            }
                        }
                    }
                }
            }
        }
        set
    }

    pub fn function_declared_names(&self) -> HashSet<&str> {
        let mut set = HashSet::new();
        for stmt in self.items() {
            if let Node::FunctionDecl(decl) = stmt {
                set.insert(decl.name());
            }
        }
        set
    }

    pub fn var_declared_names(&self) -> HashSet<&str> {
        let mut set = HashSet::new();
        for stmt in self.items() {
            if let Node::VarDeclList(decl_list) = stmt {
                for decl in decl_list.as_ref() {
                    match decl {
                        Declaration::Identifier { ident, .. } => {
                            set.insert(ident.as_ref());
                        }
                        Declaration::Pattern(p) => {
                            for ident in p.idents() {
                                set.insert(ident.as_ref());
                            }
                        }
                    }
                }
            }
        }
        set
    }
}

impl<T> From<T> for Sta


from typing import Callable
from stream_handler import IntervalSequenceFilter, SequenceEqualsFilter, \
    StreamHandler

def get_bracket_counter_func() -> Callable[[int], bool]:
    opened_bracket = 0

    def check_correct_amount(char: int) -> bool:
        nonlocal opened_bracket
        if char == ord('('):
            opened_bracket += 1
        elif char == ord(')'):
            opened_bracket -= 1
        return opened_bracket == 0

    return check_correct_amount

def prepare_c_file(filename: str, new_filename: str) -> None:
    start_code = (b"typedef void __builtin_va_list;\n"
                  b"typedef long long __uint128_t;\n")

    comment_filter = IntervalSequenceFilter(b'#', b'\n')

    attribute_filter = IntervalSequenceFilter(
        b'__attribute__', b')', get_bracket_counter_func()
    )

    asm_filter = IntervalSequenceFilter(
        b'__asm', b')', get_bracket_counter_func()
    )

    static_assert_filter = IntervalSequenceFilter(
        b'static_assert', b')', get_bracket_counter_func()
    )

    nonnull_filter = SequenceEqualsFilter(b'_Nonnull')
    inline_filter = SequenceEqualsFilter(b'__inline')
    extension_filter = SequenceEqualsFilter(b'__extension__')

    handler = StreamHandler()
    handler.set_filters(
        comment_filter,
        attribute_filter,
        asm_filter,
        static_assert_filter,
        nonnull_filter,
        inline_filter,
        extension_filter,
    )

    with open(filename, mode='rb') as old_file:
        with open(new_filename, mode='wb') as new_file:
            new_file.write(start_code)
            handler.handle_file(old_file, new_file)


.04427384, 0.17853211, `

## JITCPUTENSOR scales=(2 4 8 16 32 64 128 256 512 1024 2048)

`2.569e-5, 3.684e-5, 7.796e-5, 1.0698e-4, 2.5162e-4, 9.7882e-4, 0.00141071, 0.00766895, 0.01772045, 0.07882007, 0.1981806, `## 对大佬有帮助的话就给个Star吧！

##  工控常见协议

| 协议                | 通信 | 端口  |
| ------------------- | ---- | ----- |
| Siemens S7          | tcp  | 102   |
| Modbus              | tcp  | 502   |
| IEC 60870-5-104     | tcp  | 2404  |
| DNP3                | tcp  | 20000 |
| EtherNet/IP         | udp  | 44818 |
| BACnet              | udp  | 47808 |
| Tridium Niagara Fox | tcp  | 1911  |
| Crimson V3          | tcp  | 789   |
| OMRON FINS          | tcp  | 9600  |
| PCWorx              | tcp  | 1962  |
| ProConOs            | tcp  | 20547 |
| MELSEC-Q            | tcp  | 5007  |

## 工控协议识别

### Siemens S7

```
nmap -sS -Pn -n --min-hostgroup 1024 --min-parallelism 1024 -p 102 --script s7-info -iL 123.txt -oX 123.xml
超速度扫描：
-sS  SYN扫描,又称为半开放扫描，它不打开一个完全的TCP连接，执行得很快，效率高
-Pn  不对目标进行ping探测(不判断主机是否在线)(直接扫描端口)
-n   不反向解析IP地址到域名
–min-hostgroup 1024    最小分组设置为1024个IP地址，当IP太多时，nmap需要分组，然后串行扫描
–min-parallelism 1024  这个参数非常关键，为了充分利用系统和网络资源，我们将探针的数目限定最小为1024
```

![360截图16261006315874](assets/360截图16261006315874.png)

### Modbus

```
nmap -sS -Pn -p 502 --script modicon-info -iL 123.txt -oX 123.xml
```

![360截图162412289895122](assets/360截图162412289895122.png)

### IEC 60870-5-104

```
nmap -Pn -n -d --script iec-identify.nse  --script-args='iec-identify.timeout=500' -p 2404 <host>
超速度扫描：
nmap -Pn -n --min-hostgroup 1024 --min-parallelism 3000 -d --script iec-identify-2014.nse  --script-args='iec-identify.timeout=500' -p 2404 -iL 2404.txt -oX 2404.xml
```

![360截图16620607109125137](assets/360截图16620607109125137.png)

### DNP3

```
nmap --script dnp3-info -p 20000 <host>
超速度扫描：
nmap -Pn -n --min-hostgroup 1024 --min-parallelism 3000 --script dnp3-info.nse -p 20000 -iL 20000.txt -oX 20000.xml
```

![360截图16280721688569](assets/360截图16280721688569.png)

### EtherNet/IP

```
nmap --script enip-info -sU  -p 44818 <host>
超速度扫描：
nmap -Pn -n -sU --min


, -- [27701]
	"INSANITY_COST_LARGE", -- [27702]
	"INSANITY_COST_LARGE_PER_TIME", -- [27703]
	"INSANITY_COST_LARGE_PER_TIME_NO_BASE", -- [27704]
	"INSANITY_COST_PER_TIME", -- [27705]
	"INSANITY_COST_PER_TIME_NO_BASE", -- [27706]
	"INSANITY_POWER", -- [27707]
	"INSCRIPTION", -- [27708]
	"INSPECT", -- [27709]
	"INSPECT_GUILD_FACTION", -- [27710]
	"INSPECT_GUILD_LEVEL", -- [27711]
	"INSPECT_GUILD_NUM_MEMBERS", -- [27712]
	"INSPECT_HONORABLE_KILLS", -- [27713]
	"INSPECT_NOTIFY", -- [27714]
	"INSPECT_REQUIREMENTS", -- [27715]
	"INSPECT_TALENTS_BUTTON", -- [27716]
	"INSTANCE", -- [27717]
	"INSTANCE_BOOT_TIMER", -- [27718]
	"INSTANCE_CHAT", -- [27719]
	"INSTANCE_CHAT_LEADER", -- [27720]
	"INSTANCE_CHAT_MESSAGE", -- [27721]
	"INSTANCE_DIFFICULTY_FORMAT", -- [27722]
	"INSTANCE_ID", -- [27723]
	"INSTANCE_LEAVE", -- [27724]
	"INSTANCE_LOCK_LINK_COLOR", -- [27725]
	"INSTANCE_LOCK_LINK_COLOR_CODE", -- [27726]
	"INSTANCE_LOCK_SEPARATOR", -- [27727]
	"INSTANCE_LOCK_SS", -- [27728]
	"INSTANCE_LOCK_TIMER", -- [27729]
	"INSTANCE_LOCK_TIMER_PREVIOUSLY_SAVED", -- [27730]
	"INSTANCE_LOCK_WARNING", -- [27731]
	"INSTANCE_LOCK_WARNING_PREVIOUSLY_SAVED", -- [27732]
	"INSTANCE_PARTY_LEAVE", -- [27733]
	"INSTANCE_RESET_FAILED", -- [27734]
	"INSTANCE_RESET_FAILED_OFFLINE", -- [27735]
	"INSTANCE_RESET_FAILED_ZONING", -- [27736]
	"INSTANCE_RESET_SUCCESS", -- [27737]
	"INSTANCE_ROLE_WARNING_TEXT", -- [27738]
	"INSTANCE_ROLE_WARNING_TITLE", -- [27739]
	"INSTANCE_SAVED", -- [27740]
	"INSTANCE_SHUTDOWN_MESSAGE", -- [27741]
	"INSTANCE_TYPE_ARENA", -- [27742]
	"INSTANCE_TYPE_BG", -- [27743]
	"INSTANCE_TYPE_DUNGEON", -- [27744]
	"INSTANCE_TYPE_RAID", -- [27745]
	"INSTANCE_UNAVAILABLE_OTHER_ACHIEVEMENT_NOT_COMPLETED", -- [27746]
	"INSTANCE_UNAVAILABLE_OTHER_AREA_NOT_EXPLORED", -- [27747]
	"INSTANCE_UNAVAILABLE_OTHER_CANNOT_RUN_ANY_CHILD_DUNGEON", -- [27748]
	"INSTANCE_UNAVAILABLE_OTHER_ENGAGED_IN_PVP", -- [27749]
	"INSTANCE_UNAVAILABLE_OTHER_EXPANSION_TOO_LOW", -- [27750]
	"INSTANCE_UNAVAILABLE_OTHER_GEAR_TOO_HIGH", -- [27751]
	"INSTANCE_UNAVAILABLE_OTHER_GEAR_TOO_LOW", -- [


# coding: utf-8
# /*##########################################################################
#
# Copyright (C) 2016-2018 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR 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.
#
# ###########################################################################*/

__authors__ = ["V. Valls"]
__license__ = "MIT"
__date__ = "16/10/2020"

import logging
import sys

from silx.gui import qt

_logger = logging.getLogger(__name__)

def exception(parent, title, exc_info, logger=None):
    """
    Display an exception as a MessageBox

    :param str title: A context message (displayed a s a title)
    :param qt.QWidget parent: The parent widget
    :param Union[tuple,Exception] exc_info: An exception or the output of
        exc_info.
    :param object logger: Logger to record the error inside. If `None` a
        default logger is provided.
    """
    if logger is None:
        logger = _logger

    logger.error(title, exc_info=True)

    if isinstance(exc_info, BaseException):
        exc_info = (type(exc_info), exc_info, exc_info.__traceback__)
    elif not isinstance(exc_info, tuple):
        exc_info = sys.exc_info()

    if exc_info[2] is not None:
        # Mimic the syntax of the default Python exception
        import traceback
        detailed = (''.join(traceback.format_tb(exc_info[2])))
        detailed = '{1}\nTraceback (most recent call last):\n{2}{0}: {1}'.format(exc_info[0].__name__, exc_info[1], detailed)
    else:
        # There is no backtrace
        detailed = '{0}: {1}'.format(exc_info[0].__name__, exc_info[1])

    msg = qt.QMessageBox(parent=parent)
    msg.setWindowTitle(title)
    msg.setIcon(qt.QMessageBox.Critical)
    msg.setInformativeText("%s" % exc_info[1])
    msg.setDetailedText(detailed)

    msg.raise_()
    msg.exec_()


com/repos/yongyiduan/webhook-test/git/tags{/sha}
//    @JsonProperty("git_url")
    val gitUrl: String, // git://github.com/yongyiduan/webhook-test.git
    @JsonProperty("has_downloads")
    val hasDownloads: Boolean, // true
    @JsonProperty("has_issues")
    val hasIssues: Boolean, // true
    @JsonProperty("has_pages")
    val hasPages: Boolean, // false
    @JsonProperty("has_projects")
    val hasProjects: Boolean, // true
    @JsonProperty("has_wiki")
    val hasWiki: Boolean, // true
    @JsonProperty("homepage")
    val homepage: String?, // null
//    @JsonProperty("hooks_url")
//    val hooksUrl: String, // https://api.github.com/repos/yongyiduan/webhook-test/hooks
    @JsonProperty("html_url")
    override val htmlUrl: String?, // https://github.com/yongyiduan/webhook-test
    @JsonProperty("id")
    override val id: Long, // 505743915
    @JsonProperty("is_template")
    val isTemplate: Boolean, // false
//    @JsonProperty("issue_comment_url")
//    val issueCommentUrl: String, // https://api.github.com/repos/yongyiduan/webhook-test/issues/comments{/number}
//    @JsonProperty("issue_events_url")
//    val issueEventsUrl: String, // https://api.github.com/repos/yongyiduan/webhook-test/issues/events{/number}
//    @JsonProperty("issues_url")
//    val issuesUrl: String, // https://api.github.com/repos/yongyiduan/webhook-test/issues{/number}
//    @JsonProperty("keys_url")
//    val keysUrl: String, // https://api.github.com/repos/yongyiduan/webhook-test/keys{/key_id}
//    @JsonProperty("labels_url")
//    val labelsUrl: String, // https://api.github.com/repos/yongyiduan/webhook-test/labels{/name}
    @JsonProperty("language")
    val language: String?, // null
    @JsonProperty("master_branch")
    val masterBranch: String?, // main
//    @JsonProperty("merges_url")
//    val mergesUrl: String, // https://api.github.com/repos/yongyiduan/webhook-test/merges
//    @JsonProperty("milestones_url")
//    val milestonesUrl: String, // https://api.github.com/repos/yongyiduan/webhook-test/milestones{/number}
//    @JsonProperty("mirror_url")
//    val mirrorUrl: String?, // null
    @JsonProperty("name")
    val name: String, // webhook-test
    @JsonProperty("node_id")
    override val nodeId: String, // R_kgDOHiUKKw
//    @JsonProperty("notifications_url")
//    val notificationsUrl: String, // https://api.github.com/repos/yongyiduan/webhook-test/notifications{?since,all,participating}
    @JsonProperty("open_issues")
    val openIssues: Int, // 0
    @JsonProperty("open_issues_count")
    val openIssuesCount: Int, // 0
    @JsonProperty("owner")
    val owner: GithubUser,
    @JsonProperty("private")
    val checkPrivate: Boolean, // false
//    @JsonProperty("pulls_url")
//    val pullsUrl: String, // https://api.github.com/repos/yongyiduan/webhook-test/pulls{/number}
    @JsonProperty("pushed_at")
    val pushedAt: Any, // 1655798261 or 2022-06-21T08:45:42Z github这两种类型都会传,难


STOGRAMS_PERCENTAGE(
            kIndex, uma_prefix_ + "UniqueNackRequestsReceivedInPercent",
            counters.UniqueNackRequestsInPercent());
      }
    }
  }

  if (first_rtp_stats_time_ms_ != -1) {
    int64_t elapsed_sec =
        (clock_->TimeInMilliseconds() - first_rtp_stats_time_ms_) / 1000;
    if (elapsed_sec >= metrics::kMinRunTimeInSeconds) {
      RTC_HISTOGRAMS_COUNTS_100(kIndex, uma_prefix_ + "NumberOfPauseEvents",
                                target_rate_updates_.pause_resume_events);
      log_stream << uma_prefix_ << "NumberOfPauseEvents "
                 << target_rate_updates_.pause_resume_events << "\n";

      int paused_time_percent =
          paused_time_counter_.Percent(metrics::kMinRunTimeInSeconds * 1000);
      if (paused_time_percent != -1) {
        RTC_HISTOGRAMS_PERCENTAGE(kIndex, uma_prefix_ + "PausedTimeInPercent",
                                  paused_time_percent);
        log_stream << uma_prefix_ << "PausedTimeInPercent "
                   << paused_time_percent << "\n";
      }
    }
  }

  if (fallback_info_.is_possible) {
    // Double interval since there is some time before fallback may occur.
    const int kMinRunTimeMs = 2 * metrics::kMinRunTimeInSeconds * 1000;
    int64_t elapsed_ms = fallback_info_.elapsed_ms;
    int fallback_time_percent = fallback_active_counter_.Percent(kMinRunTimeMs);
    if (fallback_time_percent != -1 && elapsed_ms >= kMinRunTimeMs) {
      RTC_HISTOGRAMS_PERCENTAGE(
          kIndex, uma_prefix_ + "Encoder.ForcedSwFallbackTimeInPercent.Vp8",
          fallback_time_percent);
      RTC_HISTOGRAMS_COUNTS_100(
          kIndex, uma_prefix_ + "Encoder.ForcedSwFallbackChangesPerMinute.Vp8",
          fallback_info_.on_off_events * 60 / (elapsed_ms / 1000));
    }
  }

  AggregatedStats total_bytes_per_sec = total_byte_counter_.GetStats();
  if (total_bytes_per_sec.num_samples > kMinRequiredPeriodicSamples) {
    RTC_HISTOGRAMS_COUNTS_10000(kIndex, uma_prefix_ + "BitrateSentInKbps",
                                total_bytes_per_sec.average * 8 / 1000);
    log_stream << uma_prefix_ << "BitrateSentInBps "
               << total_bytes_per_sec.ToStringWithMultiplier(8) << "\n";
  }
  AggregatedStats media_bytes_per_sec = media_byte_counter_.GetStats();
  if (media_bytes_per_sec.num_samples > kMinRequiredPeriodicSamples) {
    RTC_HISTOGRAMS_COUNTS_10000(kIndex, uma_prefix_ + "MediaBitrateSentInKbps",
                                media_bytes_per_sec.average * 8 / 1000);
    log_stream << uma_prefix_ << "MediaBitrateSentInBps "
               << media_bytes_per_sec.ToStringWithMultiplier(8) << "\n";
  }
  AggregatedStats padding_bytes_per_sec = padding_byte_counter_.GetStats();
  if (padding_bytes_per_sec.num_samples > kMinRequiredPeriodicSamples) {
    RTC_HISTOGRAMS_COUNTS_10000(kIndex,
                                uma_prefix_ + "PaddingBitrateSentInKbps",
                                padding_bytes_per_sec.average * 8 / 1000);
    log_stream << uma_prefix_ << "PaddingBitrateSentInBps "
               << padding_bytes_per_sec.ToStringWithMultiplier(8) << "\n";
  }
  AggregatedStats retransmit_bytes_per_sec =
      retransmit_byte_counter_.GetStats();
  if (retransmit_bytes_per_sec.num_samples > kMinRequiredPeriodicSamples) {
    RTC_HISTOGRAMS


/**
 *  Copyright (C) 2010-2024 The Catrobat Team
 *  (http://developer.catrobat.org/credits)
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU Affero General Public License as
 *  published by the Free Software Foundation, either version 3 of the
 *  License, or (at your option) any later version.
 *
 *  An additional term exception under section 7 of the GNU Affero
 *  General Public License, version 3, is available at
 *  (http://developer.catrobat.org/license_additional_term)
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 *  GNU Affero General Public License for more details.
 *
 *  You should have received a copy of the GNU Affero General Public License
 *  along with this program.  If not, see http://www.gnu.org/licenses/.
 */

@interface PlaceHolderView : UIView

- (id)initWithTitle:(NSString*)title;
@property (nonatomic, strong) NSString *title;

@property (strong, nonatomic) UIView *contentView;

@end


:0 27px;
}
.slick-list{
    margin:0 -27px;
}
.top-products .slider-btn{
    width: 30px;
    height:30px;
    border: none;
    background:var(--primary);
    border-radius:4px;
    -webkit-border-radius:4px;
    -moz-border-radius:4px;
    -ms-border-radius:4px;
    -o-border-radius:4px;
    cursor:pointer;
    outline:none;
}

.prev-btn{
    position:absolute;
    top:46%;
    left:-3rem;
    z-index: 1;
}
.next-btn{
    position:absolute;
    top:46%;
    right:-3rem;
    z-index: 1;
}
.top-products .slider{
    position: relative;
}
.top-products .btn-wrapper{
    margin-top:2rem;
}
/* fonts  */
@font-face {
    font-family:"Raleway-regular";
    src:url(../fonts/Raleway-Regular.ttf)
}
@font-face {
    font-family:"Raleway-medium";
    src:url(../fonts/Raleway-Medium.ttf)
}
@font-face {
    font-family:"Raleway-bold";
    src:url(../fonts/Raleway-Bold.ttf)
}
@font-face {
    font-family:"Raleway-extrabold";
    src:url(../fonts/Raleway-ExtraBold.ttf)
}
@font-face {
    font-family:"Raleway-semibold";
    src:url(../fonts/Raleway-SemiBold.ttf)
}
@font-face {
    font-family:"Raleway-black";
    src:url(../fonts/Raleway-Black.ttf)
}

/* colors  */

:root {
    --primary:#EEBF00;
    --secondary:#232B38;
    --ternary:#6C6C6C;
    --danger:#FE4545;
    --pure:#FEFEFE;
    --light:#F0F0F0;
    --heaven:#FFFFFF;
    --footer:#2D333F;
}

/* Reset  */
*{
    padding:0;
    margin:0;
    box-sizing: border-box;
}

body{
    -webkit-font-smoothing:antialiased;
    font-family: "Raleway-regular";
}
.container {
    width:100%;
    padding:0 15px;
    margin:0 auto;

}

@media (min-width:576px){
    .container{
        max-width:540px;
    }
}
@media (min-width: 768px) {
    .container {
      max-width: 720px;
    }
  }

  @media (min-width: 992px) {
    .container {
      max-width: 960px;
    }
  }

  @media (min-width: 1200px) {
    .container {
      max-width: 1152px;
    }
  }

.flex{
    display:flex;
  }
.justify-between{
    justify-content: space-between;
  }
.items-center{
      align-items: center;
  }
  nav .top{
      padding:1.5rem 0;
  }
  nav .top .contact h5,  nav .top .time h5{
      font-family:"Raleway-black";
      margin-bottom:0.25rem;
  }
  nav .top .contact h6, nav .top .time h6{
    font-family:"Raleway-medium";
    letter-spacing: 0.055rem;
    font-size:0.75rem;
    color:var(--ternary);
}
nav .top .contact img, nav .top .time img{
    margin-right:1rem;
}

.justify-center{
    justify-content:center;
}
nav .navbar a{
    text-decoration:none;


.setProperty('opacity', stopping_point_2);
    document
        .getElementById('stopping_point_3')
        .style
        .setProperty('opacity', stopping_point_3);
}
</script>

🛑 Interrupt

🛑 Interrupt

🛑 Interrupt

🚏 Stop

    <div id="stopping_point_2" style="
        position: relative;
        left: -105px;
        display: inline-flex;
        flex-direction: column;


SimpleName(simpleName: string): Multiname {
			let nameIndex = simpleName.lastIndexOf(".");
			if (nameIndex <= 0) {
				nameIndex = simpleName.lastIndexOf(" ");
			}

			let uri = '';
			let name;
			if (nameIndex > 0 && nameIndex < simpleName.length - 1) {
				name = simpleName.substring(nameIndex + 1).trim();
				uri = simpleName.substring(0, nameIndex).trim();
			} else {
				name = simpleName;
			}
			let ns = internNamespace(NamespaceType.Public, uri);
			return new Multiname(null, 0, CONSTANT.RTQName, [ns], name);
		}
	}

	// Native classes
}
import { reactive, toRefs, Ref, ref, watch, computed } from 'vue';
import { Dayjs } from 'dayjs';
import useTimeFormat from '../../time-picker/hooks/use-time-format';
import { getDayjsValue, getNow } from '../../_utils/date';
import { TimePickerProps, TimeValue } from '../../time-picker/interface';

interface TimePickerValueProps {
  timePickerProps: Partial<TimePickerProps> | undefined;
  selectedValue: Dayjs | undefined;
}
export default function useTimePickerValue(
  props: TimePickerValueProps
): [Ref<Dayjs>, (val: Dayjs | undefined) => void, () => void] {
  const { timePickerProps, selectedValue } = toRefs(props);

  const timePickerPropsFormat = computed(() => timePickerProps?.value?.format);
  const timePickerPropsUse12Hours = computed(
    () => !!timePickerProps?.value?.use12Hours
  );

  const { format } = useTimeFormat(
    reactive({
      format: timePickerPropsFormat,
      use12Hours: timePickerPropsUse12Hours,
    })
  );

  const defaultTimePickerValue = computed(() =>
    getDayjsValue(
      timePickerProps?.value?.defaultValue as TimeValue | undefined,
      format.value
    )
  );

  const getDefaultValue = () =>
    selectedValue?.value || defaultTimePickerValue.value || getNow();

  const timePickerValue = ref(getDefaultValue());

  function setTimePickerValue(val: Dayjs | undefined) {
    if (val) {
      timePickerValue.value = val;
    }
  }

  function resetTimePickerValue() {
    timePickerValue.value = getDefaultValue();
  }

  watch(selectedValue, (newVal) => {
    setTimePickerValue(newVal);
  });

  return [timePickerValue, setTimePickerValue, resetTimePickerValue];
}
import {Tree} from 'scenery/tree';
import {Treehouse} from 'scenery/treehouse';
import {Bridge} from 'scenery/bridge';
import {Manager} from 'stateengine/manager';

let house0 = new Treehouse(
  new Transform({
    position: new Vector3(24, 1, 24)
  }),
  [0, 1, 2, 4, 4, 3]
);

let test = new Bridge(new Vector3(24, 1, 20.536), new Vector3(24, 10, 0.3), 0);
/*
for (var i = 0; i < 20; i++) {
  let test = new Bridge(
    new Vector3(Math.random() * 72 + 4, Math.random() * 60, Math.random() * 40 + 4),
    new Vector3(Math.random() * 72 + 4, Math.random() * 60, Math.random() * 40 + 4),
    0
  );
}
*/

// Create our puzzles!
let manager = new Manager();

let treeLocations = [
  new Vector3(8,0, 3),
  new Vector3(17,0,28),
  new Vector3(40,0,16),
  new Vector3(78,0,18)
];

for (let x = 0; x < 5; x++) {
  for (let y = 0; y < 3; y++) {
    let size = Math.random() * 20 + 60;
    let tree = new Tree(new Transform({
      position: new Vector3(x * 16 + Math.random() * 8 + 4, 0, y * 16 + Math.random() * 8 +


MethodName     = "/github.com.openbao.go.kms.wrapping.plugin.v2.Wrapping/KeyId"
	Wrapping_SetConfig_FullMethodName = "/github.com.openbao.go.kms.wrapping.plugin.v2.Wrapping/SetConfig"
	Wrapping_Encrypt_FullMethodName   = "/github.com.openbao.go.kms.wrapping.plugin.v2.Wrapping/Encrypt"
	Wrapping_Decrypt_FullMethodName   = "/github.com.openbao.go.kms.wrapping.plugin.v2.Wrapping/Decrypt"
	Wrapping_Init_FullMethodName      = "/github.com.openbao.go.kms.wrapping.plugin.v2.Wrapping/Init"
	Wrapping_Finalize_FullMethodName  = "/github.com.openbao.go.kms.wrapping.plugin.v2.Wrapping/Finalize"
	Wrapping_HmacKeyId_FullMethodName = "/github.com.openbao.go.kms.wrapping.plugin.v2.Wrapping/HmacKeyId"
	Wrapping_KeyBytes_FullMethodName  = "/github.com.openbao.go.kms.wrapping.plugin.v2.Wrapping/KeyBytes"
)

// WrappingClient is the client API for Wrapping service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type WrappingClient interface {
	Type(ctx context.Context, in *TypeRequest, opts ...grpc.CallOption) (*TypeResponse, error)
	KeyId(ctx context.Context, in *KeyIdRequest, opts ...grpc.CallOption) (*KeyIdResponse, error)
	SetConfig(ctx context.Context, in *SetConfigRequest, opts ...grpc.CallOption) (*SetConfigResponse, error)
	Encrypt(ctx context.Context, in *EncryptRequest, opts ...grpc.CallOption) (*EncryptResponse, error)
	Decrypt(ctx context.Context, in *DecryptRequest, opts ...grpc.CallOption) (*DecryptResponse, error)
	// Init & finalize functions
	Init(ctx context.Context, in *InitRequest, opts ...grpc.CallOption) (*InitResponse, error)
	Finalize(ctx context.Context, in *FinalizeRequest, opts ...grpc.CallOption) (*FinalizeResponse, error)
	// HMAC related functions
	HmacKeyId(ctx context.Context, in *HmacKeyIdRequest, opts ...grpc.CallOption) (*HmacKeyIdResponse, error)
	// KeyBytes function
	KeyBytes(ctx context.Context, in *KeyBytesRequest, opts ...grpc.CallOption) (*KeyBytesResponse, error)
}

type wrappingClient struct {
	cc grpc.ClientConnInterface
}

func NewWrappingClient(cc grpc.ClientConnInterface) WrappingClient {
	return &wrappingClient{cc}
}

func (c *wrappingClient) Type(ctx context.Context, in *TypeRequest, opts ...grpc.CallOption) (*TypeResponse, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(TypeResponse)
	err := c.cc.Invoke(ctx, Wrapping_Type_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *wrappingClient) KeyId(ctx context.Context, in *KeyIdRequest, opts ...grpc.CallOption) (*KeyIdResponse, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(KeyIdResponse)
	err := c.cc.Invoke(ctx, Wrapping_KeyId_FullMethodName, in, out, cOpts...)


 ?Await]

---*/
var foo = 1;

try {
  await foo;
} catch(e) {
  await foo;
}

try {
  await foo;
} finally {
  await foo;
}

try {
  await foo;
} catch(e) {
  await foo;
} finally {
  await foo;
}

reportCompare(0, 0);
// |reftest| skip module -- top-level-await is not supported
// This file was procedurally generated from the following sources:
// - src/top-level-await/await-expr-array-literal.case
// - src/top-level-await/syntax/for-expr.template
/*---
description: AwaitExpression ArrayLiteral (Valid syntax for top level await in for statements.)
esid: prod-AwaitExpression
features: [top-level-await]
flags: [generated, module]
info: |
    ModuleItem:
      StatementListItem[~Yield, +Await, ~Return]

    ...

    IterationStatement[Yield, Await, Return]:
      ...
      for ( [ lookahead ≠ let [] Expression[~In, ?Yield, ?Await]opt ; Expression[+In, ?Yield, ?Await]opt ; Expression[+In, ?Yield, ?Await]opt ) Statement[?Yield, ?Await, ?Return]
      for ( var VariableDeclarationList[~In, ?Yield, ?Await] ; Expression[+In, ?Yield, ?Await]opt ; Expression[+In, ?Yield, ?Await]opt ) Statement[?Yield, ?Await, ?Return]
      for ( LexicalDeclaration[~In, ?Yield, ?Await] Expression[+In, ?Yield, ?Await]opt ; Expression[+In, ?Yield, ?Await]opt ) Statement[?Yield, ?Await, ?Return]
      for ( [lookahead ≠ let [] LeftHandSideExpression[?Yield, ?Await] in Expression[+In, ?Yield, ?Await] ) Statement[?Yield, ?Await, ?Return]
      for ( var ForBinding[?Yield, ?Await] in Expression[+In, ?Yield, ?Await] ) Statement[?Yield, ?Await, ?Return]
      for ( ForDeclaration[?Yield, ?Await] in Expression[+In, ?Yield, ?Await] ) Statement[?Yield, ?Await, ?Return]
      for ( [lookahead ≠ let] LeftHandSideExpression[?Yield, ?Await] of AssignmentExpression[+In, ?Yield, ?Await] ) Statement[?Yield, ?Await, ?Return]
      for ( var ForBinding[?Yield, ?Await] of AssignmentExpression[+In, ?Yield, ?Await] ) Statement[?Yield, ?Await, ?Return]
      for ( ForDeclaration[?Yield, ?Await] of AssignmentExpression[+In, ?Yield, ?Await] ) Statement[?Yield, ?Await, ?Return]
      ...

    ...

    UnaryExpression[Yield, Await]
      [+Await]AwaitExpression[?Yield]

    AwaitExpression[Yield]:
      await UnaryExpression[?Yield, +Await]

    ...

    PrimaryExpression[Yield, Await]:
      this
      IdentifierReference[?Yield, ?Await]
      Literal
      ArrayLiteral[?Yield, ?Await]
      ObjectLiteral[?Yield, ?Await]
      FunctionExpression
      ClassExpression[?Yield, ?Await]
      GeneratorExpression
      AsyncFunctionExpression
      AsyncGeneratorExpression
      RegularExpressionLiteral
      TemplateLiteral[?Yield, ?Await, ~Tagged]
      CoverParenthesizedExpressionAndArrowParameterList[?Yield, ?Await]

---*/

// for ( [ lookahead ≠ let [] Expression[~In, ?Yield, ?Await]opt ; Expression[+In, ?Yield, ?Await]opt ; Expression[+In, ?Yield, ?Await]opt ) Statement[?Yield, ?Await, ?Return]
for ( await [] ; await []; await [] ) {


tyType.nordicski"), //$NON-NLS-1$
			Messages.string("StravaActivityType.nordicski.description")), //$NON-NLS-1$
	/**
	 * Rock climbing
	 */
	ROCK_CLIMBING(StravaConfig.string("StravaActivityType.rockclimbing"), //$NON-NLS-1$
			Messages.string("StravaActivityType.rockclimbing.description")), //$NON-NLS-1$
	/**
	 * Rollerskiing
	 */
	ROLLERSKI(StravaConfig.string("StravaActivityType.rollerski"), //$NON-NLS-1$
			Messages.string("StravaActivityType.rollerski.description")), //$NON-NLS-1$
	/**
	 * Rowing
	 */
	ROWING(StravaConfig.string("StravaActivityType.rowing"), Messages.string("StravaActivityType.rowing.description")), //$NON-NLS-1$ //$NON-NLS-2$
	/**
	 * Snowboarding
	 */
	SNOWBOARD(StravaConfig.string("StravaActivityType.snowboard"), //$NON-NLS-1$
			Messages.string("StravaActivityType.snowboard.description")), //$NON-NLS-1$
	/**
	 * Snowshoeing
	 */
	SNOWSHOE(StravaConfig.string("StravaActivityType.snowshoe"), //$NON-NLS-1$
			Messages.string("StravaActivityType.snowshoe.description")), //$NON-NLS-1$
	/**
	 * Stair stepper
	 */
	STAIR_STEPPER(StravaConfig.string("StravaActivityType.stairstepper"), //$NON-NLS-1$
			Messages.string("StravaActivityType.stairstepper.description")), //$NON-NLS-1$
	/**
	 * Stand-up Paddling
	 */
	STAND_UP_PADDLING(StravaConfig.string("StravaActivityType.standuppaddling"), //$NON-NLS-1$
			Messages.string("StravaActivityType.standuppaddling.description")), //$NON-NLS-1$
	/**
	 * Surfing
	 */
	SURFING(StravaConfig.string("StravaActivityType.surfing"), //$NON-NLS-1$
			Messages.string("StravaActivityType.surfing.description")), //$NON-NLS-1$
	/**
	 * Virtual ride
	 */
	VIRTUAL_RIDE(StravaConfig.string("StravaActivityType.virtualride"), //$NON-NLS-1$
			Messages.string("StravaActivityType.virtualride.description")), //$NON-NLS-1$
	/**
	 * Weight training
	 */
	WEIGHT_TRAINING(StravaConfig.string("StravaActivityType.weighttraining"), //$NON-NLS-1$
			Messages.string("StravaActivityType.weighttraining.description")), //$NON-NLS-1$
	/**
	 * Windsurfing
	 */
	WINDSURF(StravaConfig.string("StravaActivityType.windsurf"), //$NON-NLS-1$
			Messages.string("StravaActivityType.windsurf.description")), //$NON-NLS-1$
	/**
	 * Workout
	 */
	WORKOUT(StravaConfig.string("StravaActivityType.workout"), //$NON-NLS-1$
			Messages.string("StravaActivityType.workout.description")), //$NON-NLS-1$
	/**
	 * Yoga
	 */
	YOGA(StravaConfig.string("StravaActivityType.yoga"), Messages.string("StravaActivityType.yoga.description")), //$NON-NLS-1$ //$NON-NLS-2$
	/**
	 * <p>
	 * Should never occur but may if Strava API behaviour has changed


.k-grid .k-grid-sm .k-edit-cell,.k-grid .k-grid-sm .k-command-cell,.k-grid .k-grid-sm .k-grid-edit-row td,.k-grid .k-grid-sm .k-grid-edit-row .k-table-td,.k-grid-sm .k-edit-cell,.k-grid-sm .k-command-cell,.k-grid-sm .k-grid-edit-row td,.k-grid-sm .k-grid-edit-row .k-table-td{padding-block:var(--kendo-spacing-1, 0.25rem);padding-inline:var(--kendo-spacing-1, 0.25rem)}.k-grid .k-grid-sm .k-filter-row td,.k-grid .k-grid-sm .k-filter-row .k-table-td,.k-grid .k-grid-sm .k-filter-row .k-table-th,.k-grid-sm .k-filter-row td,.k-grid-sm .k-filter-row .k-table-td,.k-grid-sm .k-filter-row .k-table-th{padding-block:var(--kendo-spacing-1\.5, 0.375rem);padding-inline:var(--kendo-spacing-1\.5, 0.375rem)}.k-grid .k-grid-sm .k-filtercell>span,.k-grid .k-grid-sm .k-filtercell .k-filtercell-wrapper,.k-grid-sm .k-filtercell>span,.k-grid-sm .k-filtercell .k-filtercell-wrapper{gap:calc(var(--kendo-spacing-1, 0.25rem)/2)}.k-grid .k-grid-sm .k-selection-aggregates,.k-grid-sm .k-selection-aggregates{padding-block:var(--kendo-spacing-1, 0.25rem);padding-inline:var(--kendo-spacing-1, 0.25rem)}.k-grid .k-grid-sm .k-resizer-wrap,.k-grid-sm .k-resizer-wrap{display:block;width:100%;padding-block-start:calc(var(--kendo-spacing-1, 0.25rem) - var(--kendo-spacing-0\.5, 0.125rem));padding-block-end:var(--kendo-spacing-1, 0.25rem);position:absolute;background:none;cursor:row-resize;z-index:2}.k-grid .k-grid-md .k-table-th,.k-grid-md .k-table-th{padding-block:var(--kendo-spacing-2, 0.5rem);padding-inline:var(--kendo-spacing-2, 0.5rem)}.k-grid .k-grid-md td,.k-grid .k-grid-md .k-table-td,.k-grid-md td,.k-grid-md .k-table-td{padding-block:var(--kendo-spacing-2, 0.5rem);padding-inline:var(--kendo-spacing-2, 0.5rem)}.k-grid .k-grid-md .k-grouping-header,.k-grid-md .k-grouping-header{padding-block:var(--kendo-spacing-2, 0.5rem);padding-inline:var(--kendo-spacing-2, 0.5rem);gap:var(--kendo-spacing-2, 0.5rem)}.k-grid .k-grid-md .k-grouping-header::before,.k-grid-md .k-grouping-header::before{margin-inline-start:calc(var(--kendo-spacing-2, 0.5rem)*-1)}.k-grid .k-grid-md .k-grid-header .k-table-th>.k-link,.k-grid-md .k-grid-header .k-table-th>.k-link{margin-block:calc(var(--kendo-spacing-2, 0.5rem)*-1);margin-inline:calc(var(--kendo-spacing-


 w & h  is less than 144x144 and IX renderer is preferred', function () {
      const bid = utils.deepClone(DEFAULT_VIDEO_VALID_BID[0]);
      bid.mediaTypes.video.context = 'outstream';
      bid.mediaTypes.video.playerSize = [[300, 250]];
      bid.mediaTypes.video.w = 300;
      bid.mediaTypes.video.h = 142;
      expect(spec.isBidRequestValid(bid)).to.equal(false);
      bid.mediaTypes.video.h = 300;
      bid.mediaTypes.video.w = 142;
      expect(spec.isBidRequestValid(bid)).to.equal(false);
    });

    it('should return true if outstream player size is less than 300x250 and IX renderer is not preferred', function () {
      const bid = utils.deepClone(DEFAULT_VIDEO_VALID_BID[0]);
      bid.mediaTypes.video.renderer = {
        url: 'test',
        render: () => { }
      };
      bid.mediaTypes.video.context = 'outstream';
      bid.mediaTypes.video.playerSize = [[300, 249]];
      expect(spec.isBidRequestValid(bid)).to.equal(true);
    });

    it('should return true when required params found for a banner, video or native ad', function () {
      expect(spec.isBidRequestValid(DEFAULT_BANNER_VALID_BID[0])).to.equal(true);
      expect(spec.isBidRequestValid(DEFAULT_VIDEO_VALID_BID[0])).to.equal(true);
      expect(spec.isBidRequestValid(DEFAULT_NATIVE_VALID_BID[0])).to.equal(true);
    });

    it('should return true when optional bidFloor params found for an ad', function () {
      const bid = utils.deepClone(DEFAULT_BANNER_VALID_BID[0]);
      bid.params.bidFloor = 50;
      bid.params.bidFloorCur = 'USD';
      expect(spec.isBidRequestValid(bid)).to.equal(true);
    });

    it('should return true when siteID is number', function () {
      const bid = utils.deepClone(DEFAULT_BANNER_VALID_BID[0]);
      bid.params.siteId = 123;
      expect(spec.isBidRequestValid(bid)).to.equal(true);
    });

    it('should return false when siteID is missing', function () {
      const bid = utils.deepClone(DEFAULT_BANNER_VALID_BID[0]);
      delete bid.params.siteId;
      expect(spec.isBidRequestValid(bid)).to.equal(false);
    });

    it('should return True when size is missing ', function () {
      const bid = utils.deepClone(DEFAULT_BANNER_VALID_BID[0]);
      delete bid.params.size;
      expect(spec.isBidRequestValid(bid)).to.equal(true);
    });

    it('should return false when size array is wrong length', function () {
      const bid = utils.deepClone(DEFAULT_BANNER_VALID_BID[0]);
      bid.params.size = [
        300,
        250,
        250
      ];
      expect(spec.isBidRequestValid(bid)).to.equal(false);
    });

    it('should return false when size array is array of strings', function () {
      const bid = utils.deepClone(DEFAULT_BANNER_VALID_BID[0]);
      bid.params.size = ['300', '250'];
      expect(spec.isBidRequestValid(bid)).to.equal(false);
    });

    it('should return false when mediaTypes.banner does not have sizes', function () {
      const bid = utils.deepClone(DEFAULT_BANNER_VALID_BID[0]);
      bid.mediaTypes = {
        banner: {
          size: [[300, 250]]
        }
      };
      expect(spec.isBidRequestValid(bid)).to.equal(false);
    });