//========================================================================
// GLFW 3.3 Win32 - www.glfw.org
//------------------------------------------------------------------------
// Copyright (c) 2002-2006 Marcus Geelnard
// Copyright (c) 2006-2017 Camilla Löwy <elmindreda@glfw.org>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
//    claim that you wrote the original software. If you use this software
//    in a product, an acknowledgment in the product documentation would
//    be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not
//    be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
//    distribution.
//
//========================================================================
// Please use C89 style variable declarations in this file because VS 2010
//========================================================================

#include "internal.h"

//////////////////////////////////////////////////////////////////////////
//////                       GLFW internal API                      //////
//////////////////////////////////////////////////////////////////////////

// Initialise timer
//
void _glfwInitTimerWin32(void)
{
    uint64_t frequency;

    if (QueryPerformanceFrequency((LARGE_INTEGER*) &frequency))
    {
        _glfw.timer.win32.hasPC = GLFW_TRUE;
        _glfw.timer.win32.frequency = frequency;
    }
    else
    {
        _glfw.timer.win32.hasPC = GLFW_FALSE;
        _glfw.timer.win32.frequency = 1000;
    }
}

//////////////////////////////////////////////////////////////////////////
//////                       GLFW platform API                      //////
//////////////////////////////////////////////////////////////////////////

uint64_t _glfwPlatformGetTimerValue(void)
{
    if (_glfw.timer.win32.hasPC)
    {
        uint64_t value;
        QueryPerformanceCounter((LARGE_INTEGER*) &value);
        return value;
    }
    else
        return (uint64_t) timeGetTime();
}

uint64_t _glfwPlatformGetTimerFrequency(void)
{
    return _glfw.timer.win32.frequency;
}


.73-2.07 0-3.63-1.67-3.63-3.73l.03-.36C5.21 7.51 4 10.62 4 14c0 4.42 3.58 8 8 8s8-3.58 8-8C20 8.61 17.41 3.8 13.5.67zM11.71 19c-1.78 0-3.22-1.4-3.22-3.14 0-1.62 1.05-2.76 2.81-3.12 1.77-.36 3.6-1.21 4.62-2.58.39 1.29.59 2.65.59 4.04 0 2.65-2.15 4.8-4.8 4.8z\"/>";
            public const string i_wheelchair_pickup = "<g><rect fill=\"none\" height=\"24\" width=\"24\" x=\"0\"/><path d=\"M4.5,4c0-1.11,0.89-2,2-2s2,0.89,2,2s-0.89,2-2,2S4.5,5.11,4.5,4z M10,10.95V9c0-1.1-0.9-2-2-2H5C3.9,7,3,7.9,3,9v6h2v7 h3.5v-0.11c-1.24-1.26-2-2.99-2-4.89C6.5,14.42,7.91,12.16,10,10.95z M16.5,17c0,1.65-1.35,3-3,3s-3-1.35-3-3 c0-1.11,0.61-2.06,1.5-2.58v-2.16C9.98,12.9,8.5,14.77,8.5,17c0,2.76,2.24,5,5,5s5-2.24,5-5H16.5z M19.54,14H15V8h-2v8h5.46 l2.47,3.71l1.66-1.11L19.54,14z\"/></g>";
            public const string i_where_to_vote = "<path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M12 2c3.86 0 7 3.14 7 7 0 5.25-7 13-7 13S5 14.25 5 9c0-3.86 3.14-7 7-7zm-1.53 12L17 7.41 15.6 6l-5.13 5.18L8.4 9.09 7 10.5l3.47 3.5z\"/>";
            public const string i_widgets = "<path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M13 13v8h8v-8h-8zM3 21h8v-8H3v8zM3 3v8h8V3H3zm13.66-1.31L11 7.34 16.66 13l5.66-5.66-5.66-5.65z\"/>";
            public const string i_width_full = "<g><rect fill=\"none\" height=\"24\" width=\"24\"/></g><g><path d=\"M20,4H4C2.9,4,2,4.9,2,6v12c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2V6C22,4.9,21.1,4,20,4z M4,6h1v12H4V6z M20,18h-1V6h1V18z\"/></g>";
            public const string i_width_normal = "<g><rect fill=\"none\" height=\"24\" width=\"24\"/></g><g><path d=\"M20,4H4C2.9,4,2,4.9,2,6v12c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9


ngleton::is_singleton(oop) {
        false
    } else {
        true
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_alloc() {
        unsafe {
            let heap_size = 0x10000;
            let mut gc = GcState::new(heap_size);
            let pair_info = infotable_for_pair();
            let fixnum_info = infotable_for_fixnum();

            let handle_block = HandleBlock::new();
            let mut fga = FullGcArgs::handle_only(&handle_block);

            // (In-order scavenging).
            let mut p1 = gc.alloc(&pair_info, &mut fga);
            let mut i1 = gc.alloc(&fixnum_info, &mut fga);
            let mut i2 = gc.alloc(&fixnum_info, &mut fga);

            i1.set_value(999);
            i2.set_value(888);
            p1.car = i1.as_oop();
            p1.cdr = i2.as_oop();

            let i1_loc = *i1.oop();
            let i2_loc = *i2.oop();
            let p1_loc = *p1.oop();
            gc.full_gc(0, &mut fga);
            assert_eq!(*i1.oop() - i1_loc, heap_size);
            assert_eq!(*i2.oop() - i2_loc, heap_size);
            assert_eq!(*p1.oop() - p1_loc, heap_size);
        }
    }
}
<filename>router2/src/namespace_cache/metrics.rs
//! Metric instrumentation for a [`NamespaceCache`] implementation.

use std::sync::Arc;

use data_types::DatabaseName;
use iox_catalog::interface::NamespaceSchema;
use metric::{Metric, U64Counter};

use super::NamespaceCache;

/// An [`InstrumentedCache`] decorates a [`NamespaceCache`] with cache read
/// hit/miss and cache put insert/update metrics.
#[derive(Debug)]
pub struct InstrumentedCache<T> {
    inner: T,

    /// A cache read hit
    get_hit_counter: U64Counter,
    /// A cache read miss
    get_miss_counter: U64Counter,

    /// A cache put for a namespace that did not previously exist.
    put_insert_counter: U64Counter,
    /// A cache put replacing a namespace that previously had a cache entry.
    put_update_counter: U64Counter,
}

impl<T> InstrumentedCache<T> {
    /// Instrument `T`, recording cache operations to `registry`.
    pub fn new(inner: T, registry: Arc<metric::Registry>) -> Self {
        let get_counter: Metric<U64Counter> =
            registry.register_metric("namespace_cache_get_count", "cache read requests");
        let get_hit_counter = get_counter.recorder(&[("result", "hit")]);
        let get_miss_counter = get_counter.recorder(&[("result", "miss")]);

        let put_counter: Metric<U64Counter> =
            registry.register_metric("namespace_cache_put_count", "cache put requests");
        let put_insert_counter = put_counter.recorder(&[("op", "insert")]);
        let put_update_counter = put_counter.recorder(&[("op", "update")]);

        Self {
            inner,
            get_hit_counter,
            get_miss_counter,
            put_insert_counter,
            put_update_counter,
        }
    }
}

impl<T> NamespaceCache for Arc<InstrumentedCache<T>>
where
    T: NamespaceCache,
{
    fn get_schema(&self, namespace: &DatabaseName<'_>) -> Option<Arc<NamespaceSchema>> {
        match self.inner.get_schema(namespace) {
            Some(v) => {
                self.get_hit_counter.inc(1);
                Some(v)
            }
            None => {
                self.get_miss_counter.inc(1);
                None


ction
; --
def rNR44 EQU $FF23
def rAUD4GO EQU rNR44 ; silly name!

;***************************************************************************
;*
;* Cart related
;*
;***************************************************************************

def CART_ROM                  EQU 0   ; ROM
def CART_ROM_MBC1             EQU 1   ; ROM+MBC1
def CART_ROM_MBC1_RAM         EQU 2   ; ROM+MBC1+RAM
def CART_ROM_MBC1_RAM_BAT     EQU 3   ; ROM+MBC1+RAM+BATTERY
def CART_ROM_MBC2             EQU 5   ; ROM+MBC2
def CART_ROM_MBC2_BAT         EQU 6   ; ROM+MBC2+BATTERY
def CART_ROM_RAM              EQU 8   ; ROM+RAM
def CART_ROM_RAM_BAT          EQU 9   ; ROM+RAM+BATTERY
def CART_ROM_MMM              EQU $b  ; ROM+MMM01
def CART_ROM_RAM_MMM          EQU $c  ; ROM+RAM+MMM01
def CART_ROM_RAM_MMM_BAT      EQU $d  ; ROM+RAM+MMM01+BATTERY
def CART_ROM_MBC3_TIM_BAT     EQU $f  ; ROM+MBC3+TIMER+BATTERY
def CART_ROM_MBC3_TIM_RAM_BAT EQU $10 ; ROM+MBC3+TIMER+RAM+BATTERY
def CART_ROM_MBC3             EQU $11 ; ROM+MBC3
def CART_ROM_MBC3_RAM         EQU $12 ; ROM+MBC3+RAM
def CART_ROM_MBC3_RAM_BAT     EQU $13 ; ROM+MBC3+RAM+BATTERY
def CART_ROM_MBC4             EQU $15 ; ROM+MBC4
def CART_ROM_MBC4_RAM         EQU $16 ; ROM+MBC4+RAM
def CART_ROM_MBC4_RAM_BAT     EQU $17 ; ROM+MBC4+RAM+BATTERY
def CART_ROM_MBC5             EQU $19 ; ROM+MBC5
def CART_ROM_MBC5_RAM         EQU $1a ; ROM+MBC5+RAM
def CART_ROM_MBC5_RAM_BAT     EQU $1b ; ROM+MBC5+RAM+BATTERY
def CART_ROM_MBC5_RUM         EQU $1c ; ROM+MBC5+RUMBLE
def CART_ROM_MBC5_RUM_RAM     EQU $1d ; ROM+MBC5+RUMBLE+RAM
def CART_ROM_MBC5_RUM_RAM_BAT EQU $1e ; ROM+MBC5+RUMBLE+RAM+BATTERY
def CART_CAMERA               EQU $fc ; Camera ROM
def CART_TAMA5                EQU $fd ; Bandai Tama 5
def CART_HuC3                 EQU $fe ; HuC3
def CART_HuC1_RAM_BAT         EQU $ff ; HuC1+RAM+BATTERY

def CART_ROM_256K  EQU 0
def CART_ROM_512K  EQU 1
def CART_ROM_1M    EQU 2
def CART_ROM_2M    EQU 3
def CART_ROM_4M    EQU 4
def CART_ROM_8M    EQU 5
def CART_ROM_16M   EQU 6

def CART_RAM_NONE  EQU 0
def CART_RAM_16K   EQU 1
def CART_RAM_64K   EQU 2
def CART_RAM_256K  EQU 3

def CART_RAM_ENABLE   EQU $0a
def CART_RAM_DISABLE  EQU $00

;***************************************************************************
;*
;* Keypad related
;*
;***************************************************************************


      } else if (deltaSeconds != -1L) {
        val deltaMilliseconds =
          if (deltaSeconds <= Long.MAX_VALUE / 1000) {
            deltaSeconds * 1000
          } else {
            Long.MAX_VALUE
          }
        expiresAt = currentTimeMillis + deltaMilliseconds
        if (expiresAt < currentTimeMillis || expiresAt > MAX_DATE) {
          expiresAt = MAX_DATE // Handle overflow & limit the date range.
        }
      }

      // If the domain is present, it must domain match. Otherwise we have a host-only cookie.
      val urlHost = url.host
      if (domain == null) {
        domain = urlHost
      } else if (!domainMatch(urlHost, domain)) {
        return null // No domain match? This is either incompetence or malice!
      }

      // If the domain is a suffix of the url host, it must not be a public suffix.
      if (urlHost.length != domain.length &&
        PublicSuffixDatabase.get().getEffectiveTldPlusOne(domain) == null
      ) {
        return null
      }

      // If the path is absent or didn't start with '/', use the default path. It's a string like
      // '/foo/bar' for a URL like 'http://example.com/foo/bar/baz'. It always starts with '/'.
      if (path == null || !path.startsWith("/")) {
        val encodedPath = url.encodedPath
        val lastSlash = encodedPath.lastIndexOf('/')
        path = if (lastSlash != 0) encodedPath.substring(0, lastSlash) else "/"
      }

      return Cookie(
        cookieName, cookieValue, expiresAt, domain, path, secureOnly, httpOnly,
        persistent, hostOnly, sameSite,
      )
    }

    /** Parse a date as specified in RFC 6265, section 5.1.1. */
    private fun parseExpires(
      s: String,
      pos: Int,
      limit: Int,
    ): Long {
      var pos = pos
      pos = dateCharacterOffset(s, pos, limit, false)

      var hour = -1
      var minute = -1
      var second = -1
      var dayOfMonth = -1
      var month = -1
      var year = -1
      val matcher = TIME_PATTERN.matcher(s)

      while (pos < limit) {
        val end = dateCharacterOffset(s, pos + 1, limit, true)
        matcher.region(pos, end)

        when {
          hour == -1 && matcher.usePattern(TIME_PATTERN).matches() -> {
            hour = matcher.group(1).toInt()
            minute = matcher.group(2).toInt()
            second = matcher.group(3).toInt()
          }
          dayOfMonth == -1 && matcher.usePattern(DAY_OF_MONTH_PATTERN).matches() -> {
            dayOfMonth = matcher.group(1).toInt()
          }
          month == -1 && matcher.usePattern(MONTH_PATTERN).matches() -> {
            val monthString = matcher.group(1).lowercase(Locale.US)
            month = MONTH_PATTERN.pattern().indexOf(monthString) / 4 // Sneaky! jan=1, dec=12.
          }
          year == -1 && matcher.usePattern(YEAR_PATTERN).matches() -> {
            year = matcher.group(1).toInt()
          }
        }

        pos = dateCharacterOffset(s, end + 1, limit, false)
      }

      // Convert two-digit years into four-digit years. 99 becomes 1999, 15 becomes 2015.
      if (year in 70..99) year += 1900
      if (year in 0..69) year += 2000

      // If any partial is omitted or out of range, return -1. The date is impossible. Note that leap
      // seconds are not supported by this syntax.
      require(year >= 1601)
      require(month != -1)
      require(dayOfMonth in 1..31)
      require(hour in 0..23)
      require(minute in 0..59)


esc string `mapstructure:"description,omitempty"`
}

func (e *ExptUpdateFields) ToFieldMap() (map[string]any, error) {
	m := make(map[string]any)
	if err := mapstructure.Decode(e, &m); err != nil {
		return nil, errorx.Wrapf(err, "ExptUpdateFields decode to map fail: %v", e)
	}
	return m, nil
}

type ExptCalculateStats struct {
	PendingItemCnt    int
	FailItemCnt       int
	SuccessItemCnt    int
	ProcessingItemCnt int
	TerminatedItemCnt int

	IncompleteTurnIDs []*ItemTurnID
}

type ItemTurnID struct {
	ItemID int64
	TurnID int64
}

type StatsCntArithOp struct {
	OpStatusCnt map[ItemRunState]int
}

type TupleExpt struct {
	Expt *Experiment
	*ExptTuple
}

type ExptTuple struct {
	Target     *EvalTarget
	EvalSet    *EvaluationSet
	Evaluators []*Evaluator
}

type ExptTupleID struct {
	VersionedTargetID   *VersionedTargetID
	VersionedEvalSetID  *VersionedEvalSetID
	EvaluatorVersionIDs []int64
}

type VersionedTargetID struct {
	TargetID  int64
	VersionID int64
}

type VersionedEvalSetID struct {
	EvalSetID int64
	VersionID int64
}

type CreateEvalTargetParam struct {
	SourceTargetID      *string
	SourceTargetVersion *string
	EvalTargetType      *EvalTargetType
	BotInfoType         *CozeBotInfoType
	BotPublishVersion   *string
}

func (c *CreateEvalTargetParam) IsNull() bool {
	return c == nil || (c.SourceTargetID == nil && c.SourceTargetVersion == nil)
}

type InvokeExptReq struct {
	ExptID  int64
	RunID   int64
	SpaceID int64
	Session *Session

	Items []*EvaluationSetItem

	Ext map[string]string
}
// Copyright (c) 2025 coze-dev Authors
// SPDX-License-Identifier: Apache-2.0

package repo

import (
	"context"

	"github.com/coze-dev/coze-loop/backend/modules/evaluation/domain/entity"
)

// IEvaluatorRepo 定义 Evaluator 的 Repo 接口
//
//go:generate mockgen -destination mocks/evaluator_mock.go -package mocks . IEvaluatorRepo
type IEvaluatorRepo interface {
	CreateEvaluator(ctx context.Context, evaluator *entity.Evaluator) (evaluatorID int64, err error)
	SubmitEvaluatorVersion(ctx context.Context, evaluatorVersionDO *entity.Evaluator) error

	BatchDeleteEvaluator(ctx context.Context, ids []int64, userID string) error

	UpdateEvaluatorDraft(ctx context.Context, version *entity.Evaluator) error
	UpdateEvaluatorMeta(ctx context.Context, id int64, name, description, userID string) error

	BatchGetEvaluatorMetaByID(ctx context.Context, ids []int64, includeDeleted bool) ([]*entity.Evaluator, error)
	BatchGetEvaluatorByVersionID(ctx context.Context, spaceID *int64, ids []int64, includeDeleted bool) ([]*entity.Evaluator, error)
	BatchGetEvaluatorDraftByEvaluatorID(ctx context.Context, spaceID int64, ids []int64, includeDeleted bool) ([]*entity.Evaluator, error)
	BatchGetEvaluatorVersionsByEvaluatorIDs(ctx context.Context, evaluatorIDs []int64, includeDeleted bool) ([]*entity.Evaluator, error)
	ListEvaluator(ctx context.Context, req *ListEvaluatorRequest) (*ListEvaluatorResponse, error)


OR =
			"SDL_VIDEO_WAYLAND_ALLOW_LIBDECOR";

		/* Only available in 2.0.18 or higher. */
		public const string SDL_HINT_VIDEO_EGL_ALLOW_TRANSPARENCY =
			"SDL_VIDEO_EGL_ALLOW_TRANSPARENCY";
		public const string SDL_HINT_APP_NAME =
			"SDL_APP_NAME";
		public const string SDL_HINT_SCREENSAVER_INHIBIT_ACTIVITY_NAME =
			"SDL_SCREENSAVER_INHIBIT_ACTIVITY_NAME";
		public const string SDL_HINT_IME_SHOW_UI =
			"SDL_IME_SHOW_UI";
		public const string SDL_HINT_WINDOW_NO_ACTIVATION_WHEN_SHOWN =
			"SDL_WINDOW_NO_ACTIVATION_WHEN_SHOWN";
		public const string SDL_HINT_POLL_SENTINEL =
			"SDL_POLL_SENTINEL";
		public const string SDL_HINT_JOYSTICK_DEVICE =
			"SDL_JOYSTICK_DEVICE";
		public const string SDL_HINT_LINUX_JOYSTICK_CLASSIC =
			"SDL_LINUX_JOYSTICK_CLASSIC";

		/* Only available in 2.0.20 or higher. */
		public const string SDL_HINT_RENDER_LINE_METHOD =
			"SDL_RENDER_LINE_METHOD";

		/* Only available in 2.0.22 or higher. */
		public const string SDL_HINT_FORCE_RAISEWINDOW =
			"SDL_HINT_FORCE_RAISEWINDOW";
		public const string SDL_HINT_IME_SUPPORT_EXTENDED_TEXT =
			"SDL_IME_SUPPORT_EXTENDED_TEXT";
		public const string SDL_HINT_JOYSTICK_GAMECUBE_RUMBLE_BRAKE =
			"SDL_JOYSTICK_GAMECUBE_RUMBLE_BRAKE";
		public const string SDL_HINT_JOYSTICK_ROG_CHAKRAM =
			"SDL_JOYSTICK_ROG_CHAKRAM";
		public const string SDL_HINT_MOUSE_RELATIVE_MODE_CENTER =
			"SDL_MOUSE_RELATIVE_MODE_CENTER";
		public const string SDL_HINT_MOUSE_AUTO_CAPTURE =
			"SDL_MOUSE_AUTO_CAPTURE";
		public const string SDL_HINT_VITA_TOUCH_MOUSE_DEVICE =
			"SDL_HINT_VITA_TOUCH_MOUSE_DEVICE";
		public const string SDL_HINT_VIDEO_WAYLAND_PREFER_LIBDECOR =
			"SDL_VIDEO_WAYLAND_PREFER_LIBDECOR";
		public const string SDL_HINT_VIDEO_FOREIGN_WINDOW_OPENGL =
			"SDL_VIDEO_FOREIGN_WINDOW_OPENGL";
		public const string SDL_HINT_VIDEO_FOREIGN_WINDOW_VULKAN =
			"SDL_VIDEO_FOREIGN_WINDOW_VULKAN";
		public const string SDL_HINT_X11_WINDOW_TYPE =
			"SDL_X11_WINDOW_TYPE";
		public const string SDL_HINT_QUIT_ON_LAST_WINDOW_CLOSE =
			"SDL_QUIT_ON_LAST_WINDOW_CLOSE";

		public enum SDL_HintPriority
		{
			SDL_HINT_DEFAULT,
			SDL_HINT_NORMAL,
			SDL_HINT_OVERRIDE
		}

		[DllImport(nativeLibName, CallingConvention = CallingConvention.Cdecl)]
		public static extern void SDL_ClearHints();

		[DllImport(nativeLibName, EntryPoint = "SDL_GetHint", CallingConvention = CallingConvention.Cdecl)]
		private static extern unsafe IntPtr INTERNAL_SDL_GetHint(byte* name);
		public static unsafe string SDL_GetHint(string name)
		{
			int utf8NameBufSize = Utf8Size(name);
			byte* utf8Name = stackalloc byte[utf8NameBufSize];
			return UTF8_ToManaged(
				INTERNAL_SDL_GetHint(
					Utf8Encode(name, utf8Name, utf8NameBufSize)
				)
			);
		}

		[DllImport(


fer(),
          promise = deferred.promise;

      count = isDefined(count) ? count : 0;

      promise.then(null, null, (!hasParams) ? fn : function() {
        fn.apply(null, args);
      });

      promise.$$intervalId = setInterval(function tick() {
        deferred.notify(iteration++);

        if (count > 0 && iteration >= count) {
          deferred.resolve(iteration);
          clearInterval(promise.$$intervalId);
          delete intervals[promise.$$intervalId];
        }

        if (!skipApply) $rootScope.$apply();

      }, delay);

      intervals[promise.$$intervalId] = deferred;

      return promise;
    }

     /**
      * @ngdoc method
      * @name $interval#cancel
      *
      * @description
      * Cancels a task associated with the `promise`.
      *
      * @param {promise} promise returned by the `$interval` function.
      * @returns {boolean} Returns `true` if the task was successfully canceled.
      */
    interval.cancel = function(promise) {
      if (promise && promise.$$intervalId in intervals) {
        intervals[promise.$$intervalId].reject('canceled');
        $window.clearInterval(promise.$$intervalId);
        delete intervals[promise.$$intervalId];
        return true;
      }
      return false;
    };

    return interval;
  }];
}

/**
 * @ngdoc service
 * @name $locale
 *
 * @description
 * $locale service provides localization rules for various Angular components. As of right now the
 * only public api is:
 *
 * * `id` – `{string}` – locale id formatted as `languageId-countryId` (e.g. `en-us`)
 */
function $LocaleProvider() {
  this.$get = function() {
    return {
      id: 'en-us',

      NUMBER_FORMATS: {
        DECIMAL_SEP: '.',
        GROUP_SEP: ',',
        PATTERNS: [
          { // Decimal Pattern
            minInt: 1,
            minFrac: 0,
            maxFrac: 3,
            posPre: '',
            posSuf: '',
            negPre: '-',
            negSuf: '',
            gSize: 3,
            lgSize: 3
          },{ //Currency Pattern
            minInt: 1,
            minFrac: 2,
            maxFrac: 2,
            posPre: '\u00A4',
            posSuf: '',
            negPre: '(\u00A4',
            negSuf: ')',
            gSize: 3,
            lgSize: 3
          }
        ],
        CURRENCY_SYM: '$'
      },

      DATETIME_FORMATS: {
        MONTH:
            'January,February,March,April,May,June,July,August,September,October,November,December'
            .split(','),
        SHORTMONTH:  'Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec'.split(','),
        DAY: 'Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday'.split(','),
        SHORTDAY: 'Sun,Mon,Tue,Wed,Thu,Fri,Sat'.split(','),
        AMPMS: ['AM','PM'],
        medium: 'MMM d, y h:mm:ss a',
        'short': 'M/d/yy h:mm a',
        fullDate: 'EEEE, MMMM d, y',
        longDate: 'MMMM d, y',
        mediumDate: 'MMM d, y',
        shortDate: 'M/d/yy',
        mediumTime: 'h:mm:ss a',
        shortTime: 'h:mm a',
        ERANAMES: [
          "Before Christ",
          "Anno Domini"
        ],
        ERAS: [
          "BC",
          "AD"
        ]
      },

      pluralCat: function(num) {
        if (num === 1) {
          return 'one';
        }
        return 'other';
      }
    };
  };
}

var PATH_MATCH = /^([^\?#]*)(\?([^#]*))?(#(.*))?$/,
    DEFAULT_PORTS = {'http': 80, 'https': 443, 'ftp': 21};
var $locationMinErr = minErr('$location');


乗り換えるのも有効な手段です。特にMacBookユーザーの方は、いっそのことそうするのが良いかもしれませんね。

Why Is Chrome Using up So Much RAM? (And How to Fix It Right Now) | MakeUseOf

Dann Albright（訳：阪本博希／ガリレオ）

Photo by Shutterstock.

<iframe name="f21485fbc88b73c" width="1000px" height="1000px" frameborder="0" allowtransparency="true" allowfullscreen="true" scrolling="no" title="fb:like Facebook Social Plugin" src="https://www.facebook.com/v2.0/plugins/like.php?action=like&app_id=296335197107028&channel=http%3A%2F%2Fstaticxx.facebook.com%2Fconnect%2Fxd_arbiter.php%3Fversion%3D42%23cb%3Df39f9c7d979a2ec%26domain%3Dwww.lifehacke


 []byte("msg2"), Mock: mock.Mock{}},
				"B": &mocks.IdentityDeserializer{Identity: []byte("Charlie"), Msg: []byte("msg3"), Mock: mock.Mock{}},
				"C": &mocks.IdentityDeserializer{Identity: []byte("Dave"), Msg: []byte("msg4"), Mock: mock.Mock{}},
			},
		},
		cryptoProvider,
	)

	msg := []byte("msg1")
	sigma, err := msgCryptoService.Sign(msg)
	assert.NoError(t, err, "Failed generating signature")

	err = msgCryptoService.Verify(api.PeerIdentityType("Alice"), sigma, msg)
	assert.NoError(t, err, "Alice should verify the signature")

	err = msgCryptoService.Verify(api.PeerIdentityType("Bob"), sigma, msg)
	assert.Error(t, err, "Bob should not verify the signature")

	err = msgCryptoService.Verify(api.PeerIdentityType("Charlie"), sigma, msg)
	assert.Error(t, err, "Charlie should not verify the signature")

	sigma, err = msgCryptoService.Sign(msg)
	assert.NoError(t, err)
	err = msgCryptoService.Verify(api.PeerIdentityType("Dave"), sigma, msg)
	assert.Error(t, err)
	assert.Contains(t, err.Error(), "Could not acquire policy manager")

	// Check invalid args
	assert.Error(t, msgCryptoService.Verify(nil, sigma, msg))
}

func TestVerifyBlock(t *testing.T) {
	aliceSigner := &mocks.SignerSerializer{}
	aliceSigner.SerializeReturns([]byte("Alice"), nil)
	policyManagerGetter := &mocks.ChannelPolicyManagerGetterWithManager{
		Managers: map[string]policies.Manager{
			"A": &mocks.ChannelPolicyManager{
				Policy: &mocks.Policy{Deserializer: &mocks.IdentityDeserializer{Identity: []byte("Bob"), Msg: []byte("msg2"), Mock: mock.Mock{}}},
			},
			"B": &mocks.ChannelPolicyManager{
				Policy: &mocks.Policy{Deserializer: &mocks.IdentityDeserializer{Identity: []byte("Charlie"), Msg: []byte("msg3"), Mock: mock.Mock{}}},
			},
			"C": &mocks.ChannelPolicyManager{
				Policy: &mocks.Policy{Deserializer: &mocks.IdentityDeserializer{Identity: []byte("Alice"), Msg: []byte("msg1"), Mock: mock.Mock{}}},
			},
			"D": &mocks.ChannelPolicyManager{
				Policy: &mocks.Policy{Deserializer: &mocks.IdentityDeserializer{Identity: []byte("Alice"), Msg: []byte("msg1"), Mock: mock.Mock{}}},
			},
		},
	}

	cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore())
	assert.NoError(t, err)
	msgCryptoService := NewMCS(
		policyManagerGetter,
		aliceSigner,
		&mocks.DeserializersManager{
			LocalDeserializer: &mocks.IdentityDeserializer{Identity: []byte("Alice"), Msg: []byte("msg1"), Mock: mock.Mock{}},
			ChannelDeserializers: map[string]msp.IdentityDeserializer{
				"A": &mocks.IdentityDeserializer{Identity: []byte("Bob"), Msg: []byte("msg2"), Mock: mock.Mock{}},
				"B": &mocks.IdentityDeserializer{Identity: []byte("Charlie"), Msg: []byte("msg3"), Mock: mock.Mock{}},
			},
		},
		cryptoProvider,
	)

	// - Prepare testing valid block, Alice signs it.
	blockRaw, msg := mockBlock(t, "C", 42, aliceSigner, nil)
	policyManagerGetter.Managers["C"].(*mocks.ChannelPolicyManager).Policy.(*mocks.Policy).Deserializer.(*mocks.IdentityDes


            {
                return StringToDtxWStaticFormatParse(new SimpleDateFormat(dateFormatString), input, _timeZone);
            }

            /// <summary>
            ///     NOTE: Code-generation-invoked method, method name and parameter order matters
            /// </summary>
            /// <param name="format">format</param>
            /// <param name="input">input</param>
            /// <param name="timeZone">time zone</param>
            /// <returns>dtx</returns>
            public static DateTimeEx StringToDtxWStaticFormatParse(
                DateFormat format,
                object input,
                TimeZoneInfo timeZone)
            {
                try {
                    return DateTimeEx.GetInstance(timeZone, format.Parse(input.ToString()));
                }
                catch (ParseException ex) {
                    throw ExprCastNode.HandleParseException(format, input.ToString(), ex);
                }
            }

            public override CodegenExpression CodegenPremade(
                Type evaluationType,
                CodegenExpression input,
                Type inputType,
                CodegenMethodScope codegenMethodScope,
                ExprForgeCodegenSymbol exprSymbol,
                CodegenClassScope codegenClassScope)
            {
                CodegenExpression timeZoneField =
                    codegenClassScope.AddOrGetDefaultFieldSharable(RuntimeSettingsTimeZoneField.INSTANCE);
                return CodegenExpressionBuilder.StaticMethod(
                    typeof(StringToDateTimExWStaticFormatComputer),
                    "StringToDtxWStaticFormatParse",
                    FormatField(dateFormatString, codegenClassScope),
                    input,
                    timeZoneField);
            }
        }
    }
}


entComponent>();
		ev->OnTriggerEvent.Connect([resourceName](const std::string& eventName, const std::string& eventPayload, const std::string& eventSource, bool* eventCanceled)
		{
			auto th = GetThread();

			if (th)
			{
				th->push_front(fmt::sprintf("%s: event %s", resourceName, eventName));
			}
		}, -100);

		ev->OnTriggerEvent.Connect([](const std::string& eventName, const std::string& eventPayload, const std::string& eventSource, bool* eventCanceled)
		{
			auto th = GetThread();

			if (th)
			{
				th->pop_front();
			}
		}, 100);

		resource->OnEnter.Connect([resourceName]()
		{
			auto th = GetThread();

			if (th)
			{
				th->push_front(fmt::sprintf("%s: tick", resourceName));
			}
		}, INT32_MIN);

		resource->OnLeave.Connect([]()
		{
			auto th = GetThread();

			if (th)
			{
				th->pop_front();
			}
		}, INT32_MAX);

		initialized = true;
	}

private:
	bool initialized;
};

static InitFunction initFunction([]()
{
	fx::Resource::OnInitializeInstance.Connect([](fx::Resource* resource)
	{
		resource->SetComponent(new WatchdogWarningComponent());
	});

	fx::ServerInstanceBase::OnServerCreate.Connect([](fx::ServerInstanceBase* instance)
	{
		instance->OnInitialConfiguration.Connect([instance]()
		{
			using namespace std::chrono_literals;

			static tbb::concurrent_unordered_map<std::string, std::chrono::milliseconds> bites;
			static tbb::concurrent_unordered_map<std::string, int> barks;

			auto bite = [](const char* name)
			{
				bites[name] = msec();
			};

			auto bark = [](const std::string& name, int stage)
			{
				if (barks[name] >= stage)
				{
					return;
				}

				barks[name] = stage;

				auto dur = std::chrono::duration_cast<std::chrono::seconds>(msec() - bites[name]);

				console::PrintError("server", "Loop %s%s seems hung! (last checkin %d seconds ago)\n",
					name,
					stage == 2 ? " STILL" : "",
					dur.count()
				);

				std::stringstream s;

				auto& threadStack = g_threadStacks[GetThreadIdx(HashString(name.c_str()))];

				for (auto& entry : threadStack)
				{
					s << entry << " <- ";
				}

				s << "root";

				console::PrintWarning("server", "%s watchdog stack: %s\n", name, s.str());

				StructuredTrace({ "type", "watchdog_bark" }, { "thread", name }, { "time", dur.count() }, { "stack", s.str() });

				PlatformBark(name);
			};

			static std::vector<std::shared_ptr<uvw::TimerHandle>> timers;

			for (auto loopName : { "svMain", "default", "svNetwork", "svSync" })
			{
				auto loop = Instance<net::UvLoopManager>::Get()->Get(loopName);

				if (loop.GetRef())
				{
					auto refLoop = loop->Get();

					// doing this is bollocks, it's on the wrong thread
					// at least it's at init-time so it'll *hopefully* not race
					// if it does, might need to add a GetLocked that'll not run if the loop is being polled?
					auto loopTimer = refLoop->resource<uvw::TimerHandle>();

					loopTimer->on<uvw::TimerEvent>([bite,


indsurf”**作为这个新表面的身份，一个全新的编辑器，[Windsurf Editor]。

然后，水的类比不断涌现，从核心flow——[Cascade]开始。引入 Chat Cascade 的流程演进是使用AI编码的最强大方法。

![](https://my-img.javaedge.com.cn/javaedge-blog/2024/11/e6d4d8e24189d6eab32b27c56b9a90cc.png)

**Cascade是Chat的flow演变，你发现Cascade在侧边栏而非Chat中**：

- 表面看，它像一个熟悉的对话表面。这是魔法的“直观”部分
- 一旦你用它，你会注意到“力量”部分——对你现有代码库的深层推理的综合（知识），访问大量工具及对你独立于调用AI所采取行动的全知

使Cascade强大的不仅是知识、工具和人类行为的广度，还有每个维度的深度：

- 知识：基于多年研究成果，我们建立了最先进的[上下文感知]系统，可解析和语义理解复杂的代码库，与您的所有 SCM 集成，对您的代码库建立无与伦比的了解，为您提供个性化建议，从而使代码接受度提高 38%。如不擅长这个，就不会有幸与摩根大通、戴尔、Anduril和Zillow等最大和技术最复杂的公司合作。

- 工具：Cascade工具包括编辑、添加文件、grep、列出目录中的文件，甚至代码执行。还带有专有工具，如Riptide，这是支撑我们[Cortex研究突破]的技术。它是一个基于LLM的搜索工具，可几s内扫描数百万行代码，准确率比最先进的基于嵌入的系统高出3倍，同时高度优化了大量计算的使用

- 人类行为：你可在许多不同粒度上捕获这些信息，但很容易要么信息太少，要么太多。要么你错过决定用户意图的核心行为，要么你有很多噪音。我们不会透露魔法的配方，但我们在检查点、信息压缩等方面做了很多，以使Cascade像人与AI之间的无限联合意识流。

若Cascade是Chat的flow演变，那[Autocomplete]呢？你可能用过Autocomplete的flow演变——Supercomplete！预测下一个意图，而不仅是光标位置的下一个文本，只有flows和推理人类行为的能力才能实现。

虽然flows是Windsurf Editor背后的动机，但Cascade并非你第一天就能访问的唯一AI能力。Windsurf Editor是围绕我们的总体AI引擎构建的，以助你写代码，无论Cascade还是文本编辑器。当你用文本编辑器，你将获得所有你已从Codeium扩展中喜爱的功能。

可启用快速的Autocomplete模式，并获得快速且具有上下文感知的Autocomplete建议，以完成你的想法。还包括Supercomplete，该模态可预测与你下一个意图相对应的编辑，提示你进


en linken die rechte gegriffen

eine normale Enchufla und Dile que no

Cubanito Sombrero

Der Beginn ist wie Cubanito nur das Ende ist anders.

Enchufla mit Handwechsel (zu rechts-rechts)

der Mann macht auch eine Enchufla und führt die Dame hinter sich

andere (ihre linke) Hand greifen

jetzt ist man in der Position, die der Figur quasi den Namen gegeben hat: die Frau ist hinten, der Mann steht vor ihr (cubanito das -o für die männliche Form)

nach der Enchufla steht die Frau links und der Mann rechts

jetzt einmal Hin: Frau rechts, Mann links

wieder zurück und von hier an unterscheidet sich die Figur

statt der Enchufla taucht der Mann unter dem rechten Arm der Dame rückwärts gehend hindurch

führt eine Sombrero-Drehung (mit Ablegen) und Dile que no

Enchufla mandolin

Enchufla Anfang

Führende bilden einen Kreis in dem sie drei Schritte nach recht und dann drei nach links gehen

Wiederholt sich

Gibt ein weiteres Kommando, dass die Folgenden einen Aussenkreis bilden und die gleichen Schritte machen (allerdings versetzt zu den Führenden)

Se fue-Ansage: Führende machen Links-rück-drehung raus aus dem Innenkreis

DLQ mit Dame eins weiter

Enchufla tumba princesa

Enchufla Anfang, sofort Handwechsel

Aneinander vorbei laufen zur Nächsten laufen (Dame Richtung)

Im grossen Bogen die Hände reichen

Aneinander vorbei laufen und Hände reichen fortführen bis ein neues Kommando kommt

Se fue - Kommando

Start, wenn man rechts auf rechts ist

Der Führende lässt beim Vorbeigehen nicht die Hand los und bringt sich in eine Cubanito Situation

Dann Handwechsel und eine Enchufla

Switch - Kommando

Start, wenn man rechts auf rechts ist

Folgende führt eine Enchufla

Und man setzt Enchufla tumba princesa fort allerdings laufen nun alle in der anderen Richtung im Kreis

Directo Kamikaze - Kommando

normales Directo Kamikaze direkt aus Enchufla tumba princesa machen


for a [PaddedContainer] */
        val themeVars = ThemeVars()

        private val tempColor = MutableColor()
        private val minSizeLayout = GlyphLayout()
    }
}
package com.littlekt.graph.node.ui

import com.littlekt.graph.SceneGraph
import com.littlekt.graph.node.Node
import com.littlekt.graph.node.addTo
import com.littlekt.graph.node.annotation.SceneGraphDslMarker
import com.littlekt.graphics.Camera
import com.littlekt.graphics.g2d.Batch
import com.littlekt.graphics.g2d.NinePatch
import com.littlekt.graphics.g2d.TextureSlice
import com.littlekt.graphics.g2d.shape.ShapeRenderer
import com.littlekt.resources.Textures
import kotlin.contracts.ExperimentalContracts
import kotlin.contracts.InvocationKind
import kotlin.contracts.contract

/** Adds a [NinePatchRect] to the current [Node] as a child and then triggers the [callback] */
@OptIn(ExperimentalContracts::class)
inline fun Node.ninePatchRect(
    callback: @SceneGraphDslMarker NinePatchRect.() -> Unit = {}
): NinePatchRect {
    contract { callsInPlace(callback, InvocationKind.EXACTLY_ONCE) }
    return NinePatchRect().also(callback).addTo(this)
}

/**
 * Adds a [NinePatchRect] to the current [SceneGraph.root] as a child and then triggers the
 * [callback]
 */
@OptIn(ExperimentalContracts::class)
inline fun SceneGraph<*>.ninePatchRect(
    callback: @SceneGraphDslMarker NinePatchRect.() -> Unit = {}
): NinePatchRect {
    contract { callsInPlace(callback, InvocationKind.EXACTLY_ONCE) }
    return root.ninePatchRect(callback)
}

/**
 * Creates a [Control] that uses and renders a [NinePatch].
 *
 * @author Colton Daily
 * @date 1/18/2022
 */
open class NinePatchRect : Control() {

    /** The width of the 9-patch's left column. */
    var left: Int = 0
        set(value) {
            if (field == value) return
            field = value
            ninePatch = NinePatch(texture, left, right, top, bottom)
            onMinimumSizeChanged()
        }

    /** The width of the 9-patch's right column. */
    var right: Int = 0
        set(value) {
            if (field == value) return
            field = value
            ninePatch = NinePatch(texture, left, right, top, bottom)
            onMinimumSizeChanged()
        }

    /** The height of the 9-patch's top row. */
    var top: Int = 0
        set(value) {
            if (field == value) return
            field = value
            ninePatch = NinePatch(texture, left, right, top, bottom)
            onMinimumSizeChanged()
        }

    /** The height of the 9-patch's bottom row. */
    var bottom: Int = 0
        set(value) {
            if (field == value) return
            field = value
            ninePatch = NinePatch(texture, left, right, top, bottom)
            onMinimumSizeChanged()
        }

    /** The texture to be used as a [NinePatch]. */
    var texture: TextureSlice = Textures.white
        set(value) {
            if (field == value) return
            field = value
            ninePatch = NinePatch(value, left, right, top, bottom)
            onMinimumSizeChanged()
        }

    private var ninePatch: NinePatch = NinePatch(Textures.white, left, right, top, bottom)

    override fun calculateMinSize() {
        if (!minSizeInvalid) return

        _internalMinWidth = (left + right).toFloat()
        _internalMinHeight = (top + bottom).toFloat()

        minSizeInvalid = false
    }

    override fun render(batch: Batch, camera: Camera, shapeRenderer: ShapeRenderer) {
        ninePatch.draw(
            batch = batch,
            x = globalX - originX,
            y = globalY - originY,
            originX = originX,


/**
 * @file lv_api_map.h
 *
 */

#ifndef LV_API_MAP_H
#define LV_API_MAP_H

#ifdef __cplusplus
extern "C" {
#endif

/*********************
 *      INCLUDES
 *********************/
#include "../lvgl.h"

/*********************
 *      DEFINES
 *********************/

#define LV_NO_TASK_READY        LV_NO_TIMER_READY
#define LV_INDEV_STATE_REL      LV_INDEV_STATE_RELEASED
#define LV_INDEV_STATE_PR       LV_INDEV_STATE_PRESSED
#define LV_OBJ_FLAG_SNAPABLE    LV_OBJ_FLAG_SNAPPABLE   /*Fixed typo*/

/**********************
 *      TYPEDEFS
 **********************/

/**********************
 * GLOBAL PROTOTYPES
 **********************/

static inline LV_ATTRIBUTE_TIMER_HANDLER uint32_t lv_task_handler(void)
{
    return lv_timer_handler();
}

/**********************
 *      MACROS
 **********************/

/**********************
 * INLINE FUNCTIONS
 **********************/

/**
 * Move the object to the foreground.
 * It will look like if it was created as the last child of its parent.
 * It also means it can cover any of the siblings.
 * @param obj       pointer to an object
 */
static inline void lv_obj_move_foreground(lv_obj_t * obj)
{
    lv_obj_t * parent = lv_obj_get_parent(obj);
    lv_obj_move_to_index(obj, lv_obj_get_child_cnt(parent) - 1);
}

/**
 * Move the object to the background.
 * It will look like if it was created as the first child of its parent.
 * It also means any of the siblings can cover the object.
 * @param obj       pointer to an object
 */
static inline void lv_obj_move_background(lv_obj_t * obj)
{
    lv_obj_move_to_index(obj, 0);
}

/**********************
 * DEPRECATED FUNCTIONS
 **********************/

static inline uint32_t lv_obj_get_child_id(const struct _lv_obj_t * obj)
{
    LV_LOG_WARN("lv_obj_get_child_id(obj) is deprecated, please use lv_obj_get_index(obj).");
    return lv_obj_get_index(obj);
}

#ifdef __cplusplus
} /*extern "C"*/
#endif

#endif /*LV_API_MAP_H*/


iagnostic ignored "-Wparentheses" // See #674 for details

#    pragma GCC diagnostic push
#    pragma GCC diagnostic ignored "-Wunused-variable"
#    pragma GCC diagnostic ignored "-Wpadded"
#endif
// end catch_suppress_warnings.h
#if defined(CATCH_CONFIG_MAIN) || defined(CATCH_CONFIG_RUNNER)
#  define CATCH_IMPL
#  define CATCH_CONFIG_ALL_PARTS
#endif

// In the impl file, we want to have access to all parts of the headers
// Can also be used to sanely support PCHs
#if defined(CATCH_CONFIG_ALL_PARTS)
#  define CATCH_CONFIG_EXTERNAL_INTERFACES
#  if defined(CATCH_CONFIG_DISABLE_MATCHERS)
#    undef CATCH_CONFIG_DISABLE_MATCHERS
#  endif
#  if !defined(CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER)
#    define CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER
#  endif
#endif

#if !defined(CATCH_CONFIG_IMPL_ONLY)
// start catch_platform.h

#ifdef __APPLE__
# include <TargetConditionals.h>
# if TARGET_OS_OSX == 1
#  define CATCH_PLATFORM_MAC
# elif TARGET_OS_IPHONE == 1
#  define CATCH_PLATFORM_IPHONE
# endif

#elif defined(linux) || defined(__linux) || defined(__linux__)
#  define CATCH_PLATFORM_LINUX

#elif defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) || defined(__MINGW32__)
#  define CATCH_PLATFORM_WINDOWS
#endif

// end catch_platform.h

#ifdef CATCH_IMPL
#  ifndef CLARA_CONFIG_MAIN
#    define CLARA_CONFIG_MAIN_NOT_DEFINED
#    define CLARA_CONFIG_MAIN
#  endif
#endif

// start catch_user_interfaces.h

namespace Catch {
    unsigned int rngSeed();
}

// end catch_user_interfaces.h
// start catch_tag_alias_autoregistrar.h

// start catch_common.h

// start catch_compiler_capabilities.h

// Detect a number of compiler features - by compiler
// The following features are defined:
//
// CATCH_CONFIG_COUNTER : is the __COUNTER__ macro supported?
// CATCH_CONFIG_WINDOWS_SEH : is Windows SEH supported?
// CATCH_CONFIG_POSIX_SIGNALS : are POSIX signals supported?
// CATCH_CONFIG_DISABLE_EXCEPTIONS : Are exceptions enabled?
// ****************
// Note to maintainers: if new toggles are added please document them
// in configuration.md, too
// ****************

// In general each macro has a _NO_<feature name> form
// (e.g. CATCH_CONFIG_NO_POSIX_SIGNALS) which disables the feature.
// Many features, at point of detection, define an _INTERNAL_ macro, so they
// can be combined, en-mass, with the _NO_ forms later.

#ifdef __cplusplus

#  if (__cplusplus >= 201402L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201402L)
#    define CATCH_CPP14_OR_GREATER
#  endif

#  if (__cplusplus >= 201703L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L)
#    define CATCH_CPP17_OR_GREATER
#  endif

#endif

#if defined(__cpp_lib_uncaught_exceptions)
#  define CATCH_INTERNAL_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS
#endif

// We have to avoid both ICC and Clang, because they try to mask themselves
// as gcc, and we want only GCC in this block
#if defined(__GNUC__) && !defined(__clang__) && !defined(__ICC)


AAAAAAAAAAPgAAAAEAAgECAD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcHdW5pRjAwMQd1bmlFMDAwB3VuaUUwMDEHdW5pRTAwMgd1bmlFMDAzB3VuaUUwMDQHdW5pRTAwNQd1bmlFMDA2B3VuaUUwMDcHdW5pRTAwOAd1bmlFMDA5B3VuaUUwMEEHdW5pRTAwQgd1bmlFMDBDB3VuaUUwMEQHdW5pRTAwRQd1bmlFMDBGB3VuaUUwMTAHdW5pRTAxMQd1bmlFMDEyB3VuaUUwMTMHdW5pRjAwMAAAAAAAAf//AAIAAQAAAA4AAAAYAAAAAAACAAEAAwA9AAEABAAAAAIAAAAAAAEAAAAAzD2izwAAAADN0452AAAAAM3TjnY=) format('truetype');
    font-weight: normal;
    font-style: normal;
}
.icon:before {
	font-family:'IcoMoon';
	speak:none;
	font-style:normal;
	font-weight:normal !important;
	font-variant:normal;
	text-transform:none;
	line-height:1;
	color:inherit;
	position:relative;
	font-size:1em;
	left:-3px; top:2px;
}
li .icon:before {
	position:relative;
	width:24px; height:100%;
	top:2px;
	line-height:0 !important;
	margin-right:4px;
}

.icon.mini:before {
	font-size:.7em;
}
.icon.big:before {
	font-size:1.5em;
}
.icon.home:before {
	content: "\5a";
}
.icon.pencil:before {
	content: "\5b";
}
.icon.picture:before {
	content: "\5c";
}
.icon.camera:before {
	content: "\5d";
}
.icon.headset:before {
	content: "\5e";
}
.icon.paper:before {
	content: "\5f";
}
.icon.stack:before {
	content: "\61";
}
.icon.folder:before {
	content: "\60";
}
.icon.tag:before {
	content: "\62";
}
.icon.basket:before {
	content: "\63";
}
.icon.phone:before {
	content: "\64";
}
.icon.mail:before {
	content: "\65";
}
.icon.location:before {
	content: "\66";
}
.icon.clock:before {
	content: "\67";
}
.icon.calendar:before {
	content: "\68";
}
.icon.message:before {
	content: "\69";
}
.icon.chat:before {
	content: "\6a";
}
.icon.user:before {
	content: "\6


.082 10.584 12.154 10.324 12.234 10.06L13.122 7.24H14.538V16H13.482V12.82C13.482 12.468 13.49 12.068 13.506 11.62C13.53 11.172 13.558 10.716 13.59 10.252C13.622 9.78 13.654 9.332 13.686 8.908C13.726 8.476 13.762 8.1 13.794 7.78L12.366 12.16H11.334L9.894 7.78C9.934 8.092 9.97 8.456 10.002 8.872C10.042 9.28 10.078 9.716 10.11 10.18C10.142 10.636 10.166 11.092 10.182 11.548C10.206 12.004 10.218 12.428 10.218 12.82V16H9.162Z" fill="var(--color-text)" id="icon-2048-text"></path></svg>add<wbr/>Friends
<svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><use href="#icon-2048-path"></use><use href="#icon-2048-text"></use></svg>add<wbr/>Group<wbr/>Users
<svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><use href="#icon-2048-path"></use><use href="#icon-2048-text"></use></svg>authenticate<wbr/>Apple
<svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><use href="#icon-2048-path"></use><use href="#icon-2048-text"></use></svg>authenticate<wbr/>Custom
<svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><use href="#icon-2048-path"></use><use href="#icon-2048-text"></use></svg>authenticate<wbr/>Device
<svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><use href="#icon-2048-path"></use><use href="#icon-2048-text"></use></svg>authenticate<wbr/>Email
<svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><use href="#icon-2048-path"></use><use href="#icon-2048-text"></use></svg>authenticate<wbr/>Facebook
<svg class="tsd-kind-icon" width="24" height="24" viewBox="0 0 24 24"><use href="#icon-2048-path"></use><use href="#icon-2048-text"></use></svg>authenticate<wbr/>Facebook<wbr/>Instant<wbr/>Game
<a href="nakama_js.Client.html#authenticateGameCenter"


if

#define CIAAADDR(ar)	movl	_CIAAbase,ar
#define CIABADDR(ar)	movl	_CIABbase,ar
#define CUSTOMADDR(ar)	movl	_CUSTOMbase,ar
#define INTREQRADDR(ar)	movl	_INTREQRaddr,ar
#define INTREQWADDR(ar)	movl	_INTREQWaddr,ar
#define INTENAWADDR(ar) movl	_amiga_intena_write,ar
#define	INTENARADDR(ar)	movl	_amiga_intena_read,ar

	.text
/*
 * This is where we wind up if the kernel jumps to location 0.
 * (i.e. a bogus PC)  This is known to immediately follow the vector
 * table and is hence at 0x400 (see reset vector in vectors.s).
 */
	.globl	_panic
	pea	Ljmp0panic
	jbsr	_panic
	/* NOTREACHED */
Ljmp0panic:
	.asciz	"kernel jump to zero"
	.even

/*
 * Do a dump.
 * Called by auto-restart.
 */
	.globl	_dumpsys
	.globl	_doadump
_doadump:
	jbsr	_dumpsys
	jbsr	_doboot
	/*NOTREACHED*/

/*
 * Trap/interrupt vector routines
 */
#include <m68k/m68k/trap_subr.s>

	.globl	_trap, _nofault, _longjmp
#if defined(M68040) || defined(M68060)
	.globl _addrerr4060
_addrerr4060:
	clrl	sp@-			| stack adjust count
	moveml	d0-d7/a0-a7,sp@-	| save user registers
	movl	usp,a0			| save the user SP
	movl	a0,sp@(FR_SP)		|   in the savearea
	movl	sp@(FR_HW+8),sp@-
	clrl	sp@-			| dummy code
	movl	#T_ADDRERR,sp@-		| mark address error
	jra	_ASM_LABEL(faultstkadj)	| and deal with it
#endif

#if defined(M68060)
	.globl _buserr60
_buserr60:
	clrl	sp@-			| stack adjust count
	moveml	d0-d7/a0-a7,sp@-	| save user registers
	movl	usp,a0			| save the user SP
	movl	a0,sp@(FR_SP)		|   in the savearea
	movel	sp@(FR_HW+12),d0	| FSLW
	btst	#2,d0			| branch prediction error?
	jeq	Lnobpe
	movc	cacr,d2
	orl	#IC60_CABC,d2		| clear all branch cache entries
	movc	d2,cacr
	movl	d0,d1
	addql	#1,L60bpe
	andl	#0x7ffd,d1
	jeq	_ASM_LABEL(faultstkadjnotrap2)
Lnobpe:
| we need to adjust for misaligned addresses
	movl	sp@(FR_HW+8),d1		| grab VA
	btst	#27,d0			| check for mis-aligned access
	jeq	Lberr3			| no, skip
	addl	#28,d1			| yes, get into next page
					| operand case: 3,
					| instruction case: 4+12+12
	andl	#PG_FRAME,d1            | and truncate
Lberr3:
	movl	d1,sp@-
	movl	d0,sp@-			| code is FSLW now.
	andw	#0x1f80,d0
	jeq	Lisberr
	movl	#T_MMUFLT,sp@-		| show that we are an MMU fault
	jra	_ASM_LABEL(faultstkadj)	| and deal with it
#endif
#if defined(M68040)
	.globl _buserr40
_buserr40:
	clrl	sp@-			| stack adjust count
	moveml	d0-d7/a0-a7,sp@-	| save user registers
	movl	usp,a0			| save the user SP
	movl	a0,sp@(FR_SP)		|   in the savearea
	movl	sp@(FR_HW+20),d1	| get fault address
	moveq	#0,d0
	movw	sp@(FR_HW+12),d0	| get SSW
	btst	#11,d0			| check for mis-aligned
	jeq	Lbe1stpg		| no skip
	addl	#3,d1			| get into next page
	andl	#PG_FRAME,d1


tive;
}
* + html .blueimp-gallery > .slides > .slide > .slide-content > img {
  position: relative;
}

@supports (object-fit: contain) {
  .blueimp-gallery-contain > .slides > .slide > .slide-content,
  .blueimp-gallery-contain > .slides > .slide > .slide-content > img {
    width: 100%;
    height: 100%;
    object-fit: contain;
  }
}
@charset "UTF-8";:root,[data-bs-theme=light]{--tblr-blue:#066fd1;--tblr-indigo:#4263eb;--tblr-purple:#ae3ec9;--tblr-pink:#d6336c;--tblr-red:#d63939;--tblr-orange:#f76707;--tblr-yellow:#f59f00;--tblr-green:#2fb344;--tblr-teal:#0ca678;--tblr-cyan:#17a2b8;--tblr-black:#000000;--tblr-white:#ffffff;--tblr-gray:#49566c;--tblr-gray-dark:#182433;--tblr-gray-100:#eef3f6;--tblr-gray-200:#dce1e7;--tblr-gray-300:#b8c4d4;--tblr-gray-400:#8a97ab;--tblr-gray-500:#6c7a91;--tblr-gray-600:#49566c;--tblr-gray-700:#3a4859;--tblr-gray-800:#182433;--tblr-gray-900:#040a11;--tblr-primary:#066fd1;--tblr-secondary:#6c7a91;--tblr-success:#2fb344;--tblr-info:#4299e1;--tblr-warning:#f76707;--tblr-danger:#d63939;--tblr-light:#f6f8fb;--tblr-dark:#182433;--tblr-muted:#6c7a91;--tblr-blue:#066fd1;--tblr-azure:#4299e1;--tblr-indigo:#4263eb;--tblr-purple:#ae3ec9;--tblr-pink:#d6336c;--tblr-red:#d63939;--tblr-orange:#f76707;--tblr-yellow:#f59f00;--tblr-lime:#74b816;--tblr-green:#2fb344;--tblr-teal:#0ca678;--tblr-cyan:#17a2b8;--tblr-x:#000000;--tblr-facebook:#1877f2;--tblr-twitter:#1da1f2;--tblr-linkedin:#0a66c2;--tblr-google:#dc4e41;--tblr-youtube:#ff0000;--tblr-vimeo:#1ab7ea;--tblr-dribbble:#ea4c89;--tblr-github:#181717;--tblr-instagram:#e4405f;--tblr-pinterest:#bd081c;--tblr-vk:#6383a8;--tblr-rss:#ffa500;--tblr-flickr:#0063dc;--tblr-bitbucket:#0052cc;--tblr-tabler:#066fd1;--tblr-primary-rgb:6,111,209;--tblr-secondary-rgb:108,122,145;--tblr-success-rgb:47,179,68;--tblr-info-rgb:66,153,225;--tblr-warning-rgb:247,103,7;--tblr-danger-rgb:214,57,57;--tblr-light-rgb:246,248,251;--tblr-dark-rgb:24,36,51;--tblr-muted-rgb:108,122,145;--tblr-blue-rgb:6,111,209;--tblr-azure-rgb:66,153,225;--tblr-indigo-rgb:66,99,235;--tblr-purple-rgb:174,62,201;--tblr-pink-rgb:214,51,108;--tblr-red-rgb:214,57,57;--tblr-orange-rgb:247,103,7;--tblr-yellow-rgb:245,159,0;--tblr-lime-rgb:116,184,22;--tblr-green-rgb:47,179,68;--tblr-teal-rgb:12,166,120;--tblr-cyan-rgb:23,162,184;--tblr-x-rgb:0,0,0;--


// Its behavior is undefined if x or y are negative or > 2**31 - 1.
func ConstantTimeLessOrEq(x, y int) int {
	x32 := int32(x)
	y32 := int32(y)
	return int(((x32 - y32 - 1) >> 31) & 1)
}
// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// SHA512 block step.
// In its own file so that a faster assembly or C version
// can be substituted easily.

package sha512

import "math/bits"

var _K = [...]uint64{
	0x428a2f98d728ae22,
	0x7137449123ef65cd,
	0xb5c0fbcfec4d3b2f,
	0xe9b5dba58189dbbc,
	0x3956c25bf348b538,
	0x59f111f1b605d019,
	0x923f82a4af194f9b,
	0xab1c5ed5da6d8118,
	0xd807aa98a3030242,
	0x12835b0145706fbe,
	0x243185be4ee4b28c,
	0x550c7dc3d5ffb4e2,
	0x72be5d74f27b896f,
	0x80deb1fe3b1696b1,
	0x9bdc06a725c71235,
	0xc19bf174cf692694,
	0xe49b69c19ef14ad2,
	0xefbe4786384f25e3,
	0x0fc19dc68b8cd5b5,
	0x240ca1cc77ac9c65,
	0x2de92c6f592b0275,
	0x4a7484aa6ea6e483,
	0x5cb0a9dcbd41fbd4,
	0x76f988da831153b5,
	0x983e5152ee66dfab,
	0xa831c66d2db43210,
	0xb00327c898fb213f,
	0xbf597fc7beef0ee4,
	0xc6e00bf33da88fc2,
	0xd5a79147930aa725,
	0x06ca6351e003826f,
	0x142929670a0e6e70,
	0x27b70a8546d22ffc,
	0x2e1b21385c26c926,
	0x4d2c6dfc5ac42aed,
	0x53380d139d95b3df,
	0x650a73548baf63de,
	0x766a0abb3c77b2a8,
	0x81c2c92e47edaee6,
	0x92722c851482353b,
	0xa2bfe8a14cf10364,
	0xa81a664bbc423001,
	0xc24b8b70d0f89791,
	0xc76c51a30654be30,
	0xd192e819d6ef5218,
	0xd69906245565a910,
	0xf40e35855771202a,
	0x106aa07032bbd1b8,
	0x19a4c116b8d2d0c8,
	0x1e376c085141ab53,
	0x2748774cdf8eeb99,
	0x34b0bcb5e19b48a8,
	0x391c0cb3c5c95a63,
	0x4ed8aa4ae3418acb,
	0x5b9cca4f7763e373,
	0x682e6ff3d6b2b8a3,
	0x748f82ee5


-searchTxt{display: inline-block !important;*display: inline !important;*zoom:1;width:400px; border: 1px solid #c5d2ff; height: 20px; line-height: 18px; font-size: 14px; padding: 3px; margin: 0;outline:0;}
.edui-dialog-image .edui-image-searchBar .edui-image-searchAdd{display: inline-block !important;*display: inline !important;*zoom:1;
    width:60px; text-align:center;height: 25px;text-align: center;line-height: 25px;
    background-color: #ffffff;padding: 0; border: 1px solid #ababab;margin-left: 20px;cursor: pointer;
}
.edui-dialog-image .edui-image-searchBar .edui-image-searchAdd.hover{
    background-color: #d5e1f2;
    padding: 0;
    border: 1px solid #a3bde3;
}
.edui-dialog-image .edui-image-searchRes{height:280px;overflow:auto;}

/*common*/
.edui-dialog-image .edui-image-item{position:relative;float:left;width:120px;height:120px;border: 1px solid #CCC;cursor: default;margin: 5px 0 0 5px;}
.edui-dialog-image .edui-image-item .edui-image-pic{position: absolute;left:-9999px;}
.edui-dialog-image .edui-image-item .edui-image-close{position:absolute;right:0;background: url('images/close.png');width:17px;height:17px;cursor:pointer;z-index:1}
.edui-dialog-image .edui-image-item.hover .edui-image-close{display: block;}
@charset "utf-8";
.edui-dialog-video .edui-video-wrapper{ width: 570px;_width:575px;margin: 10px auto; zoom:1;position: relative}
.edui-dialog-video .edui-video-tabbody{height:335px;}
.edui-dialog-video .edui-video-panel { position: absolute;width:100%; height:100%;background: #fff;}
.edui-dialog-video .edui-video-panel table td{vertical-align: middle;}
.edui-dialog-video #eduiVideoUrl {
    width: 470px;
    height: 21px;
    line-height: 21px;
    margin: 8px 5px;
    background: #FFF;
    border: 1px solid #d7d7d7;
}
.edui-dialog-video #eduiVideoSearchTxt{margin-left:15px;background: #FFF;width:200px;height:21px;line-height:21px;border: 1px solid #d7d7d7;}
.edui-dialog-video #searchList{width: 570px;overflow: auto;zoom:1;height: 270px;}
.edui-dialog-video #searchList div{float: left;width: 120px;height: 135px;margin: 5px 15px;}
.edui-dialog-video #searchList img{margin: 2px 8px;cursor: pointer;border: 2px solid #fff} /*不用缩略图*/
.edui-dialog-video #searchList p{margin-left: 10px;}
.edui-dialog-video #eduiVideoType{
    width: 65px;
    height: 23px;
    line-height: 22px;
    border: 1px solid #d7d7d7;
}
.edui-dialog-video #eduiVideoSearchBtn,.edui-dialog-video #eduiVideoSearchReset{
    /*width: 80px;*/
    height: 25px;
    line-height: 25px;
    background: #eee;
    border: 1px solid #d7d7d7;
    cursor: pointer;
    padding: 0 5px;
}

.edui-dialog-video #eduiVideoPreview{widt


9418 91.774344;
    --b3: 84.133% 0.065952 90.856665;
    --bc: 26.5104% 0.006243 0.522862;
    --in: 54.615% 0.215208 262.880917;
    --su: 62.7052% 0.169912 149.213788;
    --wa: 66.584% 0.157422 58.31834;
    --er: 65.72% 0.199 27.33;
    --rounded-box: 0.4rem;
    --rounded-btn: 0.4rem;
    --rounded-badge: 0.4rem;
    --tab-radius: 0.4rem
}
[data-theme=cyberpunk] {
    color-scheme: light;
    --b2: 87.8943% 0.16647 104.32;
    --b3: 81.2786% 0.15394 104.32;
    --in: 72.06% 0.191 231.6;
    --su: 64.8% 0.150 160;
    --wa: 84.71% 0.199 83.87;
    --er: 71.76% 0.221 22.18;
    --bc: 18.902% 0.0358 104.32;
    --pc: 14.844% 0.0418 6.35;
    --sc: 16.666% 0.0368 204.72;
    --ac: 14.372% 0.04352 310.43;
    --inc: 0% 0 0;
    --suc: 0% 0 0;
    --wac: 0% 0 0;
    --erc: 0% 0 0;
    --animation-btn: 0.25s;
    --animation-input: .2s;
    --btn-focus-scale: 0.95;
    --border-btn: 1px;
    --tab-border: 1px;
    font-family: ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;
    --p: 74.22% 0.209 6.35;
    --s: 83.33% 0.184 204.72;
    --a: 71.86% 0.2176 310.43;
    --n: 23.04% 0.065 269.31;
    --nc: 94.51% 0.179 104.32;
    --b1: 94.51% 0.179 104.32;
    --rounded-box: 0;
    --rounded-btn: 0;
    --rounded-badge: 0;
    --tab-radius: 0
}
:root:has(input.theme-controller[value=cyberpunk]:checked) {
    color-scheme: light;
    --b2: 87.8943% 0.16647 104.32;
    --b3: 81.2786% 0.15394 104.32;
    --in: 72.06% 0.191 231.6;
    --su: 64.8% 0.150 160;
    --wa: 84.71% 0.199 83.87;
    --er: 71.76% 0.221 22.18;
    --bc: 18.902% 0.0358 104.32;
    --pc: 14.844% 0.0418 6.35;
    --sc: 16.666% 0.0368 204.72;
    --ac: 14.372% 0.04352 310.43;
    --inc: 0% 0 0;
    --suc: 0% 0 0;
    --wac: 0% 0 0;
    --erc: 0% 0 0;
    --animation-btn: 0.25s;
    --animation-input: .2s;
    --btn-focus-scale: 0.95;
    --border-btn: 1px;
    --tab-border: 1px;
    font-family: ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;
    --p: 74.22% 0.209 6.35;
    --s: 83.


l.","Aus dem Plan geht hervor, dass sich der Sammler anscheinend in der Nähe vom Brackwell-Kürbisbeet in Ost-Elwynn aufhält.","Das klingt, als sei es wichtig. Ihr solltet Marshal Dughan in Goldhain davon berichten."}, {"Begebt Euch zu Marshal Dughan nach Goldhain und gebt ihm den Zeitplan des Sammlers."}},
[124] = {"Das Bellen der Gnolle", {"Als ob Orc-Angriffe nicht genug wären! Jetzt schleichen auch noch Gnoll-Schläger und Gnoll-Mystiker auf dem Hügelkamm nördlich von meinem Stall herum und fallen meine Pferde an, wenn diese sich auch nur etwas zu weit vom Stall entfernen...","Wenn Ihr diese Gnolle beseitigen könntet, wären meine Pferde und ich Euch sehr dankbar."}, {"Tötet 10 Schläger der Rotkammgnolle und 8 Mystiker der Rotkammgnolle und kehrt anschließend zu Verner Osgood zurück."}},
[125] = {"Die verlorenen Werkzeuge", {"Ich könnte hier wirklich etwas Hilfe gebrauchen, <Name>. Jetzt, wo die Stadt belagert wird, bekommen wir hier nur schwer Nachschub. Meine Werkzeuge sollten mit dem Karren von Goldhain aus angeliefert werden, aber die Brücke wurde in die Luft gejagt. Also legten wir die Werkzeuge in ein Boot, aber die Orcs beschossen es mit einem Katapult und trafen auch noch. Na, und bei meinem Pech ist mein Werkzeugkasten natürlich geradewegs bis auf den Grund des Sees gesunken.","Wenn Ihr mir meinen Werkzeugkasten wiederbeschafft, <Name>, dann soll es Euer Schaden nicht sein."}, {"Großknecht Oslow aus Seenhain möchte, dass Ihr seinen Werkzeugkasten vom Grunde des Immerruhsees heraufholt."}},
[126] = {"Geheul in den Hügeln", {"Die Gnolle sind immer noch da draußen, <Name>. Ich kann sie bellen hören, wenn sie in den Hügeln oberhalb von Seenhain jagen. Und das Geheul eines Gnolls ist lauter als das aller anderen - das von Jauler, ihrem Anführer.","Tötet Jauler und vertreibt sein Rudel in alle vier Winde! Bringt mir seine Tatze zum Beweis.","Aber seid vorsichtig! Dieser Gnoll ist nicht umsonst der Anführer seines Rudels. Er ist kein einfacher Köter..."}, {"Bringt Jaulers Tatze nach Seenhain zu Verner Osgood."}},
[127] = {"Fischhandel", {"Der Immerruhsee ist für seinen gefleckten Sonnenfisch berühmt. Die Nachfrage nach diesen Fischen ist enorm hoch - und ich habe bald keine mehr vorrätig!","Bringt mir 10 Stück, dann werden wir uns schon handelseinig werden. Und wenn Ihr nicht selbst angeln möchtet oder könnt - na ja, vielleicht bekommt Ihr die Fische ja von den Murlocs!"}, {"Bringt 10 gefleckte Sonnenfische nach Seenhain zu Dockmeister Baren."}},
[128] = {"Kopfgeld auf die Blackrocks", {"Der Blackrockklan muss vernichtet werden. Der Feind ist in unser Land eingedrungen. Diese Berge unterliegen der Oberhoheit des Königs von Stormwind. Aus bestimmten Quellen haben wir erfahren können, dass die Anführer jeder Einheit im Klan \"Helden\" genannt werden. Ihr findet sie in ihrem Lager im Norden, ein kleines Stück westlich von der Straße, die in die brennende Steppe führt.","Magistrat Solomon möchte diese garstigen Bestien tot sehen.


("bar")}); err != nil {
		t.Fatalf("couldn't put key (%v)", err)
	}
	wresp, err := wStream.Recv()
	if err != nil {
		t.Errorf("wStream.Recv error: %v", err)
	}
	if len(wresp.Events) != 1 {
		t.Fatalf("len(wresp.Events) got = %d, want = 1", len(wresp.Events))
	}
	if string(wresp.Events[0].Kv.Key) != "fo" {
		t.Errorf("wresp.Events[0].Kv.Key got = %s, want = fo", wresp.Events[0].Kv.Key)
	}

	// now Recv should block because there is no more events coming
	rok, nr := waitResponse(wStream, 1*time.Second)
	if !rok {
		t.Errorf("unexpected pb.WatchResponse is received %+v", nr)
	}
}

func TestV3WatchMultipleEventsTxnSynced(t *testing.T) {
	defer testutil.AfterTest(t)
	testV3WatchMultipleEventsTxn(t, 0)
}

func TestV3WatchMultipleEventsTxnUnsynced(t *testing.T) {
	defer testutil.AfterTest(t)
	testV3WatchMultipleEventsTxn(t, 1)
}

// testV3WatchMultipleEventsTxn tests Watch APIs when it receives multiple events.
func testV3WatchMultipleEventsTxn(t *testing.T, startRev int64) {
	clus := NewClusterV3(t, &ClusterConfig{Size: 3})
	defer clus.Terminate(t)

	ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
	defer cancel()
	wStream, wErr := toGRPC(clus.RandClient()).Watch.Watch(ctx)
	if wErr != nil {
		t.Fatalf("wAPI.Watch error: %v", wErr)
	}

	wreq := &pb.WatchRequest{RequestUnion: &pb.WatchRequest_CreateRequest{
		CreateRequest: &pb.WatchCreateRequest{
			Key: []byte("foo"), RangeEnd: []byte("fop"), StartRevision: startRev}}}
	if err := wStream.Send(wreq); err != nil {
		t.Fatalf("wStream.Send error: %v", err)
	}
	if resp, err := wStream.Recv(); err != nil || !resp.Created {
		t.Fatalf("create response failed: resp=%v, err=%v", resp, err)
	}

	kvc := toGRPC(clus.RandClient()).KV
	txn := pb.TxnRequest{}
	for i := 0; i < 3; i++ {
		ru := &pb.RequestOp{}
		ru.Request = &pb.RequestOp_RequestPut{
			RequestPut: &pb.PutRequest{
				Key: []byte(fmt.Sprintf("foo%d", i)), Value: []byte("bar")}}
		txn.Success = append(txn.Success, ru)
	}

	tresp, err := kvc.Txn(context.Background(), &txn)
	if err != nil {
		t.Fatalf("kvc.Txn error: %v", err)
	}
	if !tresp.Succeeded {
		t.Fatalf("kvc.Txn failed: %+v", tresp)
	}

	events := []*mvccpb.Event{}
	for len(events) < 3 {
		resp, err := wStream.Recv()
		if err != nil {
			t.Errorf("wStream.Recv error: %v", err)
		}
		events = append(events, resp.Events...)
	}
	sort.Sort(eventsSortByKey(events))

	wevents := []*mvccpb.Event{
		{
			Type: mvccpb.PUT,
			Kv:   &mvccpb.KeyValue{Key: []byte("foo0"), Value: []byte("bar"), CreateRevision:


 );
  if( 0 == brep )
		return CRhinoCommand::failure;

  CRhinoBrepObject* brep_object = new CRhinoBrepObject();
  brep_object->SetBrep( brep );
  doc->AddObject( brep_object );
  doc->Redraw();

  return CRhinoCommand::success;
}

//
// END SampleTrimmedPlane command
//
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
#include "stdafx.h"

////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
//
// BEGIN SampleCurveAreaCentroid command
//

#pragma region SampleCurveAreaCentroid command

class CGetClosedPlanarCurve : public CRhinoGetObject
{
public:
  bool CustomGeometryFilter(const CRhinoObject* obj, const ON_Geometry* geom, ON_COMPONENT_INDEX ci) const;
};

bool CGetClosedPlanarCurve::CustomGeometryFilter(const CRhinoObject* obj, const ON_Geometry* geom, ON_COMPONENT_INDEX ci) const
{
  UNREFERENCED_PARAMETER(obj);
  UNREFERENCED_PARAMETER(ci);

  bool rc = false;
  const ON_Curve* crv = ON_Curve::Cast(geom);
  if (crv && crv->IsClosed() && crv->IsPlanar(0, ON_ZERO_TOLERANCE))
    rc = true;
  return rc;
}

////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////

class CCommandSampleCurveAreaCentroid : public CRhinoCommand
{
public:
  CCommandSampleCurveAreaCentroid() = default;
  ~CCommandSampleCurveAreaCentroid() = default;
  UUID CommandUUID() override
  {
    // {5B5B5B5A-C7AB-4B4B-AF6C-2F64D64AC135}
    static const GUID SampleCurveAreaCentroidCommand_UUID =
    { 0x5B5B5B5A, 0xC7AB, 0x4B4B, { 0xAF, 0x6C, 0x2F, 0x64, 0xD6, 0x4A, 0xC1, 0x35 } };
    return SampleCurveAreaCentroidCommand_UUID;
  }
  const wchar_t* EnglishCommandName() override { return L"SampleCurveAreaCentroid"; }
  CRhinoCommand::result RunCommand(const CRhinoCommandContext& context) override ;
};

// The one and only CCommandSampleCurveAreaCentroid object
static class CCommandSampleCurveAreaCentroid theSampleCurveAreaCentroidCommand;

static int RhinoClosedCurveOrientation(const ON_Curve& curve, const ON_Plane& plane)
{
  ON_Xform xform(plane.Origin(), plane.Xaxis(), plane.Yaxis(), plane.Normal());
  return ON_ClosedCurveOrientation(curve, &xform);
}

CRhinoCommand::result CCommandSampleCurveAreaCentroid::RunCommand(const CRhinoCommandContext& context)
{
  CRhinoDoc* doc = context.Document();
  if (nullptr == doc)
    return CRhinoCommand::failure;

  CGetClosedPlanarCurve go;
  go.SetCommandPrompt(L"Select closed, planar curves for centroid calculation");
  go.EnableSubObjectSelect(FALSE);
  go.GetObjects(1, 0);
  if (go.CommandResult() != CRhinoCommand::success)
    return go.CommandResult();

  ON_SimpleArray<const ON_Curve*> curves(go.ObjectCount());
  for (int i = 0; i < go.ObjectCount(); i++)
  {
    const ON_Curve* crv = go.Object(i).Curve();
    if (crv)
      curves.Append(crv);
  }

  if (0 == curves.Count())
    return CRhinoCommand::nothing;

  ON_MassProperties total_mp;
  for (int i = 0; i < curves.Count(); i++)
  {
    const ON_Curve* crv = curves[i];
    if


iv>

• Gestione informatica

• Editor USB Setup.bin

• Session Player

                     ☰

                    <input type="button" value="Nuovo..." onclick="usb_newSetupBin()">
                    <input type="button" value="Aperto..." onclick="usb_openSetupBin()">

                    <input id="id_saveSetupBin" type="button" value="Salva..." onclick="usb_saveSetupBin()">

                Intel® Gestione AMT USB Setup.bin

Inizia da la creazione di un nuovo file, apertura uno esistente
oppure trascina e rilascia un file setup.bin in questa finestra.

                     ☰

                        <input id="srec_toggleviewmode" type="button" value="Attiva / disattiva modalità di visualizzazione" style="display:none" onclick="srec_toggleAspectRatio(1)">

                    <input type="button" id="srec_OpenFileButton" value="Apri il file..." onclick="srec_openfile()">

        <div


tributed 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Book Catalogue.  If not, see <http://www.gnu.org/licenses/>.
 */

package com.eleybourn.bookcatalogue.goodreads;

import java.lang.ref.WeakReference;

import android.widget.ImageView;

import com.eleybourn.bookcatalogue.R;
import com.eleybourn.bookcatalogue.utils.Logger;
import com.eleybourn.bookcatalogue.utils.SimpleTaskQueue;
import com.eleybourn.bookcatalogue.utils.Utils;
import com.eleybourn.bookcatalogue.utils.ViewTagger;

/**
 * Class to store the 'work' data returned via a goodreads search. It also creates a background task
 * to find images and waits for completion.
 *
 * @author Philip Warner
 */
public class GoodreadsWork {
	public String title;
	public String imageUrl;
	public String smallImageUrl;
	public Long bookId;
	public Long workId;
	public Long pubDay;
	public Long pubMonth;
	public Long pubYear;
	public Double rating;
	public Long authorId;
	public String authorName;
	public byte[] imageBytes = null;
	private GetImageTask mTask;
	//private static Integer mIdCounter = 0;
	private WeakReference<ImageView> mImageView = null;

	public GoodreadsWork() {
		super();
	}

	/**
	 * Called in UI thread by background task when it has finished
	 */
	public void handleTaskFinished(byte[] bytes) {
		imageBytes = bytes;

		ImageView v = mImageView.get();
		if (v != null) {
			synchronized(v) {
				// Make sure our view is still associated with us
				if (((GoodreadsWork)ViewTagger.getTag(v, R.id.TAG_GOODREADS_WORK)).equals(this)) {
					v.setImageBitmap( Utils.getBitmapFromBytes(imageBytes) );
					//System.out.println("Work(" + mId + ") set image on view " + v.toString() + " to " +  ((GetImageTask)task).getDescription());
				}
			}
		}
	}

	/**
	 * If the cover image has already been retrieved, put it in the passed view. Otherwise, request
	 * its retrieval and store a reference to the view for use when the image becomes available.
	 *
	 * @param v		ImageView to display cover image
	 */
	public void fillImageView(SimpleTaskQueue queue, ImageView v) {
		synchronized(this) {
			if (this.imageBytes == null) {
				// Image not retrieved yet, so clear any existing image
				v.setImageBitmap(null);
				// Save the view so we know where the image is going to be displayed
				mImageView = new WeakReference<ImageView>(v);
				// If we don't have a task already, start one.
				if (mTask == null) {
					// No task running, so Queue the task to get the image
					try {
						mTask = new GetImageTask(getBestUrl(), this);
						queue.enqueue(mTask);
					} catch (Exception e) {
						Logger.logError(e, "Failed to create task to get image from goodreads");
					}
				}
				// Save the work in the View for verification
				ViewTagger.setTag(v, R.id.TAG_GOODREADS_WORK, this);
				//QueueManager.getQueueManager().bringTaskToFront(this.imageTaskId);
			} else {
				// We already have an image, so just expand it.
				v.setImageBitmap( Utils.getBitmapFromBytes(this.imageBytes) );
				// Clear the work in the View, in case some other job was running
				ViewTagger.setTag(v, R.id.TAG_GOODREADS_WORK, null);
			}
		}
	}

	/**
	 * Return the 'best' (largest image) URL we have.


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

#ifndef CYBER_RECORD_RECORD_MESSAGE_H_
#define CYBER_RECORD_RECORD_MESSAGE_H_

#include <cstdint>
#include <string>

namespace apollo {
namespace cyber {
namespace record {

static constexpr size_t kGB = 1 << 30;
static constexpr size_t kMB = 1 << 20;
static constexpr size_t kKB = 1 << 10;

/**
 * @brief Basic data struct of record message.
 */
struct RecordMessage {
  /**
   * @brief The constructor.
   */
  RecordMessage() {}

  /**
   * @brief The constructor.
   *
   * @param name
   * @param message
   * @param msg_time
   */
  RecordMessage(const std::string& name, const std::string& message,
                uint64_t msg_time)
      : channel_name(name), content(message), time(msg_time) {}

  /**
   * @brief The channel name of the message.
   */
  std::string channel_name;

  /**
   * @brief The content of the message.
   */
  std::string content;

  /**
   * @brief The time (nanosecond) of the message.
   */
  uint64_t time;
};

}  // namespace record
}  // namespace cyber
}  // namespace apollo

#endif  // CYBER_RECORD_RECORD_READER_H_


m=hwc_eventmon next_pid=336 next_prio=112\n\
    hwc_eventmon-336   [000] 50262.630031: 0: C|124|VSYNC|1\n\
    hwc_eventmon-336   [000] 50262.630045: sched_wakeup: comm=EventThread pid=337 prio=111 success=1 target_cpu=000\n\
    hwc_eventmon-336   [000] 50262.630066: sched_switch: prev_comm=hwc_eventmon prev_pid=336 prev_prio=112 prev_state=S ==> next_comm=EventThread next_pid=337 next_prio=111\n\
     EventThread-337   [000] 50262.630101: sched_wakeup: comm=ndroid.launcher pid=655 prio=120 success=1 target_cpu=000\n\
     EventThread-337   [000] 50262.630116: sched_wakeup: comm=SurfaceFlinger pid=236 prio=112 success=1 target_cpu=000\n\
     EventThread-337   [000] 50262.630133: sched_switch: prev_comm=EventThread prev_pid=337 prev_prio=111 prev_state=S ==> next_comm=ndroid.launcher next_pid=655 next_prio=120\n\
 ndroid.launcher-655   [000] 50262.630292: 0: B|655|deliverInputEvent\n\
 ndroid.launcher-655   [000] 50262.630344: sched_wakeup: comm=kworker/0:0 pid=13696 prio=120 success=1 target_cpu=000\n\
 ndroid.launcher-655   [000] 50262.630354: sched_switch: prev_comm=ndroid.launcher prev_pid=655 prev_prio=120 prev_state=R ==> next_comm=kworker/0:0 next_pid=13696 next_prio=120\n\
     kworker/0:0-13696 [000] 50262.630371: sched_switch: prev_comm=kworker/0:0 prev_pid=13696 prev_prio=120 prev_state=S ==> next_comm=SurfaceFlinger next_pid=236 next_prio=112\n\
  SurfaceFlinger-236   [000] 50262.630434: 0: B|124|onMessageReceived\n\
  SurfaceFlinger-236   [000] 50262.630441: 0: B|124|handlePageFlip\n\
  SurfaceFlinger-236   [000] 50262.630450: 0: B|124|lockPageFlip\n\
  SurfaceFlinger-236   [000] 50262.630452: 0: E\n\
  SurfaceFlinger-236   [000] 50262.630457: 0: B|124|lockPageFlip\n\
  SurfaceFlinger-236   [000] 50262.630464: 0: B|124|updateTexImage\n\
  SurfaceFlinger-236   [000] 50262.630480: 0: B|124|acquireBuffer\n\
  SurfaceFlinger-236   [000] 50262.630489: 0: B|124|com.android.launcher/com.android.launcher2.Launcher: 1\n\
  SurfaceFlinger-236   [000] 50262.630491: 0: E\n\
  SurfaceFlinger-236   [000] 50262.630501: 0: C|124|com.android.launcher/com.android.launcher2.Launcher|0\n\
  SurfaceFlinger-236   [000] 50262.630504: 0: E\n\
  SurfaceFlinger-236   [000] 50262.630629: 0: B|124|releaseBuffer\n\
  SurfaceFlinger-236   [000] 50262.630638: 0: B|124|com.android.launcher/com.android.launcher2.Launcher: 0\n\
  SurfaceFlinger-236   [000] 50262.630641: 0: E\n\
  SurfaceFlinger-236   [000] 50262


 "val3",
				"bar1": "val1",
				"bar2": "val2",
			},
		},
		{
			description: "Test delete should get only keys start with foo",
			expected: map[string]string{
				"foo1": "val1",
				"foo2": "val2",
				"foo3": "val3",
			},
			deleteKeys: sets.New("bar1", "bar2"),
		},
		{
			description: "Should get only keys start with bar",
			expected: map[string]string{
				"bar1": "val1",
				"bar2": "val2",
			},
			expireDuration: time.Millisecond * 500,
			expireKeys:     sets.New("foo1", "foo2", "foo3"),
		},
	}

	for _, testCase := range testCases {
		cacheClient, _ := NewInMemoryCache(nil, nil)

		t.Run(testCase.description, func(t *testing.T) {
			err := load(cacheClient, dataSet)
			if err != nil {
				t.Fatalf("Unable to load dataset, got error %v", err)
			}

			if len(testCase.deleteKeys) != 0 {
				err = cacheClient.Del(testCase.deleteKeys.UnsortedList()...)
				if err != nil {
					t.Fatalf("Error delete keys, %v", err)
				}
			}

			if len(testCase.expireKeys) != 0 && testCase.expireDuration != 0 {
				for _, key := range testCase.expireKeys.UnsortedList() {
					err = cacheClient.Expire(key, testCase.expireDuration)
					if err != nil {
						t.Fatalf("Error expire keys, %v", err)
					}
				}
				time.Sleep(testCase.expireDuration)
			}

			got, err := dump(cacheClient)
			if err != nil {
				t.Fatalf("Error dump data, %v", err)
			}

			if diff := cmp.Diff(got, testCase.expected); len(diff) != 0 {
				t.Errorf("%T differ (-got, +expected) %v", testCase.expected, diff)
			}
		})
	}
}
/*
 * Copyright 2024 the KubeSphere Authors.
 * Please refer to the LICENSE file in the root directory of the project.
 * https://github.com/kubesphere/kubesphere/blob/master/LICENSE
 */

package application

import (
	"encoding/json"
	"fmt"
	"net/http"
	"net/http/httptest"
	"net/url"
	"testing"

	appv2 "kubesphere.io/api/application/v2"
)

func TestLoadRepoIndexFromOci(t *testing.T) {
	testRepos := []string{"helmcharts/nginx", "helmcharts/test-api", "helmcharts/test-ui", "helmcharts/demo-app"}
	testTags := []string{"1.0.0", "1.2.0", "1.0.3"}
	testRepo := testRepos[1]
	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		if r.Method == http.MethodGet && (r.URL.Path == "/v2" || r.URL.Path == "/v2/") {
			w.WriteHeader(http.StatusOK)
			return
		}
		if r.Method == http.MethodGet && r.URL.Path == "/v2/_catalog" {
			result := struct {
				Repositories []string `json:"repositories"`
			}{
				Repositories: testRepos,
			}
			if err := json.NewEncoder(w).Encode(result); err != nil {
				t.Errorf("failed to write response: %v", err)
			}
			return
		}
		if r.Method == http.MethodGet && r.URL.Path == fmt.Sprintf("/v2/%s/tags/list", testRepo) {
			res


y=j
_.z=k
_.Q=l
_.as=m
_.at=n
_.ax=o
_.ay=p
_.ch=q
_.CW=r
_.cx=s
_.cy=a0
_.db=a1
_.dx=a2
_.dy=a3
_.fr=a4
_.fx=a5
_.fy=a6
_.go=a7},
R7:function R7(a,b){var _=this
_.c=a
_.d=b
_.b=_.a=$},
La:function La(){},
l8:function l8(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,a0,a1,a2,a3,a4,a5,a6,a7){var _=this
_.a=a
_.b=b
_.c=c
_.d=d
_.e=e
_.f=f
_.r=g
_.w=h
_.x=i
_.y=j
_.z=k
_.Q=l
_.as=m
_.at=n
_.ax=o
_.ay=p
_.ch=q
_.CW=r
_.cx=s
_.cy=a0
_.db=a1
_.dx=a2
_.dy=a3
_.fr=a4
_.fx=a5
_.fy=a6
_.go=a7},
R4:function R4(a,b){var _=this
_.c=a
_.d=b
_.b=_.a=$},
Lb:function Lb(){},
l9:function l9(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,a0,a1,a2,a3,a4,a5,a6,a7){var _=this
_.a=a
_.b=b
_.c=c
_.d=d
_.e=e
_.f=f
_.r=g
_.w=h
_.x=i
_.y=j
_.z=k
_.Q=l
_.as=m
_.at=n
_.ax=o
_.ay=p
_.ch=q
_.CW=r
_.cx=s
_.cy=a0
_.db=a1
_.dx=a2
_.dy=a3
_.fr=a4
_.fx=a5
_.fy=a6
_.go=a7},
R6:function R6(a,b){var _=this
_.c=a
_.d=b
_.b=_.a=$},
L9:function L9(){},
jB:function jB(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,a0,a1,a2,a3,a4,a5,a6,a7){var _=this
_.a=a
_.b=b
_.c=c
_.d=d
_.e=e
_.f=f
_.r=g
_.w=h
_.x=i
_.y=j
_.z=k
_.Q=l
_.as=m
_.at=n
_.ax=o
_.ay=p
_.ch=q
_.CW=r
_.cx=s
_.cy=a0
_.db=a1
_.dx=a2
_.dy=a3
_.fr=a4
_.fx=a5
_.fy=a6
_.go=a7},
R3:function R3(a,b){var _=this
_.c=a
_.d=b
_.b=_.a=$},
Ld:function Ld(){},
jD:function jD(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,a0,a1,a2,a3,a4,a5,a6,a7){var _=this
_.a=a
_.b=b
_.c=c
_.d=d
_.e=e
_.f=f
_.r=g
_.


le north     = -(point.y() / sceneSize.height() - .5) * 2;
    double east = (point.x() / sceneSize.width() - .5) * 2;
    emit positionClicked(north, east);
}

/**
 * @brief Redirect mouse move clicks to control position
 */
void PositionField::mousePressEvent(QMouseEvent *event)
{
    if (event->button() == Qt::LeftButton) {
        mouseMoveEvent(event);
    }
}

void PositionField::paint()
{
    update();
}

void PositionField::paintEvent(QPaintEvent *event)
{
    // Skip painting until the dial file is loaded
    if (!m_renderer->isValid()) {
        qDebug() << "Image file not loaded, not rendering";
    }

    QGraphicsView::paintEvent(event);
}

void PositionField::resizeEvent(QResizeEvent *event)
{
    Q_UNUSED(event);
    fitInView(m_background, Qt::IgnoreAspectRatio);
}

/**
 * @}
 * @}
 */
/**
 ****************************************************************************************
 *
 * @file       configoplinkwidget.cpp
 * @author     The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015-2016.
 *             The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012.
 * @addtogroup GCSPlugins GCS Plugins
 * @{
 * @addtogroup ConfigPlugin Config Plugin
 * @{
 * @brief The Configuration Gadget used to configure the OPLink, Revo and Sparky2 modems
 ***************************************************************************************/
/*
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 3 of the License, or
 * (at your option) any later version.
 *
 * 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 General Public License
 * for more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 */

#include "configoplinkwidget.h"

#include "ui_oplink.h"

#include <uavobjectutilmanager.h>

#include <oplinksettings.h>
#include <oplinkstatus.h>

#include <QMessageBox>
#include <QDebug>

// Channel range and Frequency display
static const int MAX_CHANNEL_NUM   = 250;
static const int MIN_CHANNEL_RANGE = 10;
static const float FREQUENCY_STEP  = 0.040;

ConfigOPLinkWidget::ConfigOPLinkWidget(QWidget *parent) : ConfigTaskWidget(parent, OPLink), statusUpdated(false)
{
    m_oplink = new Ui_OPLinkWidget();
    m_oplink->setupUi(this);

    // must be done before auto binding !
    setWikiURL("OPLink+Configuration");

    addAutoBindings();

    disableMouseWheelEvents();

    connect(this, SIGNAL(connected()), this, SLOT(connected()));

    oplinkStatusObj   = dynamic_cast<OPLinkStatus *>(getObject("OPLinkStatus"));
    Q_ASSERT(oplinkStatusObj);

    oplinkSettingsObj = dynamic_cast<OPLinkSettings *>(getObject("OPLinkSettings"));
    Q_ASSERT(oplinkSettingsObj);

    addWidget(m_oplink->FirmwareVersion);
    addWidget(m_oplink->SerialNumber);
    addWidget(m_oplink->MinFreq);
    addWidget(m_oplink->MaxFreq);
    addWidget(m_oplink->UnbindButton);
    addWidget(m_oplink->ClearDeviceButton);
    addWidget(m_oplink->SignalStrengthBar);
    addWidget(m_oplink->SignalStrengthLabel);

    addWidgetBinding("OP


oryThread()
{
  LOG_INFO("Trajectory thread started");

  while (running_)
  {
    std::unique_lock<std::mutex> lk(tj_mutex_);
    if (!tj_cv_.wait_for(lk, std::chrono::milliseconds(100), [&] { return running_ && has_goal_; }))
      continue;

    LOG_INFO("Trajectory received and accepted");
    curr_gh_.setAccepted();

    auto goal = curr_gh_.getGoal();
    std::vector<TrajectoryPoint> trajectory;
    trajectory.reserve(goal->trajectory.points.size() + 1);

    // joint names of the goal might have a different ordering compared
    // to what URScript expects so need to map between the two
    auto mapping = reorderMap(goal->trajectory.joint_names);

    LOG_INFO("Translating trajectory");

    auto const& fp = goal->trajectory.points[0];
    auto fpt = convert(fp.time_from_start);

    // make sure we have a proper t0 position
    if (fpt > std::chrono::microseconds(0))
    {
      LOG_INFO("Trajectory without t0 recieved, inserting t0 at currrent position");
      trajectory.push_back(TrajectoryPoint(q_actual_, qd_actual_, std::chrono::microseconds(0)));
    }

    for (auto const& point : goal->trajectory.points)
    {
      std::array<double, 6> pos, vel;
      for (size_t i = 0; i < 6; i++)
      {
        size_t idx = mapping[i];
        pos[idx] = point.positions[i];
        vel[idx] = point.velocities[i];
      }
      auto t = convert(point.time_from_start);
      trajectory.push_back(TrajectoryPoint(pos, vel, t));
    }

    double t =
        std::chrono::duration_cast<std::chrono::duration<double>>(trajectory[trajectory.size() - 1].time_from_start)
            .count();
    LOG_INFO("Executing trajectory with %zu points and duration of %4.3fs", trajectory.size(), t);

    Result res;

    LOG_INFO("Attempting to start follower %p", &follower_);
    if (follower_.start())
    {
      if (follower_.execute(trajectory, interrupt_traj_))
      {
        // interrupted goals must be handled by interrupt trigger
        if (!interrupt_traj_)
        {
          LOG_INFO("Trajectory executed successfully");
          res.error_code = Result::SUCCESSFUL;
          curr_gh_.setSucceeded(res);
        }
        else
          LOG_INFO("Trajectory interrupted");
      }
      else
      {
        LOG_INFO("Trajectory failed");
        res.error_code = -100;
        res.error_string = "Connection to robot was lost";
        curr_gh_.setAborted(res, res.error_string);
      }

      follower_.stop();
    }
    else
    {
      LOG_ERROR("Failed to start trajectory follower!");
      res.error_code = -100;
      res.error_string = "Robot connection could not be established";
      curr_gh_.setAborted(res, res.error_string);
    }

    has_goal_ = false;
    lk.unlock();
  }
}

// ROS
#include <ros/ros.h>

// For visualizing things in rviz
#include <rviz_visual_tools/rviz_visual_tools.h>

// C++
#include <string>
#include <vector>

namespace rvt = rviz_visual_tools;

namespace rviz_visual_tools
{
class RvizVisualToolsDemo
{
private:
  // A shared node handle
  ros::NodeHandle nh_;

  // For visualizing things in rviz
  rvt::Rv


// Copyright (c) Microsoft. All rights reserved.
namespace Microsoft.Azure.Devices.Edge.Agent.Core.Commands
{
    using System.Threading;
    using System.Threading.Tasks;
    using Microsoft.Azure.Devices.Edge.Storage;
    using Microsoft.Azure.Devices.Edge.Util;

    public class RemoveFromStoreCommand<T> : ICommand
    {
        readonly IEntityStore<string, T> store;
        readonly string key;

        public RemoveFromStoreCommand(IEntityStore<string, T> store, string key)
        {
            this.store = Precondition


tEmbeddingParam.builder().apiKey(apiKey).model(modelName)
                    .textType(textType).texts(subList.stream().map(TextSegment::text).collect(Collectors.toList()))
                    .build();
                try {
                    TextEmbeddingResult generationResult = embedding.call(param);
                    // total_tokens are the same as input_tokens in the embedding model
                    return Optional.of(generationResult).map(TextEmbeddingResult::getOutput)
                        .map(TextEmbeddingOutput::getEmbeddings).orElse(Collections.emptyList()).stream()
                        .map(TextEmbeddingResultItem::getEmbedding)
                        .map(doubleList -> doubleList.stream().map(Double::floatValue).collect(Collectors.toList()))
                        .map(Embedding::from).collect(Collectors.toList());
                }
                catch (Exception e) {
                    throw new UtilException(e, ErrorCodeDef.LLM_ERROR, e.getMessage());
                }
            }).flatMap(Collection::stream).collect(Collectors.toList());
        return Response.from(embeddingList);
    }

    /**
     * Description:

     *
     * @author 王伟

     * @taskId

     * @return

     */
    public static Builder builder() {
        return new Builder();
    }

    /**
     * <Description>

     *
     * @author 王伟

     * @version 1.0

     * @taskId

     * @CreateDate 2023年10月26日

     * @since V1.0

     * @see com.hbasesoft.framework.langchain4j.dashscope

     */
    public static class Builder {

        /** apiKey */
        private String apiKey;

        /** modelName */
        private String modelName;

        /**
         * Description:

         *
         * @author 王伟

         * @taskId

         * @param apikey
         * @return

         */
        public Builder apiKey(final String apikey) {
            this.apiKey = apikey;
            return this;
        }

        /**
         * Description:

         *
         * @author 王伟

         * @taskId

         * @param modelname
         * @return

         */
        public Builder modelName(final String modelname) {
            this.modelName = modelname;
            return this;
        }

        /**
         * Description:

         *
         * @author 王伟

         * @taskId

         *

         */
        protected void ensureOptions() {
            if (Utils.isNullOrBlank(apiKey)) {
                throw new IllegalArgumentException("DashScope api key must be defined. "
                    + "It can be generated here: https://dashscope.console.aliyun.com/apiKey");
            }
            modelName = Utils.isNullOrBlank(modelName) ? QwenModelName.TEXT_EMBEDDING_V1 : modelName;
        }

        /**
         * Description:

         *
         * @author 王伟

         * @taskId

         * @return

         */
        public QwenEmbeddingModel build() {
            ensureOptions();
            return new QwenEmbeddingModel(apiKey, modelName);
        }
    }

}
/****************************************************************************************
 Copyright © 2003-2012 hbasesoft Corporation. All rights reserved. Reproduction or

 transmission in whole or in part, in any form or by any means, electronic, mechanical

 or otherwise, is prohibited without the prior written consent of the copyright owner.

 ****************************************************************************************/
package com.hbasesoft.framework.message.core.event;

import java.io.Closeable;
import java.util.List;

import org.apache.commons.collections4.CollectionUtils;

import com.


#ifndef VC_STATE_H
#define VC_STATE_H
#include <iostream>
#include <string>
#include <vector>
#include <cmath>
#include <ros/ros.h>
#include <sensor_msgs/Imu.h>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <cv_bridge/cv_bridge.h>
#include <opencv2/features2d.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/calib3d.hpp>
#include <Eigen/Dense>
#include <Eigen/Core>
#include <Eigen/Geometry>
#include "vc_state/img_tools.h"
// #include "vc_state/math_custom.h"

// # Lee position controller parameters
// position_gain: {x: 6, y: 6, z: 6}
// velocity_gain: {x: 4.7, y: 4.7, z: 4.7}
// attitude_gain: {x: 2, y: 3, z: 0.15}
// angular_rate_gain: {x: 0.4, y: 0.52, z: 0.18}

using namespace std;

typedef struct vecDist
{
        int i;        // index i
        int j;        // index j p_i * p_j
        double dist;  // distance between p2_i and p2_j
        double dist2; // distance between p1_i and p1_j
} vecDist;

class vc_state {
	public:
		/* defining where the drone will move and integrating system*/
		float X= 0.0,Y= 0.0,Z= 0.0,Yaw= 0.0,Pitch= 0.0,Roll= 0.0;
        Eigen::Quaterniond quad;
		bool initialized=false;
// 		float t,dt;
// 		float Kv,Kw;

        /* Control parameters  */
        float Vx=0.0,Vy=0.0,Vz=0.0;
        float Vx_est=0.0, Vy_est=0.0, Vz_est=0.0;
        float Vyaw=0.0, Vroll = 0.0, Vpitch = 0.0;
        float Kv=1.0;
        float Kw=1.0;
        float dt=0.025;
        float t=0;
        float lambda = 0;

        // Image proessing parameters
        vc_parameters params;
        //  Desired configuration
        vc_desired_configuration desired_configuration;

        //  Best approximations
        bool selected = false;
        cv::Mat t_best;
        cv::Mat R_best; //to save the rot and trans

        /* ROS pub */
		ros::Publisher ros_pub;

        // Methods
		vc_state();

        std::pair<Eigen::VectorXd,float> update();
        void load(const ros::NodeHandle &nh);
		void initialize(const float &x,
                        const float &y,
                        const float &z,
                        const float &yaw);
//         int (*controller )[1];
};

//  Controllers

// int homography(cv::Mat img,
//                vc_state & state,
//                vc_homograpy_matching_result & matching_result
//               );

// int chaumette(cv::Mat img,
//                vc_state & state,
//                vc_homograpy_matching_result & matching_result
//               );

int GUO(cv::Mat img,
        vector<float> depthVec,
               vc_state & state,
               vc_homograpy_matching_result & matching_result
              );

// Controller selection array only for vc_controller.h
#ifdef VC_CONTROLLER_H
typedef int (*funlist) (cv::Mat img,
                        vector<float> depthVec,
                        vc_state & state,
                        vc_homograpy_matching_result & matching_result
                       );
funlist controllers[] = {&homography, &chaumette, &GUO};
#endif

#endif


test_binary_more_syscalls,
	test_text_single_command, -- command in text mode after execute commands in binary mode
	test_text_prompt, -- new prompt when command is finished
}
return tests


                                        },[
                                            m('i',{class: c('fa', 'fa-close')})
                                        ])
                                    ])
                                ])
                            ]),
                            _.map(this.selectMoves, (moveInfo, num) => {
                                const forkNum: number = +num;
                                const isActive: boolean = (kifuData.getFork(this.forkPoint) === forkNum)? true : false;

                                return [
                                    m('div', {
                                        class: c('c-kifu_row', 'c-kifu_forkRow', (isActive) ? 'is-stream' : null),
                                        onclick: () => {
                                            kifuData.switchFork(this.forkPoint, forkNum);
                                            viewData.openFork = false;
                                        }
                                    }, [
                                        m('div', {class: c('c-kifu_move_info')}, [
                                            m('div', {class: c('c-kifu_number')}, num + ':'),
                                            m('div', {class: c('c-kifu_move')}, kifuData.getForkMove(this.forkPoint, forkNum).moveName),
                                            (forkNum !== 0 && kifuData.getFork(this.forkPoint) !== forkNum) ?
                                            m('div', {class: c('c-kifu_notation')}, [
                                                m('span',
                                                    {
                                                        class: c('c-kifu_notation_close', 'icon', 'is-small'),
                                                        onclick: (e: MouseEvent) => {
                                                            // TODO:分岐の削除処理
                                                            kifuData.deleteFork(this.forkPoint, forkNum);
                                                            this.selectMoves = kifuData.getForkList(this.forkPoint);
                                                            e.stopPropagation();
                                                        }
                                                    },[
                                                        m('i',{class: c('fa', 'fa-close')})
                                                    ])
                                            ])
                                            :
                                            null
                                        ])
                                    ])
                                ];
                            }),
                            (this.forkPoint === (kifuData.moveNum) || (this.forkPoint === (kifuData.moveNum + 1) && viewData.addtype === ADDTYPE.FORK)) ?
                            m('div', {
                                class: c('c-kifu_row', 'c-kifu_addRow'),
                                onclick: () => {
                                    // 分岐追加対象の盤面に戻る
                                    kifuData.moveNum　--;
                                    viewData.switchInput(kifuData.moveNum, kifuData.color, ADDTYPE.FORK);
                                }
                            }, [
                                m('div', {class: c('c-kifu_move_info')}, [
                                    m('div', {class: c('c-kifu_number')},
                                    [
                                        ((viewData.state === STATE.INPUT || viewData.state === STATE.TOINPUT || viewData.state === STATE.NARIINPUT) && viewData.addtype === ADDTYPE.FORK) ?
                                        m('span',{class: c('icon', 'is-small')},[
                                            m('i',{class: c('fa', 'fa-exclamation-circle')})
                                        ])
                                        :
                                        m('span',{class: c('icon', 'is-small')},[
                                            m('i',{class: c('fa', 'fa-plus')})
                                        ]),
                                        ':'
                                    ]),

                                    ((viewData.state === STATE.INPUT || viewData.state === STATE.TOINPUT || viewData.state === STATE.NARIINPUT) && viewData.addtype === ADDTYPE.FORK) ?
                                    m('div', {class: c('c-kifu_move', 'c-kifu


using System;
using System.IO;
using System.Threading.Tasks;
using FFImageLoading.Work;
using FFImageLoading.Config;
using FFImageLoading.Helpers;
using FFImageLoading.Extensions;

#if __MACOS__
using AppKit;
using PImage = AppKit.NSImage;
using WebPCodec = WebP.Mac.WebPCodec;
#elif __IOS__
using UIKit;
using PImage = UIKit.UIImage;
using WebPCodec = WebP.Touch.WebPCodec;
#endif

namespace FFImageLoading.Decoders
{
    public class WebPDecoder : IDecoder<PImage>
    {
        WebPCodec _decoder;

        public Task<IDecodedImage<PImage>> DecodeAsync(Stream stream, string path, ImageSource source, ImageInformation imageInformation, TaskParameter parameters)
        {
            if (_decoder == null)
                _decoder = new WebPCodec();

            var result = new DecodedImage<PImage>();
            result.Image = _decoder.Decode(stream);

            var downsampleWidth = parameters.DownSampleSize?.Item1 ?? 0;
            var downsampleHeight = parameters.DownSampleSize?.Item2 ?? 0;