Incremental V 2 Message Leg Groups
smallx_orderbookfeed_sbe_v2_2.multileg_definition_incremental_v_2_message_leg_groups.dissect = function(buffer, offset, packet, parent)
  -- Optionally add dynamic struct element to protocol tree
  if show.multileg_definition_incremental_v_2_message_leg_groups then
    local length = smallx_orderbookfeed_sbe_v2_2.multileg_definition_incremental_v_2_message_leg_groups.size(buffer, offset)
    local range = buffer(offset, length)
    local display = smallx_orderbookfeed_sbe_v2_2.multileg_definition_incremental_v_2_message_leg_groups.display(buffer, packet, parent)
    parent = parent:add(omi_smallx_orderbookfeed_sbe_v2_2.fields.multileg_definition_incremental_v_2_message_leg_groups, range, display)
  end

  return smallx_orderbookfeed_sbe_v2_2.multileg_definition_incremental_v_2_message_leg_groups.fields(buffer, offset, packet, parent)
end

-- Instrument Update Action
smallx_orderbookfeed_sbe_v2_2.instrument_update_action = {}

-- Size: Instrument Update Action
smallx_orderbookfeed_sbe_v2_2.instrument_update_action.size = 1

-- Display: Instrument Update Action
smallx_orderbookfeed_sbe_v2_2.instrument_update_action.display = function(value)
  -- Check if field has value
  if value == nil or value == 0 then
    return "Instrument Update Action: No Value"
  end

  if value == "A" then
    return "Instrument Update Action: Add (A)"
  end
  if value == "D" then
    return "Instrument Update Action: Delete (D)"
  end
  if value == "M" then
    return "Instrument Update Action: Modify (M)"
  end

  return "Instrument Update Action: Unknown("..value..")"
end

-- Dissect: Instrument Update Action
smallx_orderbookfeed_sbe_v2_2.instrument_update_action.dissect = function(buffer, offset, packet, parent)
  local length = smallx_orderbookfeed_sbe_v2_2.instrument_update_action.size
  local range = buffer(offset, length)

  -- parse as byte
  local value = range:uint()

  -- check if value is non zero
  if value ~= 0 then
    value = range:string()
  end

  local display = smallx_orderbookfeed_sbe_v2_2.instrument_update_action.display(value, buffer, offset, packet, parent)

  parent:add(omi_smallx_orderbookfeed_sbe_v2_2.fields.instrument_update_action, range, value, display)

  return offset + length, value
end

-- Incremental Message Instructions
smallx_orderbookfeed_sbe_v2_2.incremental_message_instructions = {}

-- Size: Incremental Message Instructions
smallx_orderbookfeed_sbe_v2_2.incremental_message_instructions.size = 2

-- Display: Incremental Message Instructions
smallx_orderbookfeed_sbe_v2_2.incremental_message_instructions.display = function(buffer, packet, parent)
  local display = ""

  -- Is Book Reset flag set?
  if buffer:bitfield(9) > 0 then
    display = display.."Book Reset|"
  end
  -- Is Book End flag set?
  if buffer:bitfield(10) > 0 then
    display = display.."Book End|"
  end
  -- Is Book Begin flag set?
  if buffer:bitfield(11) > 0 then
    display = display.."Book Begin|"
  end
  -- Is Instrumen


>,
    IntoProtocolsHandlerSelect<
        <Mdns as NetworkBehaviour>::ProtocolsHandler,
        <Relay as NetworkBehaviour>::ProtocolsHandler,
    >,
>;
#[cfg(all(not(feature = "mdns"), feature = "relay"))]
type ProtoHandler<Rq, Rs> =
    IntoProtocolsHandlerSelect<ConnectionHandler<Rq, Rs>, <Relay as NetworkBehaviour>::ProtocolsHandler>;
#[cfg(all(feature = "mdns", not(feature = "relay")))]
type ProtoHandler<Rq, Rs> =
    IntoProtocolsHandlerSelect<ConnectionHandler<Rq, Rs>, <Mdns as NetworkBehaviour>::ProtocolsHandler>;

#[cfg(not(any(feature = "mdns", feature = "relay")))]
type ProtoHandler<Rq, Rs> = ConnectionHandler<Rq, Rs>;

// Future for a pending response to a sent [`FirewallRequest::PeerSpecificRule`].
type PendingPeerRuleRequest<TRq> = BoxFuture<'static, (PeerId, Option<FirewallRules<TRq>>)>;
// Future for a pending responses to a sent [`FirewallRequest::RequestApproval`].
type PendingApprovalRequest = BoxFuture<'static, (RequestId, bool)>;

const EMPTY_QUEUE_SHRINK_THRESHOLD: usize = 100;

/// Requests and failure events emitted by the [`NetBehaviour`].
#[derive(Debug)]
pub enum BehaviourEvent<Rq, Rs> {
    /// An inbound request was received from a remote peer.
    /// The request was checked and approved by the firewall.
    ReceivedRequest {
        request_id: RequestId,
        peer: PeerId,
        /// Request from the remote peer.
        request: Rq,
        /// Channel for returning the response
        response_tx: oneshot::Sender<Rs>,
    },
    /// A failure occurred in the context of receiving an inbound request and sending a response.
    InboundFailure {
        request_id: RequestId,
        peer: PeerId,
        failure: InboundFailure,
    },
    /// The response for a previously sent request was received.
    ReceivedResponse {
        request_id: RequestId,
        peer: PeerId,
        /// Response from the remote peer.
        response: Rs,
    },
    /// A failure occurred in the context of sending an outbound request and receiving a response.
    OutboundFailure {
        request_id: RequestId,
        peer: PeerId,
        failure: OutboundFailure,
    },
}

/// Configuration of the [`NetBehaviour`].
pub struct NetBehaviourConfig<TRq: Clone> {
    /// Supported versions of the `MessageProtocol`.
    pub supported_protocols: SmallVec<[MessageProtocol; 2]>,
    /// Timeout for inbound and outbound requests.
    pub request_timeout: Duration,
    /// Keep-alive timeout of idle connections.
    pub connection_timeout: Duration,
    /// Configuration for the firewall that checks every outbound and inbound request.
    pub firewall: FirewallConfiguration<TRq>,
}

impl<TRq: Clone> Default for NetBehaviourConfig<TRq> {
    fn default() -> Self {
        Self {
            supported_protocols: smallvec![MessageProtocol::new_version(1, 0, 0)],
            connection_timeout: Duration::from_secs(10),
            request_timeout: Duration::from_secs(10),
            firewall: FirewallConfiguration::default(),
        }
    }
}

/// Protocol for customization for the [`Swarm`][libp2p::Swarm].
///
/// The protocol is based on the [`RequestResponse`][<https://docs.rs/libp2p-request-response>] protocol from libp2p
/// and integrates the libp2p


unsigned{false};
    auto input_x_scale = GetScaleValueForNode(matmul_in_x, &is_x_unsigned);
    auto input_y_scale = GetScaleValueForNode(matmul_in_y, &is_y_unsigned);
    PADDLE_ENFORCE_EQ(is_x_unsigned,
                      is_y_unsigned,
                      common::errors::InvalidArgument(
                          "Matmul inputs should have the same "
                          "attribute of signed/unsigned, but they "
                          "are different: x(%d), y(%d).",
                          is_x_unsigned,
                          is_y_unsigned));

    if (with_residual) {
      GET_IR_NODE_FROM_SUBGRAPH(
          matmul_residual_data, matmul_residual_data, matmul_pattern);
      if (!AreScalesPresentForNodes({matmul_residual_data})) {
        MarkAndLogCannotQuantizeOp(matmul_op,
                                   "No scale available for the operator");
        return;
      }
      bool is_residual_unsigned{false};
      auto residual_scale =
          GetScaleValueForNode(matmul_residual_data, &is_residual_unsigned);

      QuantizeInput(g,
                    matmul_op,
                    matmul_residual_data,
                    "ResidualData",
                    residual_scale,
                    is_residual_unsigned,
                    "Scale_in_eltwise");
    }

    QuantizeInput(g,
                  matmul_op,
                  matmul_in_x,
                  "X",
                  input_x_scale,
                  is_x_unsigned,
                  "Scale_x");
    QuantizeInput(g,
                  matmul_op,
                  matmul_in_y,
                  "Y",
                  input_y_scale,
                  is_y_unsigned,
                  "Scale_y");

    // if quantization scale is missing for output tensor, return fp32 data
    if (AreScalesPresentForNodes({matmul_out})) {
      bool is_output_unsigned{false};
      auto output_scale = GetScaleValueForNode(matmul_out, &is_output_unsigned);
      DequantizeOutput(g,
                       matmul_op,
                       matmul_out,
                       "Out",
                       output_scale,
                       is_output_unsigned,
                       "Scale_out");
    } else {
      matmul_op->Op()->SetAttr("force_fp32_output", true);
    }

    ++quantize_matmul_count;
  };
  gpd(graph, handler);
  AddStatis(quantize_matmul_count);
  LogQuantizedOpsCounter("matmul",
                         quantize_matmul_count,
                         (with_residual ? "with residual connection" : ""));
}

void CPUQuantizePass::QuantizeElementwise(
    Graph* graph, const std::string& elementwise_type) const {
  GraphPatternDetector gpd;
  auto pattern = gpd.mutable_pattern();
  patterns::ElementwiseOp elementwise_pattern{pattern, name_scope_};

  elementwise_pattern(elementwise_type);

  int quantize_elementwise_count = 0;
  auto handler = [&](const GraphPatternDetector::subgraph_t& subgraph,
                     Graph* g) {
    VLOG(4) << "Quantize " + elementwise_type + " op";
    GET_IR_NODE_FROM_SUBGRAPH(
        elementwise_op, elementwise_op, elementwise_pattern);

    // skip if should not be quantized
    if (!platform::HasOpINT8DataType(elementwise_op->Op())) {
      LogQuantizationDisabled(elementwise_op);
      return;
    }

    auto x_name = elementwise_op->Op()->Input("X");
    auto y


georgia,serif;
  font-style: normal;
  font-weight: 400;
}

button {
  color: hsl(3, 18%, 43%);
  background-color: hsl(39, 40%, 90%);
  text-shadow: 0 1px hsla(3, 18%, 100%, .5);
  font-family: "proxima-nova-soft",helvetica,sans-serif;
  font-style: normal;
  font-weight: 700;
  font-size: 14px;
  text-transform:uppercase;
  letter-spacing:.1em;
  border: none;
}

button.primary {
  background-color: #e38f71;
  color: white;
  text-shadow: 0 -1px hsla(3, 18%, 43%, .5);
}

#profile-card, .card {
  background-color: hsl(39, 40%, 90%);
  border: 1px solid hsla(0,0%,100%,.6);
  box-shadow: 0 5px 8px hsla(0,0%,0%,.3);
}

/* easeInOutCubic */
/*
.gss-ready button, .gss-ready #name, .gss-ready #avatar {

  transition-property: transform;
  transition-duration: .5s;

  -webkit-transition-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1.000);
     -moz-transition-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1.000);
       -o-transition-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1.000);
          transition-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1.000);
}
*/.app-not-ready body {
  opacity: 0;
}

.app-ready body {
  opacity: 1;
}

html {
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}

body {
  background: hsl(220,20%,91%) url("http://img.rituwall.com.s3.amazonaws.com/bg/et/body-bg14.png") 0 0 repeat;
  color: hsl(220, 20%, 20%);
}

h1, h2, p {
  text-shadow:
      0 1px white
    , 0 -1px white
    ;
}

#message h1 {
  font-size: 6em;
  line-height: 1em;
  margin-left: 0px;
  font-weight: 1000;
  font-family: "HelveticaNeue-CondensedBold", "Helvetica Neue", Helvetica, Arial, sans-serif;
  text-shadow: 0 1px hsl(220, 10%, 60%) , 0 -2px white !important;
  color:  hsl(220, 10%, 92%);
}

#panel {
  height: 200px;
  border: solid 1px hsl(220,20%,95%);
  border-top: solid 1px white;
  box-shadow:
      0 1px 0px hsla(220,10%,50%,.6);
  box-shadow:
      0 1px 0px hsla(220,10%,50%,.6)
    , 0 0px 2px 1px hsla(220,10%,50%,.2)
    , inset 0 -30px 30px hsla(220,20%,88%,.3)
    , inset 0 30px 30px hsla(220,20%,99%,.5)
    ;

  background-color:hsl(220, 10%, 94%);;
  -webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;
}

.inner-panel {
  background:
      hsl(220,10%,97%)
    ; /*url("http://img.rituwall.com.s3.amazonaws.com/bg/et/body-bg8.png") */
  box-shadow:
      inset 0 1px 1px


et nbVotes(newNbVotes: number) {
      this._nbVotes = newNbVotes;
    }

    get bitweetId(): number {
      return this._bitweetId;
    }
    set bitweetId(newBitweetId: number) {
      this._bitweetId = newBitweetId;
    }

    get userId(): number {
      return this._userId;
    }
    set userId(newUserId: number) {
      this._userId = newUserId;
    }

    get username(): string {
      return this._username;
    }
    set username(newUsername: string) {
      this._username = newUsername;
    }

}
import uuid from 'uuid/v4';
import realm from './models/index';
import defaultMoods from './models/defaultMoods';
import store from '../redux/store';
import MoodInterface from '../types/mood';
import * as reduxMoods from '../redux/mood';

const getMoodById = (id: string) => {
  return realm.objectForPrimaryKey('Mood', id);
};

const getMoods = () => {
  return realm.objects('Mood').sorted('rating');
};

const getEnabledMoods = () => {
  return realm
    .objects('Mood')
    .filtered('enabled')
    .sorted('rating');
};

const createMood = opts => {
  realm.write(() => {
    const now = new Date();
    const { moodName, icon, rating } = opts;
    const params = {
      id: uuid(),
      moodName,
      icon,
      rating,
      createdAt: now,
      modifiedAt: now,
      system: false,
      enabled: true
    };

    const mood = realm.create('Mood', params);
    store.dispatch(reduxMoods.newMood({ mood }));
  });
};

const editMood = opts => {
  realm.write(() => {
    const now = new Date();
    const { id, moodName, icon, rating } = opts;
    const mood: MoodInterface = getMoodById(id);

    mood.moodName = moodName;
    mood.icon = icon;
    mood.rating = rating;
    mood.modifiedAt = now;

    store.dispatch(reduxMoods.editMood({ mood }));
  });
};

const installDefaultMoods = () => {
  realm.write(() => {
    const now = Date();
    defaultMoods.all.forEach(mood => {
      const { moodName, icon, rating } = mood;
      realm.create('Mood', {
        id: uuid(),
        moodName,
        icon,
        rating,
        createdAt: now,
        modifiedAt: now
      });
    });
  });
};

const deleteMood = (mood: MoodInterface) => {
  realm.write(() => {
    const id = mood.id;
    realm.delete(mood);
    store.dispatch(reduxMoods.deleteMood({ id }));
  });
};

export default {
  createMood,
  getMoods,
  installDefaultMoods,
  editMood,
  deleteMood
};
import { Context, Vote, Device } from './types';

export class DataService {
  //TODO Device ändern:
    private deviceID;
    private deviceToken;
    private deviceName;
    private subjectProject: Context;
    private currentPositionQuestion=0;
    private contextID;

    subjectp:Vote[]=[];
    getPositionQuestion(){
      return this.currentPositionQuestion;
    }

    setPositionQuestion(position: number){
      this.currentPositionQuestion=position;
    }
    updatePositionQuestion(){
      this.currentPositionQuestion+=1;
    }

    /*clearContext() {
        this.subjectProject.next();
    }*/

    getContext() {
      return this.subjectProject;
    }
    sendContext(project1: Context ) {
      this.subjectProject = project1;
    }

    /*sendVote(project: Vote[] ) {
      this.subjectProject = project;
    }*/


# poultry_farm_management/__manifest__.py
{
    'name': 'Poultry Farm Management',
    'version': '17.0.1.0.0',
    'category': 'Agriculture',
    # 'sequence': -200,
    'summary': 'Manage poultry purchases, sales, feed, medicine, HR and finance for multi-branch farms',
    'description': """
        Poultry Farm Management system:
        - Multi-branch (one main + two sub-branches)
        - Human Resources (employees, attendance placeholder, salaries)
        - Finance (income/expenses, branch reports)
        - Farm (poultry purchase/sales, feed & medicine inventory, vaccination schedules)
        """,
    'author': 'Nasratullah Shafiq / Generated',
    'depends': ['base', 'hr', 'account'],
    'data': [
        'security/ir.model.access.csv',

        # Wizard and view files
        'views/finance_report_wizard_views.xml',
        'views/branch_views.xml',
        'views/employee_views.xml',
        'views/finance_views.xml',
        'views/farm_views.xml',
        'views/feed_views.xml',
        'views/sales_views.xml',
        'views/medicine_views.xml',
        'views/poultry_views.xml',
        'views/poultry_sale_report_wizard_views.xml',
        'views/poultry_purchase_report_wizard_views.xml',
        'views/poultry_item_views.xml',
        'views/poultry_stock_move_views.xml',
        'views/death_views.xml',

        # Menus should load first
        'views/menu.xml',

        # Reports - actions before templates
        'report/finance_report_action.xml',
        'report/finance_report_template.xml',
        'report/poultry_purchase_report_template.xml',
        'report/poultry_sales_report_template.xml',
    ],

    'installable': True,
    'application': True,
    'license': 'LGPL-3',
}


9 64 90.12V320H0c0 42.84 28.25 78.69 66.99 91.05C79.42 468.72 130.6 512 192 512s112.58-43.28 125.01-100.95C355.75 398.69 384 362.84 384 320h-64v-37.88c37.2-13.22 64-48.38 64-90.12zM192 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\"]\n};\nvar faTrain = {\n  prefix: 'fas',\n  iconName: 'train',\n  icon: [448, 512, [], \"f238\", \"M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zm-48 136V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24zm-176 64c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56z\"]\n};\nvar faTram = {\n  prefix: 'fas',\n  iconName: 'tram',\n  icon: [512, 512, [], \"f7da\", \"M288 64c17.7 0 32-14.3 32-32S305.7 0 288 0s-32 14.3-32 32 14.3 32 32 32zm223.5-12.1c-2.3-8.6-11-13.6-19.6-11.3l-480 128c-8.5 2.3-13.6 11-11.3 19.6C2.5 195.3 8.9 200 16 200c1.4 0 2.8-.2 4.1-.5L240 140.8V224H64c-17.7 0-32 14.3-32 32v224c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H272v-91.7l228.1-60.8c8.6-2.3 13.6-11.1 11.4-19.6zM176 384H80v-96h96v96zm160-96h96v96h-96v-96zm-32 0v96h-96v-96h96zM192 96c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faTransgender = {\n  prefix: 'fas',\n  iconName: 'transgender',\n  icon: [384, 512, [], \"f224\", \"M372 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C198.5 104.1 172.2 96 144 96 64.5 96 0 16


 {
    -webkit-transition-delay: 100ms;
    transition-delay: 100ms;
  }
  .o_main_header > .o_main_header_main > .o_primary_nav > li.open > .o_secondary_nav .container > .row > div:nth-child(2) {
    -webkit-transition-delay: 200ms;
    transition-delay: 200ms;
  }
  .o_main_header > .o_main_header_main > .o_primary_nav > li.open > .o_secondary_nav .container > .row > div:nth-child(3) {
    -webkit-transition-delay: 300ms;
    transition-delay: 300ms;
  }
  .o_main_header > .o_main_header_main > .o_primary_nav > li.open > .o_secondary_nav .container > .row > div:nth-child(4) {
    -webkit-transition-delay: 400ms;
    transition-delay: 400ms;
  }
  .o_main_header > .o_main_header_main > .o_primary_nav > li.open > .o_secondary_nav .o_store_link {
    max-height: 50px;
    -webkit-transition: max-height 500ms cubic-bezier(0.55, 0, 0.1, 1) 300ms;
    -moz-transition: max-height 500ms cubic-bezier(0.55, 0, 0.1, 1) 300ms;
    -o-transition: max-height 500ms cubic-bezier(0.55, 0, 0.1, 1) 300ms;
    transition: max-height 500ms cubic-bezier(0.55, 0, 0.1, 1) 300ms;
  }
  .o_main_header > .o_main_header_main > .o_primary_nav > li.open > .o_secondary_nav::before {
    opacity: 0.5;
  }
}
.o_main_header > .o_main_header_main > .o_primary_nav .o_secondary_nav {
  width: 100%;
  padding: 15px 0 65px;
  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.05);
}
@media (min-width: 992px) {
  .o_main_header > .o_main_header_main > .o_primary_nav .o_secondary_nav > .container > .row {
    margin-left: -45px;
    margin-right: -45px;
  }
  .o_main_header > .o_main_header_main > .o_primary_nav .o_secondary_nav > .container > .row > div {
    padding-left: 45px;
    padding-right: 45px;
  }
}
.o_main_header > .o_main_header_main > .o_primary_nav .o_secondary_nav > .container > .row > div {
  font-size: 16px;
  overflow: hidden;
}
@media (min-width: 768px) {
  .o_main_header > .o_main_header_main > .o_primary_nav .o_secondary_nav > .container > .row > div {
    height: 340px;
    padding-top: 10px;
  }
  .o_main_header > .o_main_header_main > .o_primary_nav .o_secondary_nav > .container > .row > div + div {
    border-left: 1px solid #F2F2F2;
  }
}
.o_main_header > .o_main_header_main > .o_primary_nav .o_secondary_nav > .container > .row > div ul {
  position: relative;
  list-style: none;
  padding: 0;
}
.o_main_header > .o_main_header_main > .o_primary_nav .o_secondary_nav > .container > .row > div ul > li {
  height: 30px;
  -webkit-transition: all 300ms cubic


]
	.loc 1 183 0
	adds	r0, r2, #7	@ i, i,
	adds	r2, r2, #8	@ i, i,
	.loc 1 184 0
	strb	r4, [r3, #5]	@ tmp609, MEM[base: D.14631_169, offset: 4294967295B]
	ldrb	r4, [lr, r0]	@ zero_extendqisi2	@ MEM[base: D.14155_95, index: i_34, offset: 0B], MEM[base: D.14155_95, index: i_34, offset: 0B]
	eor	r1, r5, r6	@ tmp614, D.14283, MEM[base: D.14155_95, index: i_34, offset: 0B]
	eor	r5, ip, r4	@ tmp618, D.14283, MEM[base: D.14155_95, index: i_34, offset: 0B]
	strb	r1, [r3, #6]	@ tmp614, MEM[base: D.14631_169, offset: 4294967295B]
	adds	r3, r3, #8	@ ivtmp.241, ivtmp.241,
	.loc 1 183 0
	cmp	r7, r2	@ D.14157, i
	.loc 1 184 0
	strb	r5, [r3, #-1]	@ tmp618, MEM[base: D.14631_169, offset: 4294967295B]
	.loc 1 183 0
	bhi	.L135	@,
	b	.L128	@
.LVL116:
.L230:
.LBE39:
.LBE40:
.LBE36:
.LBB41:
	.loc 1 133 0
	ldrd	r2, [sp, #32]	@ tmp347,,
	mvns	r2, r2	@ tmp347, tmp347
	mvns	r4, r3	@,
	adds	r0, r2, r0	@ tmp349, tmp347, tmp6
	adc	r3, r4, r1	@,, tmp14
	lsrs	r1, r0, #4	@ tmp488, tmp349,
	ldr	r0, [sp, #24]	@, %sfp
	movs	r2, #15	@,
	orr	r1, r1, r3, lsl #28	@,, tmp488,,
	movs	r3, #4	@,
	bl	tweakey_set	@
.LVL117:
	b	.L124	@
.LVL118:
.L139:
.LBE41:
	.loc 1 146 0
	movs	r2, #0	@ prephitmp.197,
	movs	r3, #0	@ prephitmp.197,
	mov	fp, #0	@ idx,
	b	.L125	@
.LVL119:
.L137:
.LBB42:
	.loc 1 124 0
	movs	r4, #0	@,
	movs	r5, #0	@,
	strd	r4, [sp, #32]	@,,
	movs	r4, #0	@ idx,
	b	.L121	@
.LVL120:
.L229:
.LBE42:
	.loc 1 174 0
	mov	r0, sl	@, m
	mov	r1, r5	@, tmp473
	ldr	r2, [r8, #0]	@, *outputmlen_7(D)
	bl	memset	@
.LVL121:
	.loc 1 175 0
	mov	r0, #-1	@ D.14168,
	b	.L136	@
.LVL122:
.L142:
.LBB43:
	.loc 1 183 0
	mov	ip, #0	@ i,
	b	.L132	@
.LBE43:
	.cfi_endproc
.LFE1883:
	.size	crypto_aead_decrypt,


at, $f16                  ## $f16 = 2.00
/* 01720 80A169A0 260401AC */  addiu   $a0, $s0, 0x01AC           ## $a0 = 000001AC
/* 01724 80A169A4 46083282 */  mul.s   $f10, $f6, $f8
/* 01728 80A169A8 46105480 */  add.s   $f18, $f10, $f16
/* 0172C 80A169AC 0C02927F */  jal     SkelAnime_FrameUpdateMatrix

/* 01730 80A169B0 E61201C8 */  swc1    $f18, 0x01C8($s0)          ## 000001C8
/* 01734 80A169B4 8FBF001C */  lw      $ra, 0x001C($sp)
/* 01738 80A169B8 8FB00018 */  lw      $s0, 0x0018($sp)
/* 0173C 80A169BC 27BD0028 */  addiu   $sp, $sp, 0x0028           ## $sp = 00000000
/* 01740 80A169C0 03E00008 */  jr      $ra
/* 01744 80A169C4 00000000 */  nop


x="1" y="1" width="22" height="22" rx="6"></rect><path d="M9.39 16V7.24H14.55V8.224H10.446V11.128H14.238V12.112H10.47V16H9.39Z" fill="var(--color-text)"></path></g><g id="icon-8192"><rect fill="var(--color-icon-background)" stroke="#FF984D" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><path d="M9.354 16V7.24H12.174C12.99 7.24 13.638 7.476 14.118 7.948C14.606 8.412 14.85 9.036 14.85 9.82C14.85 10.604 14.606 11.232 14.118 11.704C13.638 12.168 12.99 12.4 12.174 12.4H10.434V16H9.354ZM10.434 11.428H12.174C12.646 11.428 13.022 11.284 13.302 10.996C13.59 10.7 13.734 10.308 13.734 9.82C13.734 9.324 13.59 8.932 13.302 8.644C13.022 8.356 12.646 8.212 12.174 8.212H10.434V11.428Z" fill="var(--color-text)"></path></g><g id="icon-16384"><rect fill="var(--color-icon-background)" stroke="#4D7FFF" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><path d="M11.898 16.1201C11.098 16.1201 10.466 15.8961 10.002 15.4481C9.53803 15.0001 9.30603 14.3841 9.30603 13.6001V9.64012C9.30603 8.85612 9.53803 8.24012 10.002 7.79212C10.466 7.34412 11.098 7.12012 11.898 7.12012C12.682 7.12012 13.306 7.34812 13.77 7.80412C14.234 8.25212 14.466 8.86412 14.466 9.64012H13.386C13.386 9.14412 13.254 8.76412 12.99 8.50012C12.734 8.22812 12.37 8.09212 11.898 8.09212C11.426 8.09212 11.054 8.22412 10.782 8.48812C10.518 8.75212 10.386 9.13212 10.386 9.62812V13.6001C10.386 14.0961 10.518 14.4801 10.782 14.7521C11.054 15.0161 11.426 15.1481 11.898 15.1481C12.37 15.1481 12.734 15.0161 12.99 14.7521C13.254 14.4801 13.386 14.0961 13.386 13.6001H14.466C14.466 14.3761 14.234 14.9921 13.77 15.4481C13.306 15.8961 12.682 16.1201 11.898 16.1201Z" fill="var(--color-text)"></path></g><g id="icon-32768"><rect fill="var(--color-icon-background)" stroke="#FF984D" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><path d="M9.354 16V7.24H12.174C12.99 7.24 13.638 7.476 14.118 7.948C14.606 8.412 14.85 9.036 14.85 9.82C14.85 10.604 14.606 11.232 14.118 11.704C13.638 12.168 12.99 12.4 12.174 12.4H10.434V16H9.354ZM10.434 11.428H12.174C12.646 11.428 13.022


E7.B1.BB.E9.94.99.E8.AF.AF.E7.A0.81) 列表。
     * @param ErrCodeExt 错误码，空字符串表示成功，其他值表示失败，取值请参考 [视频处理类错误码](https://cloud.tencent.com/document/product/266/50368#.E8.A7.86.E9.A2.91.E5.A4.84.E7.90.86.E7.B1.BB.E9.94.99.E8.AF.AF.E7.A0.81) 列表。
     */
    public void setErrCodeExt(String ErrCodeExt) {
        this.ErrCodeExt = ErrCodeExt;
    }

    /**
     * Get 错误码，0 表示成功，其他值表示失败（该字段已不推荐使用，建议使用新的错误码字段 ErrCodeExt）。
     * @return ErrCode 错误码，0 表示成功，其他值表示失败（该字段已不推荐使用，建议使用新的错误码字段 ErrCodeExt）。
     */
    public Long getErrCode() {
        return this.ErrCode;
    }

    /**
     * Set 错误码，0 表示成功，其他值表示失败（该字段已不推荐使用，建议使用新的错误码字段 ErrCodeExt）。
     * @param ErrCode 错误码，0 表示成功，其他值表示失败（该字段已不推荐使用，建议使用新的错误码字段 ErrCodeExt）。
     */
    public void setErrCode(Long ErrCode) {
        this.ErrCode = ErrCode;
    }

    /**
     * Get 错误信息。
     * @return Message 错误信息。
     */
    public String getMessage() {
        return this.Message;
    }

    /**
     * Set 错误信息。
     * @param Message 错误信息。
     */
    public void setMessage(String Message) {
        this.Message = Message;
    }

    /**
     * Get 音视频审核 Ocr 文字鉴违禁任务输入。
     * @return Input 音视频审核 Ocr 文字鉴违禁任务输入。
     */
    public AiReviewProhibitedOcrTaskInput getInput() {
        return this.Input;
    }

    /**
     * Set 音视频审核 Ocr 文字鉴违禁任务输入。
     * @param Input 音视频审核 Ocr 文字鉴违禁任务输入。
     */
    public void setInput(AiReviewProhibitedOcrTaskInput Input) {
        this.Input = Input;
    }

    /**
     * Get 音视频审核 Ocr 文字鉴违禁任务输出。
     * @return Output 音视频审核 Ocr 文字鉴违禁任务输出。
     */
    public AiReviewProhibitedOcrTaskOutput getOutput() {
        return this.Output;
    }

    /**
     * Set 音视频审核 Ocr 文字鉴违禁任务输出。
     * @param Output 音视频审核 Ocr 文字鉴违禁任务输出。
     */
    public void setOutput(AiReviewProhibitedOcrTaskOutput Output) {
        this


| ..)` method takes [cfgpresetval2::W](cfgpresetval2::W) writer structure"]
impl crate::Writable for CFGPRESETVAL2 {}
#[doc = "Core Configuration Preset Value 2"]
pub mod cfgpresetval2;
#[doc = "Core Configuration Preset Value 3\n\nThis register you can [`read`](crate::generic::Reg::read), [`reset`](crate::generic::Reg::reset), [`write`](crate::generic::Reg::write), [`write_with_zero`](crate::generic::Reg::write_with_zero), [`modify`](crate::generic::Reg::modify). See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [cfgpresetval3](cfgpresetval3) module"]
pub type CFGPRESETVAL3 = crate::Reg<u32, _CFGPRESETVAL3>;
#[allow(missing_docs)]
#[doc(hidden)]
pub struct _CFGPRESETVAL3;
#[doc = "`read()` method returns [cfgpresetval3::R](cfgpresetval3::R) reader structure"]
impl crate::Readable for CFGPRESETVAL3 {}
#[doc = "`write(|w| ..)` method takes [cfgpresetval3::W](cfgpresetval3::W) writer structure"]
impl crate::Writable for CFGPRESETVAL3 {}
#[doc = "Core Configuration Preset Value 3"]
pub mod cfgpresetval3;
#[doc = "I/O LOCATION Register\n\nThis register you can [`read`](crate::generic::Reg::read), [`reset`](crate::generic::Reg::reset), [`write`](crate::generic::Reg::write), [`write_with_zero`](crate::generic::Reg::write_with_zero), [`modify`](crate::generic::Reg::modify). See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [routeloc0](routeloc0) module"]
pub type ROUTELOC0 = crate::Reg<u32, _ROUTELOC0>;
#[allow(missing_docs)]
#[doc(hidden)]
pub struct _ROUTELOC0;
#[doc = "`read()` method returns [routeloc0::R](routeloc0::R) reader structure"]
impl crate::Readable for ROUTELOC0 {}
#[doc = "`write(|w| ..)` method takes [routeloc0::W](routeloc0::W) writer structure"]
impl crate::Writable for ROUTELOC0 {}
#[doc = "I/O LOCATION Register"]
pub mod routeloc0;
#[doc = "I/O LOCATION Register\n\nThis register you can [`read`](crate::generic::Reg::read), [`reset`](crate::generic::Reg::reset), [`write`](crate::generic::Reg::write), [`write_with_zero`](crate::generic::Reg::write_with_zero), [`modify`](crate::generic::Reg::modify). See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [routeloc1](routeloc1) module"]
pub type ROUTELOC1 = crate::Reg<u32, _ROUTELOC1>;
#[allow(missing_docs)]
#[doc(hidden)]
pub struct _ROUTELOC1;
#[doc = "`read()` method returns [routeloc1::R](routeloc1::R) reader structure"]
impl crate::Readable for ROUTELOC1 {}
#[doc = "`write(|w| ..)` method takes [routeloc1::W](routeloc1::W) writer structure"]
impl crate::Writable for ROUTELOC1 {}
#[doc = "I/O LOCATION Register"]
pub mod routeloc1;
#[doc = "I/O LOCATION Enable Register\n\nThis register you can [`read`](crate::generic::Reg::read), [`reset`](crate::generic


/*
 *  Copyright (C) 2017 Toni Spets <toni.spets@iki.fi>
 *
 *  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 2 or (at your option)
 *  version 3 of the License.
 *
 *  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, see <http://www.gnu.org/licenses/>.
 */

#ifndef TESTOPENSSHKEY_H
#define TESTOPENSSHKEY_H

#include <QObject>

class OpenSSHKey;

class TestOpenSSHKey : public QObject
{
    Q_OBJECT

private slots:
    void initTestCase();
    void testParse();
    void testParseDSA();
    void testParseRSA();
    void testParseRSACompare();
    void testParseECDSA256();
    void testParseECDSA384();
    void testParseECDSA521();
    void testDecryptRSAAES128CBC();
    void testDecryptOpenSSHAES256CBC();
    void testDecryptRSAAES256CBC();
    void testDecryptOpenSSHAES256CTR();
    void testDecryptRSAAES256CTR();
    void testDecryptUTF8();
    void testParseECDSASecurityKey();
    void testParseED25519SecurityKey();
};

#endif // TESTOPENSSHKEY_H


HtmlWebpackPlugin = require('html-webpack-plugin');
var port = 3010

module.exports = {
  context: path.resolve(__dirname, 'example'), // string（绝对路径！）
  devtool: 'eval',
  cache: true,
  entry: [
    './main.js'
  ],
  output: {
    path: path.join(__dirname, 'demo/'),
    filename: '[name].js', //.[hash]
    // publicPath: 'http://public.dainli.com/17zt/viewer/assets/'
  },
  plugins: [
    new webpack.DefinePlugin({
      'process.env': {
        NODE_ENV: JSON.stringify("development")
      }
    }),
    new webpack.NamedModulesPlugin(),
    // 当模块热替换(HMR)时在浏览器控制台输出对用户更友好的模块名字信息
    new webpack.optimize.UglifyJsPlugin({
      sourceMap: true,
      compress: {
        warnings: true,
      }
    }),
    new HtmlWebpackPlugin({
      title: 'Custom template',
      template: '../example/index.html', // Load a custom template (ejs by default see the FAQ for details)
      hash: true,
      filename:"./index.html"
    })
  ],
  resolve: {
    modules: [
      "node_modules",
      path.resolve(__dirname, "src")
    ],
    extensions: ['.js', '.jsx']
  },
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        loader: 'babel-loader' ,
        exclude: /node_modules/,
        include: __dirname,
        options: {
          presets: [["es2015", {"modules": false}], "stage-1", "react"]
        }
      },
      {
        test: /\.css$/,
        use: [
          'style-loader',
          'css-loader',
          { loader: 'postcss-loader', options: { config: { path: './postcss.config.js' } } }
        ]
      },
      {
        test: /\.less/,
        use: [
          'style-loader',
          'css-loader',
          { loader: 'postcss-loader', options: { config: { path: './postcss.config.js' } } },
          'less-loader'
        ]
      },
      {
        test: /\.(gif|jpg|png|woff|svg|eot|ttf)$/,
        use: [
          { loader: 'file-loader'}
        ]
      }
    ]
  },
}
import React, { Component } from 'react';
// import { render } from 'react-dom';
// import PropTypes from 'prop-types';

import WxImageViewer from 'index.js';
import './App.less';

class App extends Component {
  state = {
    imags: [
      /* eslint-disable */
      require('./assets/2.jpg'),
      require('./assets/1.jpg'),
      require('./assets/0.jpg'),
      require('./assets/3.jpg'),
      require('./assets/4.jpg'),
      /* eslint-enable */
    ],
    index: 0,
    isOpen: false,
  };

  onClose = () => {
    this.setState({
      isOpen: false,
    });
  }

  openViewer(index) {
    this.setState({
      index,
      isOpen: true,
    });
  }

  render() {
    const {
      imags,
      index,
      isOpen,
    } = this.state;

    return (

          <button onClick={this.openViewer.bind(this, 0)}>点击打开图片</button>
          {
            imags.map((item, subIndex) => {
              return (

                  <img s


nal int _dataCenterId;
  late final bool _useSystemClock;
  late final int _timeOffset;
  late final int _randomSequenceLimit;
  int _sequence = 0;
  int _lastTimestamp = -1;

  Snowflake(int dataCenterId)
      : this.fromWorkerAndDataCenterId(
          IdUtil.getWorkerId(dataCenterId),
          IdUtil.getDataCenterId(dataCenterId),
        );

  Snowflake.fromWorkerAndDataCenterId(int workerId, int dataCenterId)
      : this.fromWorkerDataAndClockId(workerId, dataCenterId, false);

  Snowflake.fromWorkerDataAndClockId(
    int workerId,
    int dataCenterId, [
    bool isUseSystemClock = false,
  ]) : this.fromEpochDate(
          null,
          workerId,
          dataCenterId,
          isUseSystemClock,
          _defaultTimeOffset,
        );

  Snowflake.fromEpochDate(
    DateTime? epochDate,
    int workerId,
    int dataCenterId,
    bool isUseSystemClock,
    int timeOffset, [
    int randomSequenceLimit = 0,
  ]) : this.fromEpochDateAndRandom(
          epochDate,
          workerId,
          dataCenterId,
          isUseSystemClock,
          timeOffset,
          0,
        );

  Snowflake.fromEpochDateAndRandom(
    DateTime? epochDate,
    int workerId,
    int dataCenterId,
    bool isUseSystemClock,
    int timeOffset,
    int randomSequenceLimit,
  )   : _twepoch = epochDate != null
            ? epochDate.millisecondsSinceEpoch
            : _defaultTwepoch,
        _workerId = Assert.checkBetween(workerId, 0, _maxWorkerId),
        _dataCenterId = Assert.checkBetween(dataCenterId, 0, _maxDataCenterId),
        _useSystemClock = isUseSystemClock,
        _timeOffset = timeOffset,
        _randomSequenceLimit =
            Assert.checkBetween(randomSequenceLimit, 0, _sequenceMask);

  int _getWorkerId(int id) {
    return (id >> _workerIdShift) & _maxWorkerId;
  }

  int _getDataCenterId(int id) {
    return (id >> _dataCenterIdShift) & _maxDataCenterId;
  }

  int _getGenerateDateTime(int id) {
    return ((id >> _timestampLeftShift) & 2199023255551) + _twepoch;
  }

  int nextId() {
    int timestamp = _genTime();
    if (timestamp < _lastTimestamp) {
      if (_lastTimestamp - timestamp >= _timeOffset) {
        throw StateError(
          "Clock moved backwards. Refusing to generate id for ${_lastTimestamp - timestamp}ms",
        );
      }

      timestamp = _lastTimestamp;
    }

    if (timestamp == _lastTimestamp) {
      int sequence = (_sequence + 1) & _sequenceMask;
      if (sequence == 0) {
        timestamp = _tilNextMillis(_lastTimestamp);
      }

      _sequence = sequence;
    } else if (_randomSequenceLimit > 1) {
      _sequence = Random().nextInt(_randomSequenceLimit);
    } else {
      _sequence = 0;
    }

    _lastTimestamp = timestamp;
    return ((timestamp - _twepoch) << _timestampLeftShift) |
        (_dataCenterId << _dataCenterIdShift) |
        (_workerId << _workerIdShift) |
        _sequence;
  }

  String nextIdStr() {
    return nextId().toString();
  }

  int _tilNextMillis(int lastTimestamp) {
    int timestamp;
    do {
      timestamp = _genTime();
    } while (timestamp == lastTimestamp);

    if (timestamp < lastTimestamp) {
      throw StateError(
        "Clock moved backwards. Refusing to generate id for ${lastTimestamp - timestamp}ms",
      );
    } else {
      return timestamp;


 next focusable view
             * if we're searching for focus in the layout direction
             */
            if (layoutInfo.isLoopingAllowed && relativeFocusDirection.isPrimary()) {
                return nextFocusFinderView
            }
            findNextLinearChild(position, relativeFocusDirection)
        } else {
            return nextFocusFinderView
        }
    }

    private fun findNextLinearChild(position: Int, direction: FocusDirection): View? {
        // We only support the main direction
        if (direction.isSecondary()) {
            return null
        }
        val absolutePositionIncrement = if (direction == FocusDirection.NEXT_ROW
            || direction == FocusDirection.NEXT_COLUMN
        ) {
            1
        } else {
            -1
        }
        val nextPosition = position + absolutePositionIncrement
        // Jump early if we're going out of bounds
        if (nextPosition < 0 || nextPosition == layoutInfo.getItemCount()) {
            return null
        }
        return findNextFocusableView(
            fromPosition = nextPosition,
            positionIncrement = absolutePositionIncrement
        )
    }

    private fun findNextFocusableView(
        fromPosition: Int,
        positionIncrement: Int
    ): View? {
        var currentPosition = fromPosition
        while (currentPosition >= 0 && currentPosition < layoutInfo.getItemCount()) {
            // Exit early if we've exhausted the current layout structure
            val view = layoutInfo.findViewByPosition(currentPosition) ?: return null
            if (layoutInfo.isViewFocusable(view)) {
                return view
            }
            currentPosition += positionIncrement
        }
        return null
    }
}
/*
 * Copyright 2023 Rúben Sousa
 *
 * 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.
 */

package com.rubensousa.dpadrecyclerview.layoutmanager.layout.provider

import android.view.View
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.Recycler
import com.rubensousa.dpadrecyclerview.layoutmanager.layout.LayoutRequest

/**
 * A [ViewProvider] that gets Views from the [Recycler].
 *
 * This is used for the main layout stages and scrolling.
 */
internal class RecyclerViewProvider : ViewProvider {

    private var recycler: Recycler? = null

    override fun hasNext(layoutRequest: LayoutRequest, state: RecyclerView.State): Boolean {
        if (recycler == null) {
            return false
        }
        return layoutRequest.currentPosition >= 0 && layoutRequest.currentPosition < state.itemCount
    }

    override fun next(layoutRequest: LayoutRequest, state: RecyclerView.State): View {
        val view = requireNotNull(recycler).getViewForPosition(layoutRequest.currentPosition)
        layoutRequest.moveToNextPosition()
        return view
    }

    fun updateRecycler(recycler: Recycler) {
        this.recycler = recycler
    }

    fun clearRecycler() {
        recycler = null
    }

}
package com.rubensousa.dpadrecyclerview.testfixtures

import com.google.common.truth.Truth.assertTh


org/License          |
   +------------------------------------------------------------------------+ */

/*
  Example  : kinect-to-2d-laser-demo
  Web page : https://www.mrpt.org/Example_Kinect_To_2D_laser_scan (includes
  video demo)

  Purpose  : Demonstrate grabbing from CKinect, multi-threading
       and converting the 3D range data into an equivalent
       2D planar scan.
*/

#include <mrpt/config/CConfigFile.h>
#include <mrpt/gui/CDisplayWindow3D.h>
#include <mrpt/hwdrivers/CKinect.h>
#include <mrpt/img/TColor.h>
#include <mrpt/opengl/CFrustum.h>
#include <mrpt/opengl/CGridPlaneXY.h>
#include <mrpt/opengl/CPlanarLaserScan.h>
#include <mrpt/opengl/CPointCloudColoured.h>
#include <mrpt/opengl/stock_objects.h>
#include <mrpt/system/CTicTac.h>
#include <mrpt/system/filesystem.h>

#include <chrono>
#include <iostream>
#include <thread>

using namespace mrpt;
using namespace mrpt::hwdrivers;
using namespace mrpt::math;
using namespace mrpt::gui;
using namespace mrpt::obs;
using namespace mrpt::maps;
using namespace mrpt::opengl;
using namespace mrpt::system;
using namespace mrpt::img;
using namespace std;

// Thread for grabbing: Do this is another thread so we divide rendering and
// grabbing
//   and exploit multicore CPUs.
struct TThreadParam
{
  TThreadParam() {}
  volatile bool quit{false};
  volatile int pushed_key{0};
  volatile double Hz{0};

  CObservation3DRangeScan::Ptr new_obs;  // RGB+D (+3D points)
  CObservationIMU::Ptr new_obs_imu;      // Accelerometers
};

void thread_grabbing(TThreadParam& p)
{
  try
  {
    CKinect kinect;

    // Set params:
    // kinect.enableGrab3DPoints(true);
    // kinect.enablePreviewRGB(true);
    //...
    const std::string cfgFile = "kinect_calib.cfg";
    if (mrpt::system::fileExists(cfgFile))
    {
      cout << "Loading calibration from: " << cfgFile << endl;
      kinect.loadConfig(mrpt::config::CConfigFile(cfgFile), "KINECT");
    }
    else
      cerr << "Warning: Calibration file [" << cfgFile << "] not found -> Using default params.\n";

    // Open:
    cout << "Calling CKinect::initialize()...";
    kinect.initialize();
    cout << "OK\n";

    CTicTac tictac;
    int nImgs = 0;
    bool there_is_obs = true, hard_error = false;

    while (!hard_error && !p.quit)
    {
      // Grab new observation from the camera:
      auto obs = CObservation3DRangeScan::Create();  // Smart pointers to
                                                     // observations
      CObservationIMU::Ptr obs_imu = CObservationIMU::Create();

      kinect.getNextObservation(*obs, *obs_imu, there_is_obs, hard_error);

      if (!hard_error && there_is_obs)
      {
        std::atomic_store(&p.new_obs, obs);
        std::atomic_store(&p.new_obs_imu, obs_imu);
      }

      if (p.pushed_key != 0)
      {
        switch (p.pushed_key)
        {
          case 27:
            p.quit = true;
            break;
        }

        // Clear pushed


 a query string will generally result in resetting\n"
		"the current reading position (ala OGR_L_ResetReading()).\n"
		"\n"
		"This function is the same as the C++ method\n"
		"OGRLayer::SetAttributeFilter().\n"
		"\n"
		"Parameters:\n"
		"-----------\n"
		"\n"
		"hLayer:  handle to the layer on which attribute query will be\n"
		"executed.\n"
		"\n"
		"pszQuery:  query in restricted SQL WHERE format, or NULL to clear the\n"
		"current query.\n"
		"\n"
		"OGRERR_NONE if successfully installed, or an error code if the query\n"
		"expression is in error, or some other failure occurs. \n"
		""},
	 { (char *)"Layer_ResetReading", _wrap_Layer_ResetReading, METH_VARARGS, (char *)"\n"
		"Layer_ResetReading(Layer self)\n"
		"\n"
		"void\n"
		"OGR_L_ResetReading(OGRLayerH hLayer)\n"
		"\n"
		"Reset feature reading to start on the first feature.\n"
		"\n"
		"This affects GetNextFeature().\n"
		"\n"
		"This function is the same as the C++ method OGRLayer::ResetReading().\n"
		"\n"
		"Parameters:\n"
		"-----------\n"
		"\n"
		"hLayer:  handle to the layer on which features are read. \n"
		""},
	 { (char *)"Layer_GetName", _wrap_Layer_GetName, METH_VARARGS, (char *)"\n"
		"Layer_GetName(Layer self) -> char const *\n"
		"\n"
		"const char* OGR_L_GetName(OGRLayerH\n"
		"hLayer)\n"
		"\n"
		"Return the layer name.\n"
		"\n"
		"This returns the same content as\n"
		"OGR_FD_GetName(OGR_L_GetLayerDefn(hLayer)), but for a few drivers,\n"
		"calling OGR_L_GetName() directly can avoid lengthy layer definition\n"
		"initialization.\n"
		"\n"
		"This function is the same as the C++ method OGRLayer::GetName().\n"
		"\n"
		"Parameters:\n"
		"-----------\n"
		"\n"
		"hLayer:  handle to the layer.\n"
		"\n"
		"the layer name (must not been freed)\n"
		"\n"
		"OGR 1.8.0 \n"
		""},
	 { (char *)"Layer_GetGeomType", _wrap_Layer_GetGeomType, METH_VARARGS, (char *)"\n"
		"Layer_GetGeomType(Layer self) -> OGRwkbGeometryType\n"
		"\n"
		"OGRwkbGeometryType\n"
		"OGR_L_GetGeomType(OGRLayerH hLayer)\n"
		"\n"
		"Return the layer geometry type.\n"
		"\n"
		"This returns the same result as\n"
		"OGR_FD_GetGeomType(OGR_L_GetLayerDefn(hLayer)), but for a few drivers,\n"
		"calling OGR_L_GetGeomType() directly can avoid lengthy layer\n"
		"definition initialization.\n"
		"\n"
		"For layers with multiple geometry fields, this method only returns the\n"
		"geometry type of the first geometry column. For other columns, use\n"
		"OGR_GFld_GetType(OGR_FD_GetGeomFieldDefn(OGR_L_GetLayerDefn(hLayer),\n"
		"i)). For layers without any geometry field, this method returns\n"
		"wkbNone.\n"
		"\n"
		"This function is the same as the C++ method OGRLayer::GetGeomType().\n"
		"\n"
		"Parameters


using System.Diagnostics;

namespace LeagueToolkit.Core.Animation;

[DebuggerDisplay("{GetDebuggerDisplay(), nq}")]
internal unsafe struct JumpFrameU16
{
    public fixed ushort RotationKeys[4];
    public fixed ushort TranslationKeys[4];
    public fixed ushort ScaleKeys[4];

    private string GetDebuggerDisplay()
    {
        fixed (ushort* rotationKeys = this.TranslationKeys)
        fixed (ushort* translationKeys = this.TranslationKeys)
        fixed (ushort* scaleKeys = this.ScaleKeys)
        {
            return $"R:[{string.Join(',', rotationKeys[0], rotationKeys[1], rotationKeys[2], rotationKeys[3])}] "
                + $"T:[{string.Join(',', translationKeys[0], translationKeys[1], translationKeys[2], translationKeys[3])}] "
                + $"S:[{string.Join(',', scaleKeys[0], scaleKeys[1], scale


AUTOMATIC" : Indicates that the label was created automatically by CSS
  /// Center.
  core.String? labelType;

  /// Identifier.
  ///
  /// The resource name of the label. Format: accounts/{account}/labels/{label}
  core.String? name;

  AccountLabel({
    this.accountId,
    this.description,
    this.displayName,
    this.labelId,
    this.labelType,
    this.name,
  });

  AccountLabel.fromJson(core.Map json_)
    : this(
        accountId: json_['accountId'] as core.String?,
        description: json_['description'] as core.String?,
        displayName: json_['displayName'] as core.String?,
        labelId: json_['labelId'] as core.String?,
        labelType: json_['labelType'] as core.String?,
        name: json_['name'] as core.String?,
      );

  core.Map<core.String, core.dynamic> toJson() => {
    if (accountId != null) 'accountId': accountId!,
    if (description != null) 'description': description!,
    if (displayName != null) 'displayName': displayName!,
    if (labelId != null) 'labelId': labelId!,
    if (labelType != null) 'labelType': labelType!,
    if (name != null) 'name': name!,
  };
}

/// Attributes for CSS Product.
class Attributes {
  /// Additional URL of images of the item.
  core.List<core.String>? additionalImageLinks;

  /// Set to true if the item is targeted towards adults.
  core.bool? adult;

  /// Target age group of the item.
  core.String? ageGroup;

  /// Product Related Attributes.\[14-36\] Brand of the item.
  core.String? brand;

  /// A list of certificates claimed by the CSS for the given product.
  core.List<Certification>? certifications;

  /// Color of the item.
  core.String? color;

  /// Allows advertisers to override the item URL when the product is shown
  /// within the context of Product Ads.
  core.String? cppAdsRedirect;

  /// URL directly linking to your the Product Detail Page of the CSS.
  core.String? cppLink;

  /// URL for the mobile-optimized version of the Product Detail Page of the
  /// CSS.
  core.String? cppMobileLink;

  /// Custom label 0 for custom grouping of items in a Shopping campaign.
  core.String? customLabel0;

  /// Custom label 1 for custom grouping of items in a Shopping campaign.
  core.String? customLabel1;

  /// Custom label 2 for custom grouping of items in a Shopping campaign.
  core.String? customLabel2;

  /// Custom label 3 for custom grouping of items in a Shopping campaign.
  core.String? customLabel3;

  /// Custom label 4 for custom grouping of items in a Shopping campaign.
  core.String? customLabel4;

  /// Description of the item.
  core.String? description;

  /// The list of destinations to exclude for this target (corresponds to
  /// unchecked check boxes in Merchant Center).
  core.List<core.String>? excludedDestinations;

  /// Date on which the item should expire, as specified upon insertion, in
  /// [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) format.
  ///
  /// The actual expiration date is exposed in `productstatuses` as
  /// [googleExpirationDate](https://support.google.com/merchants/answer/6324499)
  /// and might be earlier if `expirationDate` is too far in the future. Note:
  /// It may take 2+ days from the expiration date for the item to actually get
  /// deleted.
  core.String? expirationDate;

  /// Target gender of the item.
  core.String? gender;

  /// Google's category of the item (see
  /// [Google product taxonomy](https://support.google.com/merchants/answer/1705911)).
  ///
  /// When querying products, this field will contain the user provided value.
  /// There is currently no way to get back the


inäkö sinä olet, sinä,joka syökset Israelin onnettomuuteen?"</verse>
				<verse number="18">Tämä vastasi: "En minä syökse Israelia onnettomuuteen, vaan sinä jasinun isäsi suku, koska te hylkäätte Herran käskyt ja koska sinä seuraatbaaleja.</verse>
				<verse number="19">Mutta lähetä nyt kokoamaan kaikki Israel minun luokseniKarmel-vuorelle, sekä neljäsataa viisikymmentä Baalin profeettaa janeljäsataa Aseran profeettaa, jotka syövät Iisebelin pöydästä."</verse>
				<verse number="20">Niin Ahab lähetti sanan kaikille israelilaisille ja kokosi profeetatKarmel-vuorelle.</verse>
				<verse number="21">Ja Elia astui kaiken kansan eteen ja sanoi: "Kuinka kauan te onnuttemolemmille puolille? Jos Herra on Jumala, seuratkaa häntä; mutta josBaal on Jumala, seuratkaa häntä." Eikä kansa vastannut hänelle mitään.</verse>
				<verse number="22">Niin Elia sanoi kansalle: "Minä olen ainoa jäljelle jäänyt Herranprofeetta, mutta Baalin profeettoja on neljäsataa viisikymmentä.</verse>
				<verse number="23">Antakaa meille kaksi mullikkaa, ja valitkoot he itselleen toisenmullikan, paloitelkoot sen ja pankoot kappaleet puiden päälle, muttaälkööt panko tulta; ja minä valmistan toisen mullikan ja asetan senpuiden päälle, mutta en pane tulta.</verse>
				<verse number="24">Sitten huutakaa te jumalanne nimeä, ja minä huudan Herran nimeä. Sejumala, joka vastaa tulella, on Jumala." Kaikki kansa vastasi ja sanoi:"Niin on hyvä".</verse>
				<verse number="25">Ja Elia sanoi Baalin profeetoille: "Valitkaa itsellenne toinenmullikka ja valmistakaa se ensin, sillä teitä on enemmän.Huutakaasitten jumalanne nimeä, mutta älkää panko tulta".</verse>
				<verse number="26">Niin he ottivat sen mullikan, jonka hän antoi heille, ja valmistivatsen. Sitten he huusivat Baalin nimeä aamusta puolipäivään asti, sanoen:"Baal, vastaa meille!" Mutta ei ääntä, ei vastausta! Ja he hyppelivätalttarin ääressä, joka oli tehty.</verse>
				<verse number="27">Puolipäivän aikana Elia pilkkasi heitä ja sanoi: "Huutakaa kovemmin;hän on tosin jumala, mutta hänellä voi olla jotakin toimittamista, tahihän on poistunut johonkin, tahi on matkalla; kenties hän nukkuu, muttakyllä hän herää".</verse>
				<verse number="28">Niin he huusivat vielä kovemmin ja viileksivät itseään tapansamukaan miekoilla ja keihäillä, niin että heistä vuoti verta.</verse>
				<verse number="29">Kun puolipäivä oli kulunut, joutuivat he hurmoksiin, aina siihenhetkeen asti, jolloin ruokauhri uhrataan. Mutta ei ääntä, ei vastausta,ei vaarinottoa!</verse>
				<verse number="30">Niin Elia sanoi kaikelle ka


border-radius: 5px;
	line-height: 120%;
	background-color: #FFF;
	content: "Browse wishlist";
}

.wc-block-grid .wc-block-grid__products .wc-block-grid__product.zak-add-to-wishlist-after_add_to_cart .yith-wcwl-add-to-wishlist, .wc-block-grid .wc-block-grid__products .wc-block-grid__product.zak-add-to-wishlist-before_add_to_cart .yith-wcwl-add-to-wishlist {
	margin-bottom: 12px;
}

.wc-block-grid .wc-block-grid__products .wc-block-grid__product.zak-add-to-wishlist-before_add_to_cart, .wc-block-grid .wc-block-grid__products .wc-block-grid__product.zak-add-to-wishlist-after_add_to_cart {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	height: -moz-fit-content;
	height: fit-content;
}

.wc-block-grid .wc-block-grid__products .wc-block-grid__product.zak-add-to-wishlist-before_add_to_cart .yith-wcwl-add-to-wishlist, .wc-block-grid .wc-block-grid__products .wc-block-grid__product.zak-add-to-wishlist-after_add_to_cart .yith-wcwl-add-to-wishlist {
	display: flex;
	justify-content: flex-start;
	align-items: center;
	width: 48px;
	position: unset;
}

.wc-block-grid .wc-block-grid__products .wc-block-grid__product.zak-add-to-wishlist-before_add_to_cart .yith-wcwl-add-to-wishlist .yith-wcwl-add-button i,
.wc-block-grid .wc-block-grid__products .wc-block-grid__product.zak-add-to-wishlist-before_add_to_cart .yith-wcwl-add-to-wishlist .yith-wcwl-wishlistaddedbrowse i,
.wc-block-grid .wc-block-grid__products .wc-block-grid__product.zak-add-to-wishlist-before_add_to_cart .yith-wcwl-add-to-wishlist .yith-wcwl-wishlistexistsbrowse i, .wc-block-grid .wc-block-grid__products .wc-block-grid__product.zak-add-to-wishlist-after_add_to_cart .yith-wcwl-add-to-wishlist .yith-wcwl-add-button i,
.wc-block-grid .wc-block-grid__products .wc-block-grid__product.zak-add-to-wishlist-after_add_to_cart .yith-wcwl-add-to-wishlist .yith-wcwl-wishlistaddedbrowse i,
.wc-block-grid .wc-block-grid__products .wc-block-grid__product.zak-add-to-wishlist-after_add_to_cart .yith-wcwl-add-to-wishlist .yith-wcwl-wishlistexistsbrowse i {
	margin: 0;
	padding: 10px;
	font-size: 16px;
	vertical-align: bottom;
	border: 1px solid #D4D4D8;
	transition: all 0.3s ease-in-out;
	border-radius: 4px;
	color: #3F3F46;
}

.wc-block-grid .wc-block-grid__products .wc-block-grid__product.zak-add-to-wishlist-before_add_to_cart .yith-wcwl-add-


改进提案。在提案提交结束时，我能够为该项目提交一个好的提案。当我对这个插件感到好奇时，我深入研究了如何将 Jupyter Notebook 与该插件集成。我在接受等待期间的研究结果发表了一篇中等文章。

## 结果发布

结果将于 5 月 4 日宣布，我相信我的项目建议和 POC，因此入选了 GSoC 2020。那是我一生中最激动人心的。这种感觉就像`我实现的目标`。由于我的辛勤工作，我应得的。例如，我花了 7 天的时间使 POC 正常工作，而 Maven 工件之间没有任何冲突。

## 社区联结

结果发布后，我正在为社区联结做准备。我和导师之间的互动比以前更多了。我不得不在 jenkins.io 中更新项目页面和个人资料。5 月 10 日，我们第一次会面充满了热情和友爱。我和导师介绍了自己，尽管我们彼此认识。我们讨论了 GSoC 的高级观点，并提出了一些我观点中存在的问题。由于我的插件是一个新的存储库，因此大部分讨论都与该存储库及其名称有关。我必须为新插件找到一个名称。最后，我们定期讨论了博客文章和演示文稿。

在第二次会议上，我们讨论了在 Jenkins 中托管新插件，跟踪 JIRA 问题，博客文章和项目高级路线图的过程。我建议了一些有趣的插件名称，但它们与项目目标不符，导师告诉我尝试使用其他名称来完美描述项目。建议我阅读所有研究指南和插件命名约定。我们讨论了如何通过 git 完成代码审查和源代码管理。这次会议之后，我们的会议已转移到 Jenkins Zoom 的正式帐户。

我们的第三次会议对我们的项目计划非常认真。在开会之前，我一直在导师的帮助下为项目准备设计文件。因此，对于第 1 阶段的未来工作，我得到了很多评论和有用的示例。在这一点上，我们决定使用插件名称 `Machine Learning Plugin`，该插件被所有导师接受，我创建了回购协议，并要求提供 Jira 单据进行插件托管请求。我们计划在未来 3 天内提醒您 Jira 单据。导师希望我确保在社区活动结束之前更新了 Jenkins GSoC 页面。关于会议上周我一直在准备的设计文件的讨论很多。会议记录中的一些要点如下：

* 在设计文档中定义特征
* 操作图
* 插件如何在分布式环境中工作
* 代码编辑器库
* 第一个插件版本的要求
* 博客文章草稿文件
* 下周我即将开展的工作计划

因此，在这次会议之后，我不得不努力工作，这使我更加深入参与了该项目。我必须付出巨大的努力才能使这个机会变成黄金。我们的团队愿意完成此项目，并且一定会通过此插件为 Data Science 社区提供帮助。到目前为止，我的团队所做的出色工作，对此我表示敬意！！！

到


(
                `Instructor: ${scheduleGroup.course} is not registered with ${
                  instructorsObject[scheduleGroup.course].instructor
                } [-1 * ${internalWieght} * ${priority}]`
              );
            }
        }
      }
    });
    return hits * internalWieght;
  };
}
interface SelectByDevice {
  m: string;
  d: string;
}

export type SizeType = 'xxxl' | 'xxl' | 'xl' | 'l' | 'm' | 's' | 'xs';

export interface FontInterface {
  size: {
    xxxl: SelectByDevice;
    xxl: SelectByDevice;
    xl: SelectByDevice;
    l: SelectByDevice;
    m: SelectByDevice;
    s: SelectByDevice;
    xs: SelectByDevice;
  };
  weight: {
    light: number;
    demiLight: number;
    regular: number;
    medium: number;
    bold: number;
    black: number;
  };
}

const font: FontInterface = {
  size: {
    xxxl: { m: '2.2rem', d: '3.6rem' },
    xxl: { m: '1.4rem', d: '2.6rem' },
    xl: { m: '1.1rem', d: '2.2rem' },
    l: { m: '1.03rem', d: '2rem' },
    m: { m: '0.95rem', d: '1.8rem' },
    s: { m: '0.9rem', d: '1.6rem' },
    xs: { m: '0.8rem', d: '1.4rem' },
  },
  weight: {
    light: 200,
    demiLight: 300,
    regular: 400,
    medium: 500,
    bold: 600,
    black: 700,
  },
};

export default font;
import request from 'supertest'
import { app } from '../../app'
import { Ticket } from '../../models/ticket'
import { Order } from '../../models/order'
import { UserPayload } from '../../test/setup'
import mongoose from 'mongoose'

function randomIntFromInterval(min: number, max: number) {
  // min and max included
  return Math.floor(Math.random() * (max - min + 1) + min)
}

async function createOrderForUser(i: number, user: UserPayload) {
  const ticket = Ticket.build({
    price: randomIntFromInterval(1, 100),
    title: `ticket#${i + 1}`,
    id: mongoose.Types.ObjectId().toHexString(),
  })
  await ticket.save()
  await request(app)
    .post('/api/orders')
    .set('Cookie', global.signin(user))
    .send({ ticketId: ticket.id })
}

it('returns the list of orders for a given user', async () => {
  const user1 = {
    id: 'user1',
    email: 'user1@test.com',
  }
  await createOrderForUser(1, user1)

  const user2 = {
    id: 'user2',
    email: 'user2@test.com',
  }
  await createOrderForUser(1, user2)
  await createOrderForUser(2, user2)

  const user3 = {
    id: 'user3',
    email: 'user3@test.com',
  }
  await createOrderForUser(1, user3)
  await createOrderForUser(2, user3)
  await createOrderForUser(3, user3)

  const res1 = await request(app)
    .get('/api/orders')
    .set('Cookie', global.signin(user1))
    .send({})

  expect(res1.status).toBe(200)
  expect(res1.body.length).toBe(1)

  const res2 = await request(app)
    .get('/api/orders')
    .set('Cookie', global.signin(user2))
    .send({})

  expect(res2.status).toBe(200)
  expect(res2.body.length).toBe(2)

  const res3 = await request(app)
    .get('/api/orders')
    .set('Cookie', global.signin(user3))
    .send({})

  expec


 Maxs.v, EntityList, MAX_GENTITIES);
	for (int i=0; i<numFound; i++)
	{
		neighbor = EntityList[i];
		assert(neighbor!=0);

		if (neighbor->s.number==actor->s.number || neighbor==actor->enemy || !neighbor->client || neighbor->health<=0 || !neighbor->inuse)
		{
			continue;
		}

		suser.mNeighbors.push_back(neighbor);
	}

	// Clear Out Steering, So If No STEER Operations Are Called, Net Effect Is Zero
	//------------------------------------------------------------------------------
	suser.mSteering.Clear();
	suser.mNewtons		= 0.0f;

	VectorClear(actor->client->ps.moveDir);
				actor->client->ps.speed = 0;

// PHASE III - Project The Current Velocity Forward, To The Side, And Onto The Path
//==================================================================================
	suser.mProjectFwd	= suser.mPosition + (suser.mVelocity * 1.0f);
	suser.mProjectSide	=                   (suser.mVelocity * 0.3f);
	suser.mProjectSide.Reposition(suser.mPosition, (actor->NPC->avoidSide==Side_Left)?(40.0f):(-40.0f));

	// STEER_TODO: Project The Point The Path (If The character has one)
	//-------------------------------------------------------------------
	//suser.mProjectPath	= ;

}

//////////////////////////////////////////////////////////////////////
// DeActivate
//
// This function first scales back the composite steering vector to
// the max force range, and if there is any steering left, it
// applies the steering to the velocity.  Velocity is also truncated
// to be less than Max Speed.
//
// Finaly, the results are copied onto the entity and the steer user
// struct is freed for use by another entity.
//////////////////////////////////////////////////////////////////////
void			STEER::DeActivate(gentity_t* actor, usercmd_t* ucmd)
{
	assert(Active(actor) && actor && actor->client && actor->NPC);		// Can't Deactivate If Never Activated
	SSteerUser& suser = mSteerUsers[mSteerUserIndex[actor->s.number]];

#ifdef _DEBUG
	assert(suser.mPosition.IsFinite());
	assert(suser.mOrientation.IsFinite());
	assert(suser.mSteering.IsFinite());
	assert(suser.mMass!=0.0f);
#endif

// PHASE I - TRUNCATE STEERING AND APPLY TO VELOCITY
//===================================================
	suser.mNewtons	 = suser.mSteering.Truncate(suser.mMaxForce);
	if (suser.mNewtons>1E-10)
	{
		suser.mSteering /= suser.mMass;
		suser.mVelocity += suser.mSteering;
		suser.mSpeed	 = suser.mVelocity.Truncate(suser.mMaxSpeed);

		// DEBUG GRAPHICS
		//=================================================================
		if (NAVDEBUG_showCollision)
		{
			CVec3 EndThrust(suser.mPosition+suser.mSteering);
			CVec3 EndVelocity(suser.mPosition+suser.mVelocity);

			CG_DrawEdge(suser.mPosition.v, EndThrust.v,		EDGE_THRUST);
			CG_DrawEdge(suser.mPosition.v, EndVelocity.v,	EDGE_VELOCITY);
		}
		//=================================================================
	}
	if (suser.mSpeed<10.0f)
	{
		suser.mSpeed = 0.0f;
	}

// PHASE II - CONVERT VELOCITY TO MOVE DIRECT


:0;}
		ul.index li {margin-left: 0; text-indent:-20px; padding-left:20px;}
	</style>

Demopædia

Multilingual Demographic Dictionary

unified second edition, English volume

   <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6CAYAAACI7Fo9AAAgAElEQVR4nOy9eYxkR3of+Hsv76Py6jq67q7u6pN9N7vZbDY5JDVDcjQeeTQaj2R5YK/ltbErW9gda2VjIQmCYAwEQ5BtYaFdaC3sWtZC2LW9oxFmtLLm4tGc5tVs9ll9VFVXVdeddeR9vXP/eBnxIuLFyyreHLI+IJGZ8eJ6EfH7vi+++CIC2KEd2qEd2qEd2qEd2qEd2qEd2qEd2qEd2qEd2qEd2qEd2qEd2qEd2qEd2qEd2qEd2qEd2qEd2qEd+jSR8nFXYIc+eGo2m0EAWFhYSA4NDVVt24aiKDBNUzVNUw0Gg8bq6moylUrVo9EoFEWBpmlqKBSyVFW1YrGY8XG/ww59sBT8uCuwQ9sn0zRRr9fjwWBQA6Bevnz5YiKR6B0cHIwuLy+Hh4aGkmtra8eazaZmmubR1dXV7u7u7nXLslQAsG0btm0HdV03QqFQxrKscqPRsGzbRq1WC+u6rq2srBjT09N/1dXVVS6VSqOpVGratu1yuVwu7969+5VQKGSoqmoEg0EjEAh8zC2yQ9ulHYn+CSRN09SlpSW1Xq8HM5lMrlKpDMTj8S8bhjEUDodPJhKJkUAgAF3XU81mM1ypVKAoCtLpNFRVRTgcRqvVQiAQAAGjbds0f/H3+vo67ty5gwMHDiAej6PVaiGdTkNRFBrHsixDUZSypmlWIBBYUhTlx8vLy0FFUf64p6dHDYVCU+FwWMtkMgYA7DCBTxbtAP0TQrquq6+99tq5Q4cOdQMYV1VVK5VKf09RlOPBYDBZLpcxPDzsAZBt2zAMA/l8Hn19fVheXkalUsHBgwe5eKZpYnNzE5lMBoFAANVqFWtra+jv70ckEsHGxgai0SjW1tbQ1dWFzc1NDA8PIxgMEk2Alke+m80mVlZWkEqlmvV6/VZ/f/8mgIeKovxVOBy+HI1Gy4lEorkD+o+fdoD+MZ


drv.read_cb = fs_read;
    drv.write_cb = fs_write;
    drv.seek_cb = fs_seek;
    drv.tell_cb = fs_tell;
    lv_fs_drv_register(&drv);
}

URLService::~URLService() {}

bool URLService::load(const char *name, void *img)
{
    return false; // TODO
}

void *URLService::fs_open(lv_fs_drv_t *drv, const char *path, lv_fs_mode_t mode)
{
    return nullptr; // TODO
}

lv_fs_res_t URLService::fs_close(lv_fs_drv_t *drv, void *file_p)
{
    return LV_FS_RES_NOT_IMP;
}

lv_fs_res_t URLService::fs_read(lv_fs_drv_t *drv, void *file_p, void *buf, uint32_t btr, uint32_t *br)
{
    return LV_FS_RES_NOT_IMP;
}

lv_fs_res_t URLService::fs_write(lv_fs_drv_t *drv, void *file_p, const void *buf, uint32_t btw, uint32_t *bw)
{
    return LV_FS_RES_NOT_IMP;
}

lv_fs_res_t URLService::fs_seek(lv_fs_drv_t *drv, void *file_p, uint32_t pos, lv_fs_whence_t whence)
{
    return LV_FS_RES_NOT_IMP;
}

lv_fs_res_t URLService::fs_tell(lv_fs_drv_t *drv, void *file_p, uint32_t *pos_p)
{
    return LV_FS_RES_NOT_IMP;
}
#if HAS_TFT && defined(VIEW_480x222)

#include "graphics/view/TFT/TFTView_480x222.h"
#include "graphics/common/ViewController.h"
#include "graphics/driver/DisplayDriverFactory.h"
#include "ui.h" // this is the ui generated by eez-studio / lvgl
#include "util/ILog.h"
#include <cstdio>
#include <ctime>
#include <functional>

TFTView_480x222 *TFTView_480x222::gui = nullptr;

TFTView_480x222 *TFTView_480x222::instance(void)
{
    if (!gui)
        gui = new TFTView_480x222(nullptr, DisplayDriverFactory::create(480, 320));
    return gui;
}

TFTView_480x222 *TFTView_480x222::instance(const DisplayDriverConfig &cfg)
{
    if (!gui)
        gui = new TFTView_480x222(&cfg, DisplayDriverFactory::create(cfg));
    return gui;
}

TFTView_480x222::TFTView_480x222(const DisplayDriverConfig *cfg, DisplayDriver *driver)
    : MeshtasticView(cfg, driver, new ViewController)
{
}

void TFTView_480x222::init(IClientBase *client)
{
    ILOG_DEBUG("TFTView_480x222 init...");
    MeshtasticView::init(client);
    ui_init();
}

void TFTView_480x222::task_handler(void)
{
    MeshtasticView::task_handler();
}

#endif#include "RedirectablePrint.h"
#include "NodeDB.h"
#include "RTC.h"
#include "concurrency/OSThread.h"
#include "configuration.h"
#include "main.h"
#include "memGet.h"
#include "mesh/generated/meshtastic/mesh.pb.h"
#include <assert.h>
#include <cstring>
#include <memory>
#include <stdexcept>
#include <sys/time.h>
#include <time.h>

#ifdef ARCH_PORTDUINO
#include "platform/portduino/PortduinoGlue.h"
#endif

#if HAS_NETWORKING
extern Syslog syslog;
#endif
void RedirectablePrint::rpInit()
{
#ifdef HAS_FREE_RTOS
    inDebugPrint = xSemaphoreCreateMutexStatic(&this->_MutexSt


Layout.EAST);
    add(helpPanel, help);

    // Make test list:
    testlist = new java.awt.List();
    testlist.setFont(new Font("courier", Font.PLAIN, 17));

    for (int i = 0; i < this.args.length; i++) {
      testlist.add("( ) " + this.strippedNames[i]);
    }

    testlist.addActionListener(this);

    // Make controls:
    east = new Panel(new GridLayout(3, 1));
    east.add(makeButton(quit));
    east.add(makeButton(auto));
    east.add(makeButton(ret));

    menuPanel.add(testlist, BorderLayout.CENTER);
    menuPanel.add(east, BorderLayout.EAST);
    add(menuPanel,menu);

    // make the quit query panel
    Panel quitPanel = new Panel(new BorderLayout());
    quitPanel.setFont(new Font("courier",0,18));
    Label quitMessage = new Label("Do you really want to quit ?",Label.CENTER);
    quitMessage.setBackground(Color.red);
    quitPanel.add(quitMessage  ,BorderLayout.NORTH);
    Panel bpanel = new Panel();
    Button cbutton = makeButton(exit);
    cbutton.setBackground(Color.red);
    bpanel.add(cbutton);
    cbutton = makeButton(justK);
    cbutton.setBackground(Color.green);
    bpanel.add(cbutton);

    quitPanel.add(bpanel ,BorderLayout.CENTER);

    add(quitPanel,exit);

    if (autorun) {
      update = false;
      millis2 = System.currentTimeMillis();
      Summary.init(millis2);
      autorunner = new AutoRunner(this, sleepingTime, autorunTime, exitAfterAutorun);
      runCount = 0;
      shuffle(disp);
    }
    else {
      LoadTest();
    }

    new TimerThread(this, info, tg);
  }

  public long getRoundTrip() {
    return millis2 - millis1;
  }

// ActionListener methods ...
  public void actionPerformed(ActionEvent e) {
    String id = e.getActionCommand();
    if (autorun) {
      index = 0;
      idx_vector.clear();
      autorun = false;
      autorunner.stop();

//      return;
    }

    if (ok.equals(id)) {
      Summary.testOK();
      log(true, args[idx]);
    }
    else if (bad.equals(id)) {
      Summary.testBad();
      log(false, args[idx]);
    }
    else if (menu.equals(id)) {
      testlist.removeAll();
      for (int i = 0; i < this.args.length; i++) {
        testlist.add("( ) " + this.strippedNames[i]);
      }
      testlist.select(idx);
      test.hideTest();
      shuffle(id);
    }
    else if (help.equals(id)) {
      test.hideTest();
      shuffle(id);
    }
    else if (back.equals(id)) {
      test.showTest();
      shuffle(disp);
    }
    else if (ret.equals(id)) {
      idx_vector.clear();
      if (update) {
        update = false;
        --index;
        LoadTest();
      }
      test.showTest();
      shuffle(disp);
    }
    else if (next.equals(id)) {
      if (++idx == args.length) {
        idx = 0;
      }
      LoadTest();
    }
    else if (prev.equals(id)) {
      if (--idx == -1) {
        idx = args.length - 1;
      }
      LoadTest();
    }
    else if (testlist.equals(e.getSource())) {
      int testindex = testlist.getSelectedIndex();
      Integer testindex_integer = new Integer(testindex);

      String testname = testlist.getSelectedItem();
      String


:= dAtA[iNdEx]
					iNdEx++
					byteLen |= int(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
				if byteLen < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				postIndex := iNdEx + byteLen
				if postIndex < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if postIndex > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				x.PartialSignature = append(x.PartialSignature[:0], dAtA[iNdEx:postIndex]...)
				if x.PartialSignature == nil {
					x.PartialSignature = []byte{}
				}
				iNdEx = postIndex
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

var (
	md_MsgSubmitGroupKeyValidationSignatureResponse protoreflect.MessageDescriptor
)

func init() {
	file_inference_bls_tx_proto_init()
	md_MsgSubmitGroupKeyValidationSignatureResponse = File_inference_bls_tx_proto.Messages().ByName("MsgSubmitGroupKeyValidationSignatureResponse")
}

var _ protoreflect.Message = (*fastReflection_MsgSubmitGroupKeyValidationSignatureResponse)(nil)

type fastReflection_MsgSubmitGroupKeyValidationSignatureResponse MsgSubmitGroupKeyValidationSignatureResponse

func (x *MsgSubmitGroupKeyValidationSignatureResponse) ProtoReflect() protoreflect.Message {
	return (*fastReflection_MsgSubmitGroupKeyValidationSignatureResponse)(x)
}

func (x *MsgSubmitGroupKeyValidationSignatureResponse) slowProtoReflect() protoreflect.Message {
	mi := &file_inference_bls_tx_proto_msgTypes[7]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

var _fastReflection_MsgSubmitGroupKeyValidationSignatureResponse_messageType fastReflection_


 true
				for _, node := range originalNodes.Items {
					if _, err := leaseClient.Get(node.ObjectMeta.Name, metav1.GetOptions{}); err != nil {
						e2elog.Logf("Try to get lease of node %s, but got error: %v", node.ObjectMeta.Name, err)
						pass = false
					}
				}
				if pass {
					return nil
				}
				return fmt.Errorf("some node lease is not ready")
			}, 1*time.Minute, 5*time.Second).Should(gomega.BeNil())

			targetNumNodes := int32(framework.TestContext.CloudConfig.NumNodes - 1)
			ginkgo.By(fmt.Sprintf("decreasing cluster size to %d", targetNumNodes))
			err = framework.ResizeGroup(group, targetNumNodes)
			gomega.Expect(err).To(gomega.BeNil())
			err = framework.WaitForGroupSize(group, targetNumNodes)
			gomega.Expect(err).To(gomega.BeNil())
			err = e2enode.WaitForReadyNodes(c, framework.TestContext.CloudConfig.NumNodes-1, 10*time.Minute)
			gomega.Expect(err).To(gomega.BeNil())
			targetNodes := framework.GetReadySchedulableNodesOrDie(c)
			gomega.Expect(len(targetNodes.Items)).To(gomega.Equal(int(targetNumNodes)))

			ginkgo.By("verify node lease is deleted for the deleted node")
			var deletedNodeName string
			for _, originalNode := range originalNodes.Items {
				originalNodeName := originalNode.ObjectMeta.Name
				for _, targetNode := range targetNodes.Items {
					if originalNodeName == targetNode.ObjectMeta.Name {
						continue
					}
				}
				deletedNodeName = originalNodeName
				break
			}
			gomega.Expect(deletedNodeName).NotTo(gomega.Equal(""))
			gomega.Eventually(func() error {
				if _, err := leaseClient.Get(deletedNodeName, metav1.GetOptions{}); err == nil {
					return fmt.Errorf("node lease is not deleted yet for node %q", deletedNodeName)
				}
				return nil
			}, 1*time.Minute, 5*time.Second).Should(gomega.BeNil())

			ginkgo.By("verify node leases still exist for remaining nodes")
			gomega.Eventually(func() error {
				for _, node := range targetNodes.Items {
					if _, err := leaseClient.Get(node.ObjectMeta.Name, metav1.GetOptions{}); err != nil {
						return err
					}
				}
				return nil
			}, 1*time.Minute, 5*time.Second).Should(gomega.BeNil())
		})
	})
})
/*
Copyright 2018 The Kubernetes Authors.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package storage

import (
	"github.com/onsi/ginkgo"
	"k8s.io/api/core/v1"
	clientset "k8s.io/client-go/kubernetes"
	v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
	"k8s.io/kubernetes/test/e2e/framework"
	"k8s.io/kubernetes/test/e2e/storage/utils"
)

var _ = utils.SIGDescribe("Volume limits", func() {
	var (


 eval_time)[0]) == 0:
                    tmp_idx += [0]
                else:
                    tmp_idx += [np.where(tmp_pred[0].x <= eval_time)[0][-1]]

            preds_    = np.zeros([len(tmp_pred), len(tmp_pred[0].x)])
            for i in range(len(tmp_pred)):
                preds_[i, :] = 1. - tmp_pred[i].y
            preds_    = preds_[:, tmp_idx]

        else:
            preds_ = self.model.predict(X)

        return preds_

#-----------------------------------------------------------------
class CoxPH(sksurvSurvival):
    " Cox proportional hazard model "

    def __init__(self, alpha=0.05):
        super(CoxPH, self).__init__()
        # super().__init__()

        self.name          = 'CoxPH'
        self.explained     = "*Cox proportional model"

        self.model         = CoxPHSurvivalAnalysis(alpha=alpha)

    def get_hyperparameters(self):
        return {'alpha': self.model.alpha}

#-----------------------------------------------------------------
class RSF(sksurvSurvival):
    " Random survival forest "

    def __init__(self, n_estimators=100):
        super(RSF, self).__init__()
        # super().__init__()

        self.name          = 'RSF'
        self.explained     = "*Random survival forest"

        self.model         = RandomSurvivalForest(n_estimators=n_estimators)

    def get_hyperparameters(self):
        return {'n_estimators': self.model.n_estimators}

#-----------------------------------------------------------------
class ExtSurv(sksurvSurvival):
    def __init__(self, n_estimators=100):
        super(ExtSurv, self).__init__()
        # super().__init__()

        self.name          = 'ExtSurv'
        self.explained     = "*Extreme survival tree"

        self.model         = ExtraSurvivalTrees(n_estimators=n_estimators)

    def get_hyperparameters(self):
        return {'n_estimators': self.model.n_estimators}

#-----------------------------------------------------------------
class CoxBoost(sksurvSurvival):
    def __init__(self, n_estimators=100):
        super(CoxBoost, self).__init__()
        # super().__init__()

        self.name          = 'CoxBoost'
        self.explained     = "*Gradient Boosting Survival Analysis"

        self.model         = GradientBoostingSurvivalAnalysis(n_estimators=n_estimators)

    def get_hyperparameters(self):
        return {'n_estimators': self.model.n_estimators}


？|
|学术论文|请分析并总结近年来区块链技术的发展趋势。|
|商业分析|针对目前市场上的智能家居产品，分析其未来的发展前景。|
|电商推荐系统|请问如何设计一个电商推荐系统，以提高用户满意度和销售额？|
|人脸识别技术|请列举几种常见的人脸识别技术，并分析它们的优缺点。|
|自然语言处理|你认为自然语言处理在智能客服中的应用有哪些，如何实现呢？|
|社交媒体营销|请介绍一下如何通过社交媒体平台进行营销，并具体说明成功案例。|
|AI辅助医疗|目前AI在医疗行业的应用有哪些，如何保证数据的隐私安全？|
|电子商务运营|请问如何提升电子商务店铺的转化率和营收，有哪些有效的策略可以借鉴？|
|网络爬虫工具|请问有哪些常用的网络爬虫工具，各有什么特点和适用场景？|
|视频内容审核|请介绍一下视频内容的审核标准，以及现有的审核技术和方法。|
|基于深度学习的图像识别|请问如何使用深度学习算法来实现图像识别，需要注意哪些问题？|
|金融风控模型|请列举目前比较流行的金融风控模型，及其优缺点与应用场景。|
| 分类              | 给我一些关于烘焙的问题，要求这些问题能够让人回答自己是否了解烘焙                                                                                |
| 编辑              | 下面这段话有语法和拼写错误，请帮我修改一下： 「今天我去商场，买了许多衣服，结果发现我竟然把钱包�


previousLine.trim().beforeIsIndentable() -> {
					EnterHandlerDelegate.Result.Continue
				}
				lineStart.isBlank() -> {
					document.deleteString(lineStartOffset, lineStartOffset + indentSize)
					EnterHandlerDelegate.Result.Stop
				}
				lineStart.startsWith('\t') -> {
					document.deleteString(lineStartOffset, lineStartOffset + 1)
					EnterHandlerDelegate.Result.Stop
				}
				else -> EnterHandlerDelegate.Result.Continue
			}
		}

		// insert indent when previousLine beforeIsIndentable to first line of indentStatements
		// note: `previousLine` is the `currentLine` before ENTER pressed.
		if (previousLine.trimStart().beforeIsIndentable()) {
			if (pos.line == 0) return EnterHandlerDelegate.Result.Continue
			val previousLineStart4Chars =
				tryRun { document.charsSequence.substring(previousLineStartOffset, previousLineStartOffset + 4) }
					?: return EnterHandlerDelegate.Result.Continue
			// depends on previous' indent
			return when {
				previousLineStart4Chars.isBlank() -> {
					document.insertString(lineStartOffset, StringUtil.repeat(" ", indentSize))
					EnterHandlerDelegate.Result.Stop
				}
				previousLineStart4Chars.startsWith('\t') -> {
					document.insertString(lineStartOffset, "\t")
					EnterHandlerDelegate.Result.Stop
				}
				else -> {
					document.insertString(lineStartOffset, StringUtil.repeat(" ", indentSize))
					EnterHandlerDelegate.Result.Stop
				}
			}
		} else {
			return EnterHandlerDelegate.Result.Continue
		}
	}

	override fun preprocessEnter(file: PsiFile, editor: Editor, caretOffset: Ref<Int>, caretAdvance: Ref<Int>, dataContext: DataContext, originalHandler: EditorActionHandler?): EnterHandlerDelegate.Result {
		return EnterHandlerDelegate.Result.Continue
	}
}

private fun String.afterIsDeletable(): Boolean = this.trim() == "end"
	|| this.startsWith("elseif ") || this.startsWith("elseif(")
	|| this.trim() == ("else")

private fun String.beforeIsIndentable(): Boolean =
	this.startsWith("module ")
		|| this.startsWith("function ") || this.startsWith("primitive ")
		|| this.startsWith("type ") || this.startsWith("abstract ")
		|| this.startsWith("immutable ") || this.startsWith("mutable ")
		|| this.startsWith("if ") || this.startsWith("if(")
		|| this.startsWith("else")
		|| this.startsWith("elseif ") || this.startsWith("elseif(")
		|| this.startsWith("while ") || this.startsWith("while(")

/**
 * this class seems never used.
 */
class JuliaQuoteHandler : QuoteHandler {
	override fun isOpeningQuote(iterator: HighlighterIterator, offset: Int): Boolean {
		val tokenType = iterator.tokenType
		if (tokenType == JuliaTypes.STRING || tokenType == JuliaTypes.CHAR_LITERAL) {
			val start = iterator.start
			return offset == start
		}
		return false
	}

	override fun hasNonClosedLiteral(editor: Editor?, iterator: HighlighterIterator?, offset: Int): Boolean {
		return true
	}

	override fun isClosingQuote(iterator: HighlighterIterator, offset: Int): Boolean {
		val tokenType = iterator.tokenType

		if (tokenType == JuliaTypes.CHAR_LITERAL) {
			val start = iterator.start
			val end = iterator.end
			return end - start >= 1 && offset == end - 1
		} else if (tokenType == JuliaTypes.QUOTE_END || tokenType == JuliaTypes.CMD_QUOTE_END) {
			return true
		}
		return false
	}

	override fun isInsideLiteral(iterator


(null);

  // Enhanced states
  const [showHashtags, setShowHashtags] = useState(false);
  const [showEmojis, setShowEmojis] = useState(false);
  const [showFormatting, setShowFormatting] = useState(false);
  const [backgroundColor, setBackgroundColor] = useState('bg-white');
  const [charCount, setCharCount] = useState(0);
  const [showBackgroundOptions, setShowBackgroundOptions] = useState(false);
  const [previewImage, setPreviewImage] = useState(null);
  const [isDraftSaved, setIsDraftSaved] = useState(false);
  const [isExpanded, setIsExpanded] = useState(false);
  const [showGifSelector, setShowGifSelector] = useState(false);
  const [showPollOptions, setShowPollOptions] = useState(false);
  const [pollOptions, setPollOptions] = useState(['', '']);
  const [pollDuration, setPollDuration] = useState(24);
  const [showAdvancedOptions, setShowAdvancedOptions] = useState(false);
  const [mood, setMood] = useState('');
  const [isPollSaved, setIsPollSaved] = useState(false);

  useEffect(() => {
    setIsClient(true);
    if (isLoggedIn) {
      dispatch(fetchUserDetails());
    }

    // Load draft from local storage
    const savedDraft = localStorage.getItem('postDraft');
    if (savedDraft) {
      try {
        const draft = JSON.parse(savedDraft);
        setContent(draft.content || '');
        setImage(draft.image || '');
        setIsDraftSaved(true);
      } catch (e) {
        console.error('Failed to load draft', e);
      }
    }

    // Auto save draft every 30 seconds
    const intervalId = setInterval(() => {
      if (content.trim() || image) {
        saveDraft();
      }
    }, 30000);

    // Cleanup
    return () => clearInterval(intervalId);
  }, [isLoggedIn, dispatch]);

  // Update character count when content changes
  useEffect(() => {
    setCharCount(content.length);
  }, [content]);

  const validate = () => {
    const errors = {};
    if (!content.trim() && !image && !previewImage) {
      errors.content = 'Post content or image is required.';
    }
    setErrors(errors);
    return Object.keys(errors).length === 0;
  };

  const saveDraft = () => {
    if (content.trim() || image) {
      localStorage.setItem('postDraft', JSON.stringify({ content, image }));
      setIsDraftSaved(true);

      // Show saved notification briefly
      setTimeout(() => {
        setIsDraftSaved(false);
      }, 2000);
    }
  };

  const discardDraft = () => {
    localStorage.removeItem('postDraft');
    setContent('');
    setImage('');
    setPreviewImage(null);
    setIsDraftSaved(false);
  };

  const handleSubmit = async (e) => {
    e.preventDefault();

    if (!validate()) return;

    setLoading(true);
    try {
      // Include poll data if poll is being created
      const postData = {
        content,
        image: previewImage || image,
        backgroundColor,
        feeling: mood || '',
      };

      if (isPollSaved && pollOptions.filter(opt => opt.trim()).length >= 2) {
        postData.pollData = {
          options: pollOptions.filter(opt => opt.trim()),
          duration: pollDuration
        };
      }

      // If a file is selected, send it via FormData through the thunk
      if (imageFile) {
        await dispatch(createPost({ ...postData, imageFile })).unwrap();
      } else {
        await dispatch(createPost(postData)).unw


 parameter [name]
     */
    fun getInt(name: String) = get(name) as Int

    /**
     * Returns the [Double] value for the provided parameter [name]
     */
    fun getDouble(name: String) = get(name) as Double

}

/*
 * Copyright 2020-2025 Neural Layer
 *
 * 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
 *
 *      https://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.
 */

package org.roboquant.feeds.csv

import org.roboquant.common.Asset
import org.roboquant.common.Currency
import org.roboquant.common.Stock

/**
 *
 */
fun interface AssetBuilder {

    /**
     * Based on a [name], return an instance of [Asset]
     */
    fun build(name: String): Asset
}

/**
 * The default asset builder uses a file name without its extension as the symbol name.
 */
class StockBuilder(private val currency: Currency = Currency.USD) : AssetBuilder {

    private val notCapital = Regex("[^A-Z]")

    /**
     * @see AssetBuilder.build
     */
    override fun build(name: String): Asset {
        var symbol = name.removeSuffix(".csv").removeSuffix(".txt")
        symbol = symbol.uppercase().replace(notCapital, ".")
        return Stock(symbol, currency)
    }

}
/*
 * Copyright 2020-2025 Neural Layer
 *
 * 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
 *
 *      https://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.
 */

package org.roboquant.journals.metrics

import org.roboquant.common.Account
import org.roboquant.common.Event
import org.roboquant.common.Order
import org.roboquant.common.Signal

/**
 * Capture the following high-level statistics about the [Account]:
 *
 * - `account.order`  Number of orders (within retention period),
 * - `account.trades`  Number of trades (within retention period),
 * - `account.positions` Number of open positions
 * - `account.cash` Total cash value
 * - `account.buyingpower` Buying power available
 * - `account.equity` the equity value of the account (= cash + positions)
 * - `aacount.mdd` the max drawdown of the account
 *
 * All monetary values are denoted in the base currency of the account.
 *
 * @constructor Create new AccountMetric instance
 */
class AccountMetric : Metric {

    private var peak = Double.MIN_VALUE
    private var mdd = Double.MAX_VALUE

    /**
     * @see Metric.calculate
     */
    override fun calculate(event: Event, account: Account, signals: List<Signal>, orders: List<Order>) = buildMap {

        val equity = account.convert(account.equity()).value
        if (equity > peak) peak = equity
        val dd = (equity - peak) / peak
        if (dd < mdd) mdd = dd

        put("account.orders", (account.orders.size).toDouble())
        put("account.positions", account.positions.size.toDouble())
        put("account.cash", account.convert(account.cash).value)
        put("account.buyingpower", account.buyingPower.value)
        put("account.equity", equity)
        put("account.md


import wfdb
import numpy as np
import pywt
from scipy.signal import butter, sosfilt, medfilt, filtfilt
from sklearn.model_selection import train_test_split
from joblib import Parallel, delayed
import pickle
import os

def load_ecg_data(record_path):
    record = wfdb.rdrecord(record_path[:-4])
    annotation = wfdb.rdann(record_path[:-4], 'atr')

    # p_signal의 길이와 동일한 길이의 labels_list 초기화 (0으로 채움)
    label = np.zeros(len(record.p_signal), dtype=int)

    # AFIB 구간을 1로 표시
    afib_indices = np.where(np.isin(annotation.symbol, ['~']))[0]
    for idx in afib_indices:
        start_idx = annotation.sample[idx]
        end_idx = annotation.sample[idx + 1] if idx + 1 < len(annotation.sample) else len(label)
        label[start_idx:end_idx] = 1

    return record.p_signal, record.fs, label

def load_dataset(dataset_path, file_extension):
    ecg_signals = []
    patient_ids = []
    labels = []

    for file_name in os.listdir(dataset_path):
        if file_name.endswith(file_extension):
            file_path = os.path.join(dataset_path, file_name)
            ecg_data, fs, label = load_ecg_data(file_path)
            ecg_signals.append((ecg_data, fs))
            patient_ids.append(file_name.split('_')[0])
            labels.append(label)

    return ecg_signals, patient_ids, labels

def load_split_signals(dir_path, prefix):

    file_path = os.path.join(dir_path, f'{prefix}_split_signals.pkl')
    print(file_path)
    with open(file_path, 'rb') as f:
        return pickle.load(f)

def split_data(signals, patient_ids, labels, test_size=0.2):
    unique_ids = list(set(patient_ids))
    train_ids, val_ids = train_test_split(unique_ids, test_size=test_size, random_state=42)

    train_signals = [signals[i] for i in range(len(signals)) if patient_ids[i] in train_ids]
    val_signals = [signals[i] for i in range(len(signals)) if patient_ids[i] in val_ids]

    # label
    train_labels = [labels[i] for i in range(len(labels)) if patient_ids[i] in train_ids]
    val_labels = [labels[i] for i in range(len(labels)) if patient_ids[i] in val_ids]

    return train_signals, val_signals, train_labels, val_labels

def check_missing_values(signal, stage):
    if np.any(np.isnan(signal)):
        #print(f"Missing values detected after {stage}")
        Missingg_value = True
    else:
        Missingg_value = False

    return Missingg_value

def bandstop_filter(signal, fs, lowcut=50.0, highcut=60.0, order=2):
    nyquist = 0.5 * fs
    low = lowcut / nyquist
    high = highcut / nyquist
    b,a = butter(order, [low, high], btype='bandstop', fs=fs)
    #sos = butter(order, [low, high], btype='bandstop', output='sos')

    # 각 리드에 대해 독립적으로 필터링을 적용
    #filtered_signal = np.array([sosfilt(sos, signal[:, i]) for i in range(signal.shape[1])]).T
    filtered_signal = np.array([filtfilt(b,a, signal[:, i]) for i in range(signal.shape[1])]).T

    return filtered_signal

def remove_baseline_wander(signal, fs, wavelet='db4', level=2):
    baseline_removed_signal = np.zeros_like(signal)

    def process_lead(lead_signal):

        coeffs = pywt.wavedec(lead_signal, wavelet, level=level)
        coeffs[0] = np.zeros_like(coeffs[0])
        baseline_wander_signal = pywt.waverec(coeffs, wavelet)

        if len(baseline_wander_signal) > len(lead_signal):
            baseline_wander_signal = baseline_wander_signal[:len(lead_signal)]
        elif len(baseline_wander_signal) < len(lead_signal):
            baseline_wander_signal = np.pad(baseline_wander_signal, (0, len(lead_signal) - len(baseline_wander_signal)), 'constant')

        remove_signal = lead_signal - baseline_wander_signal
        #lowpassed = medfilt(remove_signal, kernel_size=fs + 1)
        return remove_signal #- lowpassed

    # 각 리드를 순차적으로 처리
    for i in range(signal.shape[1]):
        baseline_removed_signal[:, i] = process_lead(signal[:, i])

    Missingg_value = check_missing_values(baseline_removed_signal, "remove_baseline_wander")
    return baseline_removed_signal, Missingg_value

def preprocess_ecg_signal(signal, fs):
    filtered_signal = bandstop_filter(signal, fs)
    cleaned_signal,Missingg_value  = remove_baseline_wander(filtered_signal, fs)
    return cleaned_signal, Missingg_value

def process_signals(signals, labels):

    processed_signals = []
    split_labels = []

    for idx, (signal, fs) in enumerate(signals):
        cleaned_signal, Missingg_value = preprocess_ecg_signal(signal,


ic void Should_add_error_if_editor_is_not_valid()
    {
        var sut = new DateTimeFieldProperties { Editor = (DateTimeFieldEditor)123 };

        var errors = FieldPropertiesValidator.Validate(sut).ToList();

        errors.Should().BeEquivalentTo(
            [
                new ValidationError("Editor is not a valid value.", "Editor"),
            ]);
    }

    [Fact]
    public void Should_add_error_if_calculated_default_value_is_not_valid()
    {
        var sut = new DateTimeFieldProperties { CalculatedDefaultValue = (DateTimeCalculatedDefaultValue)123 };

        var errors = FieldPropertiesValidator.Validate(sut).ToList();

        errors.Should().BeEquivalentTo(
            [
                new ValidationError("Calculated default value is not a valid value.", "CalculatedDefaultValue"),
            ]);
    }

    [Fact]
    public void Should_add_error_if_calculated_default_value_default_value_is_defined()
    {
        var sut = new DateTimeFieldProperties { CalculatedDefaultValue = DateTimeCalculatedDefaultValue.Now, DefaultValue = FutureDays(10) };

        var errors = FieldPropertiesValidator.Validate(sut).ToList();

        errors.Should().BeEquivalentTo(
            [
                new ValidationError("Calculated default value and default value cannot be used together.", "CalculatedDefaultValue", "DefaultValue"),
            ]);
    }

    private static Instant FutureDays(int days)
    {
        return SystemClock.Instance.GetCurrentInstant().WithoutMs().Plus(Duration.FromDays(days));
    }
}


rchive]),
      gzipArchive.length,
      filename: '$name-$version.tar',
      contentType: MediaType('application', 'x-tar'),
    );

    final request =
        MultipartRequest("POST", _buildUri('/packages/versions/newUpload'));
    request.headers.addAll({
      'authorization': 'bearer $accessKey',
    });
    request.files.add(file);
    final response = await request.send();
    if (response.statusCode == 302) {
      print("Uploaded!");
      await response.stream.toList();
    } else {
      throw Exception('Upload failed with code ${response.statusCode}');
    }
  }

  @override
  Map<String, String> get headers => {
        ...super.headers,
        'authorization': 'bearer $accessKey',
      };
}
import 'package:flutter/widgets.dart';

const neutralTestDevices = <String, MediaQueryData>{
  'small-portrait': MediaQueryData(
    devicePixelRatio: 2.0,
    size: Size(190, 400),
  ),
  'small-landscape': MediaQueryData(
    devicePixelRatio: 2.0,
    size: Size(400, 190),
  ),
  'medium-portrait': MediaQueryData(
    devicePixelRatio: 2.0,
    size: Size(320, 780),
  ),
  'medium-landscape': MediaQueryData(
    devicePixelRatio: 2.0,
    size: Size(780, 320),
  ),
  'large-portrait': MediaQueryData(
    devicePixelRatio: 2.0,
    size: Size(540, 1280),
  ),
  'large-landscape': MediaQueryData(
    devicePixelRatio: 2.0,
    size: Size(1280, 540),
  ),
};

const iOSTestDevices = <String, MediaQueryData>{
  'iPhone13-portrait': MediaQueryData(
    devicePixelRatio: 2.0,
    size: Size(390, 844),
    padding: EdgeInsets.only(
      top: 47.0,
      bottom: 34,
    ),
  ),
  'iPhone13-landscape': MediaQueryData(
    devicePixelRatio: 2.0,
    size: Size(844, 390),
    padding: EdgeInsets.only(
      left: 47.0,
      right: 47.0,
    ),
  ),
};
const testDevices = <String, Map<String, MediaQueryData>>{
  'neutral': neutralTestDevices,
  'ios': iOSTestDevices,
};
import 'dart:math' as math;

import 'package:asgard_core/asgard_core.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:test_utils/test_utils.dart';

import 'devices.dart';

void testAppView(
  String name,
  Widget child, {
  bool showSafeAreas = true,
  Map<String, Map<String, MediaQueryData>> devices = testDevices,
}) {
  for (var deviceCategory in devices.entries) {
    final maxHeight = deviceCategory.value.entries
        .fold<double>(0, (max, v) => math.max(max, v.value.size.height));
    final totalWidth = deviceCategory.value.entries
        .fold<double>(0, (total, v) => total + v.value.size.width);

    appTestWidgets(
      deviceCategory.key,
      {
        for (var colorMode in AppThemeColorMode.values)
          colorMode.name: Row(
            mainAxisSize: MainAxisSize.min,
            textDirection: TextDirection.ltr,
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              ...deviceCategory.value.entries.map(
                (device) => MediaQuery(
                  data: device.value,
                  child: AppResponsiveTheme(
                    colorMode: colorMode,
                    app