From 70f12d3fc51181cbe8598338f3f52d5debd28bb9 Mon Sep 17 00:00:00 2001 From: rvcas Date: Tue, 11 Apr 2023 16:02:11 -0400 Subject: [PATCH] chore: new branch with some things from the bumpalo branch --- Cargo.toml | 1 + add.uplc | 4 + crates/aiken-lang/src/gen_uplc/builder.rs | 2 +- crates/aiken-project/src/error.rs | 4 +- crates/aiken-project/src/lib.rs | 2 +- crates/uplc/src/ast.rs | 12 +- crates/uplc/src/machine.rs | 791 ++----------- crates/uplc/src/machine/cost_model.rs | 6 +- crates/uplc/src/machine/discharge.rs | 148 +++ crates/uplc/src/machine/runtime.rs | 1308 +++++++++------------ crates/uplc/src/machine/value.rs | 490 ++++++++ fib.uplc | 1 + flamegraph.svg | 491 ++++++++ 13 files changed, 1840 insertions(+), 1420 deletions(-) create mode 100644 add.uplc create mode 100644 crates/uplc/src/machine/discharge.rs create mode 100644 crates/uplc/src/machine/value.rs create mode 100644 fib.uplc create mode 100644 flamegraph.svg diff --git a/Cargo.toml b/Cargo.toml index f37dd8fb..e3ee6b1c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,4 +2,5 @@ members = ["crates/*"] [profile.release] +# debug = true strip = true diff --git a/add.uplc b/add.uplc new file mode 100644 index 00000000..71065f37 --- /dev/null +++ b/add.uplc @@ -0,0 +1,4 @@ +(program + 1.0.0 + (lam x [ [ (builtin addInteger) (con integer 1) ] x ]) +) \ No newline at end of file diff --git a/crates/aiken-lang/src/gen_uplc/builder.rs b/crates/aiken-lang/src/gen_uplc/builder.rs index 0ed686b8..a0301338 100644 --- a/crates/aiken-lang/src/gen_uplc/builder.rs +++ b/crates/aiken-lang/src/gen_uplc/builder.rs @@ -8,7 +8,7 @@ use uplc::{ builtins::DefaultFunction, machine::{ runtime::{convert_constr_to_tag, ANY_TAG}, - to_pallas_bigint, + value::to_pallas_bigint, }, Constr, KeyValuePairs, PlutusData, }; diff --git a/crates/aiken-project/src/error.rs b/crates/aiken-project/src/error.rs index 1df63f19..9071830d 100644 --- a/crates/aiken-project/src/error.rs +++ b/crates/aiken-project/src/error.rs @@ -279,11 +279,11 @@ impl Diagnostic for Error { None => None, Some(hint) => { let budget = ExBudget { mem: i64::MAX, cpu: i64::MAX, }; - let left = pretty::boxed("left", &match hint.left.eval(budget).result() { + let left = pretty::boxed("left", &match hint.left.clone().eval(budget).result() { Ok(term) => format!("{term}"), Err(err) => format!("{err}"), }); - let right = pretty::boxed("right", &match hint.right.eval(budget).result() { + let right = pretty::boxed("right", &match hint.right.clone().eval(budget).result() { Ok(term) => format!("{term}"), Err(err) => format!("{err}"), }); diff --git a/crates/aiken-project/src/lib.rs b/crates/aiken-project/src/lib.rs index 28677b20..d4c03c0b 100644 --- a/crates/aiken-project/src/lib.rs +++ b/crates/aiken-project/src/lib.rs @@ -732,7 +732,7 @@ where scripts .into_par_iter() .map(|script| { - let mut eval_result = script.program.eval(initial_budget); + let mut eval_result = script.program.clone().eval(initial_budget); EvalInfo { success: !eval_result.failed(), diff --git a/crates/uplc/src/ast.rs b/crates/uplc/src/ast.rs index 61d5e52c..a4919e4f 100644 --- a/crates/uplc/src/ast.rs +++ b/crates/uplc/src/ast.rs @@ -648,7 +648,7 @@ impl From> for Term { } impl Program { - pub fn eval(&self, initial_budget: ExBudget) -> EvalResult { + pub fn eval(self, initial_budget: ExBudget) -> EvalResult { let mut machine = Machine::new( Language::PlutusV2, CostModel::default(), @@ -656,22 +656,22 @@ impl Program { 200, ); - let term = machine.run(&self.term); + let term = machine.run(self.term); EvalResult::new(term, machine.ex_budget, initial_budget, machine.logs) } /// Evaluate a Program as PlutusV1 - pub fn eval_v1(&self) -> EvalResult { + pub fn eval_v1(self) -> EvalResult { let mut machine = Machine::new(Language::PlutusV1, CostModel::v1(), ExBudget::v1(), 200); - let term = machine.run(&self.term); + let term = machine.run(self.term); EvalResult::new(term, machine.ex_budget, ExBudget::v1(), machine.logs) } pub fn eval_as( - &self, + self, version: &Language, costs: &[i64], initial_budget: Option<&ExBudget>, @@ -688,7 +688,7 @@ impl Program { 200, //slippage ); - let term = machine.run(&self.term); + let term = machine.run(self.term); EvalResult::new(term, machine.ex_budget, budget, machine.logs) } diff --git a/crates/uplc/src/machine.rs b/crates/uplc/src/machine.rs index dd50a36a..e9ed033a 100644 --- a/crates/uplc/src/machine.rs +++ b/crates/uplc/src/machine.rs @@ -1,5 +1,4 @@ -use num_traits::sign::Signed; -use std::{collections::VecDeque, ops::Deref, rc::Rc}; +use std::rc::Rc; use crate::{ ast::{Constant, NamedDeBruijn, Term, Type}, @@ -7,59 +6,34 @@ use crate::{ }; pub mod cost_model; +mod discharge; mod error; pub mod eval_result; pub mod runtime; +pub mod value; use cost_model::{ExBudget, StepKind}; pub use error::Error; -use num_bigint::BigInt; -use pallas_primitives::babbage::{self as pallas, Language, PlutusData}; +use pallas_primitives::babbage::Language; -use self::{cost_model::CostModel, runtime::BuiltinRuntime}; +use self::{ + cost_model::CostModel, + runtime::BuiltinRuntime, + value::{Env, Value}, +}; -enum MachineStep { - Return(Rc, Rc), - Compute(Rc, Rc>>, Rc>), +enum MachineState { + Return(Context, Value), + Compute(Context, Env, Term), Done(Rc>), } -impl TryFrom> for Term { - type Error = Error; - - fn try_from(value: Option) -> Result { - match value { - Some(MachineStep::Done(term)) => Ok(Rc::as_ref(&term).clone()), - _ => Err(Error::MachineNeverReachedDone), - } - } -} - #[derive(Clone)] -enum PartialTerm { - // tag: 0 - // Var(NamedDeBruijn), - // tag: 1 - Delay, - // tag: 2 - Lambda(Rc), - // tag: 3 - Apply, - // tag: 4 - // Constant(Constant), - // tag: 5 - Force, - // tag: 6 - // Error, - // tag: 7 - // Builtin(DefaultFunction), -} - -#[derive(Clone)] -enum DischargeStep { - DischargeValue(Rc), - DischargeValueEnv(usize, Rc>>, Rc>), - PopArgStack(PartialTerm), +enum Context { + FrameApplyFun(Value, Box), + FrameApplyArg(Env, Rc>, Box), + FrameForce(Box), + NoFrame, } pub struct Machine { @@ -68,7 +42,6 @@ pub struct Machine { slippage: u32, unbudgeted_steps: [u32; 8], pub logs: Vec, - stack: Vec, version: Language, } @@ -85,64 +58,48 @@ impl Machine { slippage, unbudgeted_steps: [0; 8], logs: vec![], - stack: vec![], version, } } - pub fn run(&mut self, term: &Term) -> Result, Error> { - use MachineStep::*; + pub fn run(&mut self, term: Term) -> Result, Error> { + use MachineState::*; let startup_budget = self.costs.machine_costs.get(StepKind::StartUp); self.spend_budget(startup_budget)?; - self.stack.push(Compute( - Rc::new(Context::NoFrame), - Rc::new(vec![]), - Rc::new(term.clone()), - )); + let mut state = Compute(Context::NoFrame, Rc::new(vec![]), term); - while let Some(step) = self.stack.pop() { - match step { - Compute(context, env, t) => { - self.compute(context, env, t)?; - } - Return(context, value) => { - self.return_compute(context, value)?; - } - d @ Done(_) => { - self.stack.push(d); - - break; + loop { + state = match state { + Compute(context, env, t) => self.compute(context, env, t)?, + Return(context, value) => self.return_compute(context, value)?, + Done(t) => { + return Ok(t.as_ref().clone()); } }; } - - self.stack.pop().try_into() } fn compute( &mut self, - context: Rc, - env: Rc>>, - term: Rc>, - ) -> Result<(), Error> { - match term.as_ref() { + context: Context, + env: Env, + term: Term, + ) -> Result { + match term { Term::Var(name) => { self.step_and_maybe_spend(StepKind::Var)?; - let val = self.lookup_var(name, &env)?; + let val = self.lookup_var(name.as_ref(), &env)?; - self.stack.push(MachineStep::Return(context, val)); + Ok(MachineState::Return(context, val)) } Term::Delay(body) => { self.step_and_maybe_spend(StepKind::Delay)?; - self.stack.push(MachineStep::Return( - context, - Value::Delay(Rc::clone(body), env).into(), - )); + Ok(MachineState::Return(context, Value::Delay(body, env))) } Term::Lambda { parameter_name, @@ -150,173 +107,142 @@ impl Machine { } => { self.step_and_maybe_spend(StepKind::Lambda)?; - self.stack.push(MachineStep::Return( + Ok(MachineState::Return( context, Value::Lambda { - parameter_name: parameter_name.clone(), - body: Rc::clone(body), + parameter_name, + body, env, - } - .into(), - )); + }, + )) } Term::Apply { function, argument } => { self.step_and_maybe_spend(StepKind::Apply)?; - self.stack.push(MachineStep::Compute( - Rc::new(Context::FrameApplyArg( - Rc::clone(&env), - Rc::clone(argument), - context, - )), + Ok(MachineState::Compute( + Context::FrameApplyArg(Rc::clone(&env), argument, context.into()), env, - Rc::clone(function), - )); + function.as_ref().clone(), + )) } Term::Constant(x) => { self.step_and_maybe_spend(StepKind::Constant)?; - self.stack - .push(MachineStep::Return(context, Value::Con(x.clone()).into())); + Ok(MachineState::Return(context, Value::Con(x))) } Term::Force(body) => { self.step_and_maybe_spend(StepKind::Force)?; - self.stack.push(MachineStep::Compute( - Rc::new(Context::FrameForce(context)), + Ok(MachineState::Compute( + Context::FrameForce(context.into()), env, - Rc::clone(body), - )); + body.as_ref().clone(), + )) } - Term::Error => return Err(Error::EvaluationFailure), + Term::Error => Err(Error::EvaluationFailure), Term::Builtin(fun) => { self.step_and_maybe_spend(StepKind::Builtin)?; - let runtime: BuiltinRuntime = (*fun).into(); + let runtime: BuiltinRuntime = fun.into(); - self.stack.push(MachineStep::Return( + Ok(MachineState::Return( context, Value::Builtin { - fun: *fun, - term, - runtime: runtime.into(), - } - .into(), - )); + fun, + term: term.into(), + runtime, + }, + )) } - }; - - Ok(()) + } } - fn return_compute(&mut self, context: Rc, value: Rc) -> Result<(), Error> { - match context.as_ref() { - Context::FrameApplyFun(function, ctx) => { - self.apply_evaluate(ctx.to_owned(), function.clone(), value)? - } - Context::FrameApplyArg(arg_var_env, arg, ctx) => { - self.stack.push(MachineStep::Compute( - Rc::new(Context::FrameApplyFun(value, ctx.to_owned())), - arg_var_env.to_owned(), - Rc::clone(arg), - )); - } - Context::FrameForce(ctx) => self.force_evaluate(ctx.to_owned(), value)?, + fn return_compute(&mut self, context: Context, value: Value) -> Result { + match context { + Context::FrameApplyFun(function, ctx) => self.apply_evaluate(*ctx, function, value), + Context::FrameApplyArg(arg_var_env, arg, ctx) => Ok(MachineState::Compute( + Context::FrameApplyFun(value, ctx), + arg_var_env, + arg.as_ref().clone(), + )), + Context::FrameForce(ctx) => self.force_evaluate(*ctx, value), Context::NoFrame => { if self.unbudgeted_steps[7] > 0 { self.spend_unbudgeted_steps()?; } - let term = discharge_value(value); + let term = discharge::value_as_term(value); - self.stack.push(MachineStep::Done(term)); + Ok(MachineState::Done(term)) } - }; - - Ok(()) + } } - fn force_evaluate(&mut self, context: Rc, mut value: Rc) -> Result<(), Error> { - let value = Rc::make_mut(&mut value); - + fn force_evaluate(&mut self, context: Context, value: Value) -> Result { match value { Value::Delay(body, env) => { - self.stack - .push(MachineStep::Compute(context, env.clone(), body.clone())); - - Ok(()) + Ok(MachineState::Compute(context, env, body.as_ref().clone())) } - Value::Builtin { fun, term, runtime } => { - let force_term = Rc::new(Term::Force(term.clone())); + Value::Builtin { + fun, + term, + mut runtime, + } => { + let force_term = Term::Force(term); - let mut_runtime = Rc::make_mut(runtime); + if runtime.needs_force() { + runtime.consume_force(); - if mut_runtime.needs_force() { - mut_runtime.consume_force(); + let res = self.eval_builtin_app(fun, force_term.into(), runtime)?; - let res = self.eval_builtin_app(*fun, force_term, runtime.clone())?; - - self.stack.push(MachineStep::Return(context, res)); - - Ok(()) + Ok(MachineState::Return(context, res)) } else { - Err(Error::BuiltinTermArgumentExpected( - force_term.as_ref().clone(), - )) + Err(Error::BuiltinTermArgumentExpected(force_term)) } } - rest => Err(Error::NonPolymorphicInstantiation(rest.clone())), + rest => Err(Error::NonPolymorphicInstantiation(rest)), } } fn apply_evaluate( &mut self, - context: Rc, - mut function: Rc, - argument: Rc, - ) -> Result<(), Error> { - let function = Rc::make_mut(&mut function); - + context: Context, + function: Value, + argument: Value, + ) -> Result { match function { - Value::Lambda { body, env, .. } => { - let e = Rc::make_mut(env); + Value::Lambda { body, mut env, .. } => { + let e = Rc::make_mut(&mut env); e.push(argument); - self.stack.push(MachineStep::Compute( + Ok(MachineState::Compute( context, Rc::new(e.clone()), - body.clone(), - )); - - Ok(()) + body.as_ref().clone(), + )) } Value::Builtin { fun, term, runtime } => { - let arg_term = discharge_value(argument.clone()); + let arg_term = discharge::value_as_term(argument.clone()); let t = Rc::new(Term::::Apply { - function: term.clone(), + function: term, argument: arg_term, }); - let mut_runtime = Rc::make_mut(runtime); + if runtime.is_arrow() && !runtime.needs_force() { + let mut runtime = runtime; - if mut_runtime.is_arrow() && !mut_runtime.needs_force() { - mut_runtime.push(argument)?; + runtime.push(argument)?; - let res = self.eval_builtin_app(*fun, t, runtime.to_owned())?; + let res = self.eval_builtin_app(fun, t, runtime.to_owned())?; - self.stack.push(MachineStep::Return(context, res)); - - Ok(()) + Ok(MachineState::Return(context, res)) } else { Err(Error::UnexpectedBuiltinTermArgument(t.as_ref().clone())) } } - rest => Err(Error::NonFunctionalApplication( - rest.clone(), - argument.as_ref().clone(), - )), + rest => Err(Error::NonFunctionalApplication(rest, argument)), } } @@ -324,8 +250,8 @@ impl Machine { &mut self, fun: DefaultFunction, term: Rc>, - runtime: Rc, - ) -> Result, Error> { + runtime: BuiltinRuntime, + ) -> Result { if runtime.is_ready() { let cost = match self.version { Language::PlutusV1 => runtime.to_ex_budget_v1(&self.costs.builtin_costs), @@ -335,11 +261,11 @@ impl Machine { runtime.call(&mut self.logs) } else { - Ok(Value::Builtin { fun, term, runtime }.into()) + Ok(Value::Builtin { fun, term, runtime }) } } - fn lookup_var(&mut self, name: &NamedDeBruijn, env: &[Rc]) -> Result, Error> { + fn lookup_var(&mut self, name: &NamedDeBruijn, env: &[Value]) -> Result { env.get::(env.len() - usize::from(name.index)) .cloned() .ok_or_else(|| Error::OpenTermEvaluated(Term::Var(name.clone().into()))) @@ -386,365 +312,6 @@ impl Machine { } } -fn discharge_value(value: Rc) -> Rc> { - let mut stack = vec![DischargeStep::DischargeValue(value)]; - let mut arg_stack = vec![]; - while let Some(stack_frame) = stack.pop() { - match stack_frame { - DischargeStep::DischargeValue(value) => match value.as_ref() { - Value::Con(x) => arg_stack.push(Term::Constant(x.clone()).into()), - Value::Builtin { term, .. } => arg_stack.push(term.clone()), - Value::Delay(body, env) => { - stack.push(DischargeStep::DischargeValueEnv( - 0, - env.clone(), - Term::Delay(body.clone()).into(), - )); - } - Value::Lambda { - parameter_name, - body, - env, - } => { - stack.push(DischargeStep::DischargeValueEnv( - 0, - env.clone(), - Term::Lambda { - parameter_name: parameter_name.clone(), - body: body.clone(), - } - .into(), - )); - } - }, - DischargeStep::DischargeValueEnv(lam_cnt, env, term) => match term.as_ref() { - Term::Var(name) => { - let index: usize = name.index.into(); - - if lam_cnt >= index { - arg_stack.push(Rc::new(Term::Var(name.clone()))); - } else { - let env = env.get::(env.len() - (index - lam_cnt)).cloned(); - if let Some(v) = env { - stack.push(DischargeStep::DischargeValue(v)); - } else { - arg_stack.push(Rc::new(Term::Var(name.clone()))); - } - } - } - Term::Lambda { - parameter_name, - body, - } => { - stack.push(DischargeStep::PopArgStack(PartialTerm::Lambda( - parameter_name.to_owned(), - ))); - stack.push(DischargeStep::DischargeValueEnv( - lam_cnt + 1, - env, - body.to_owned(), - )); - } - Term::Apply { function, argument } => { - stack.push(DischargeStep::PopArgStack(PartialTerm::Apply)); - stack.push(DischargeStep::DischargeValueEnv( - lam_cnt, - env.clone(), - argument.to_owned(), - )); - stack.push(DischargeStep::DischargeValueEnv( - lam_cnt, - env, - function.to_owned(), - )); - } - Term::Delay(body) => { - stack.push(DischargeStep::PopArgStack(PartialTerm::Delay)); - stack.push(DischargeStep::DischargeValueEnv( - lam_cnt, - env.clone(), - body.to_owned(), - )); - } - - Term::Force(body) => { - stack.push(DischargeStep::PopArgStack(PartialTerm::Force)); - stack.push(DischargeStep::DischargeValueEnv( - lam_cnt, - env.clone(), - body.to_owned(), - )); - } - rest => { - arg_stack.push(rest.to_owned().into()); - } - }, - DischargeStep::PopArgStack(term) => match term { - PartialTerm::Delay => { - let body = arg_stack.pop().unwrap(); - arg_stack.push(Term::Delay(body).into()) - } - PartialTerm::Lambda(parameter_name) => { - let body = arg_stack.pop().unwrap(); - arg_stack.push( - Term::Lambda { - parameter_name, - body, - } - .into(), - ) - } - PartialTerm::Apply => { - let argument = arg_stack.pop().unwrap(); - let function = arg_stack.pop().unwrap(); - arg_stack.push(Term::Apply { function, argument }.into()); - } - PartialTerm::Force => { - let body = arg_stack.pop().unwrap(); - arg_stack.push(Term::Force(body).into()) - } - }, - } - } - - arg_stack.pop().unwrap() -} - -#[derive(Clone)] -enum Context { - FrameApplyFun(Rc, Rc), - FrameApplyArg(Rc>>, Rc>, Rc), - FrameForce(Rc), - NoFrame, -} - -#[derive(Clone, Debug)] -pub enum Value { - Con(Rc), - Delay(Rc>, Rc>>), - Lambda { - parameter_name: Rc, - body: Rc>, - env: Rc>>, - }, - Builtin { - fun: DefaultFunction, - term: Rc>, - runtime: Rc, - }, -} - -fn integer_log2(i: BigInt) -> i64 { - let (_, bytes) = i.to_bytes_be(); - match bytes.first() { - None => unreachable!("empty number?"), - Some(u) => (8 - u.leading_zeros() - 1) as i64 + 8 * (bytes.len() - 1) as i64, - } -} - -pub fn from_pallas_bigint(n: &pallas::BigInt) -> BigInt { - match n { - pallas::BigInt::Int(i) => i128::from(*i).into(), - pallas::BigInt::BigUInt(bytes) => BigInt::from_bytes_be(num_bigint::Sign::Plus, bytes), - pallas::BigInt::BigNInt(bytes) => BigInt::from_bytes_be(num_bigint::Sign::Minus, bytes), - } -} - -pub fn to_pallas_bigint(n: &BigInt) -> pallas::BigInt { - if n.bits() <= 64 { - let regular_int: i64 = n.try_into().unwrap(); - let pallas_int: pallas_codec::utils::Int = regular_int.into(); - - pallas::BigInt::Int(pallas_int) - } else if n.is_positive() { - let (_, bytes) = n.to_bytes_be(); - pallas::BigInt::BigUInt(bytes.into()) - } else { - let (_, bytes) = n.to_bytes_be(); - pallas::BigInt::BigNInt(bytes.into()) - } -} - -impl Value { - pub fn is_integer(&self) -> bool { - matches!(self, Value::Con(i) if matches!(i.as_ref(), Constant::Integer(_))) - } - - pub fn is_bool(&self) -> bool { - matches!(self, Value::Con(b) if matches!(b.as_ref(), Constant::Bool(_))) - } - - // TODO: Make this to_ex_mem not recursive. - pub fn to_ex_mem(&self) -> i64 { - match self { - Value::Con(c) => match c.as_ref() { - Constant::Integer(i) => { - if *i == 0.into() { - 1 - } else { - (integer_log2(i.abs()) / 64) + 1 - } - } - Constant::ByteString(b) => { - if b.is_empty() { - 1 - } else { - ((b.len() as i64 - 1) / 8) + 1 - } - } - Constant::String(s) => s.chars().count() as i64, - Constant::Unit => 1, - Constant::Bool(_) => 1, - Constant::ProtoList(_, items) => items.iter().fold(0, |acc, constant| { - acc + Value::Con(constant.clone().into()).to_ex_mem() - }), - Constant::ProtoPair(_, _, l, r) => { - Value::Con(l.clone()).to_ex_mem() + Value::Con(r.clone()).to_ex_mem() - } - Constant::Data(item) => self.data_to_ex_mem(item), - }, - Value::Delay(_, _) => 1, - Value::Lambda { .. } => 1, - Value::Builtin { .. } => 1, - } - } - - // I made data not recursive since data tends to be deeply nested - // thus causing a significant hit on performance - pub fn data_to_ex_mem(&self, data: &PlutusData) -> i64 { - let mut stack: VecDeque<&PlutusData> = VecDeque::new(); - let mut total = 0; - stack.push_front(data); - while let Some(item) = stack.pop_front() { - // each time we deconstruct a data we add 4 memory units - total += 4; - match item { - PlutusData::Constr(c) => { - // note currently tag is not factored into cost of memory - // create new stack with of items from the list of data - let mut new_stack: VecDeque<&PlutusData> = - VecDeque::from_iter(c.fields.deref().iter()); - // Append old stack to the back of the new stack - new_stack.append(&mut stack); - stack = new_stack; - } - PlutusData::Map(m) => { - let mut new_stack: VecDeque<&PlutusData>; - // create new stack with of items from the list of pairs of data - new_stack = m.iter().fold(VecDeque::new(), |mut acc, d| { - acc.push_back(&d.0); - acc.push_back(&d.1); - acc - }); - // Append old stack to the back of the new stack - new_stack.append(&mut stack); - stack = new_stack; - } - PlutusData::BigInt(i) => { - let i = from_pallas_bigint(i); - - total += Value::Con(Constant::Integer(i).into()).to_ex_mem(); - } - PlutusData::BoundedBytes(b) => { - let byte_string: Vec = b.deref().clone(); - total += Value::Con(Constant::ByteString(byte_string).into()).to_ex_mem(); - } - PlutusData::Array(a) => { - // create new stack with of items from the list of data - let mut new_stack: VecDeque<&PlutusData> = - VecDeque::from_iter(a.deref().iter()); - // Append old stack to the back of the new stack - new_stack.append(&mut stack); - stack = new_stack; - } - } - } - total - } - - pub fn expect_type(&self, r#type: Type) -> Result<(), Error> { - let constant: Constant = self.clone().try_into()?; - - let constant_type = Type::from(&constant); - - if constant_type == r#type { - Ok(()) - } else { - Err(Error::TypeMismatch(r#type, constant_type)) - } - } - - pub fn expect_list(&self) -> Result<(), Error> { - let constant: Constant = self.clone().try_into()?; - - let constant_type = Type::from(&constant); - - if matches!(constant_type, Type::List(_)) { - Ok(()) - } else { - Err(Error::ListTypeMismatch(constant_type)) - } - } - - pub fn expect_pair(&self) -> Result<(), Error> { - let constant: Constant = self.clone().try_into()?; - - let constant_type = Type::from(&constant); - - if matches!(constant_type, Type::Pair(_, _)) { - Ok(()) - } else { - Err(Error::PairTypeMismatch(constant_type)) - } - } -} - -impl TryFrom for Type { - type Error = Error; - - fn try_from(value: Value) -> Result { - let constant: Constant = value.try_into()?; - - let constant_type = Type::from(&constant); - - Ok(constant_type) - } -} - -impl TryFrom<&Value> for Type { - type Error = Error; - - fn try_from(value: &Value) -> Result { - let constant: Constant = value.try_into()?; - - let constant_type = Type::from(&constant); - - Ok(constant_type) - } -} - -impl TryFrom for Constant { - type Error = Error; - - fn try_from(value: Value) -> Result { - match value { - Value::Con(constant) => Ok(constant.as_ref().clone()), - rest => Err(Error::NotAConstant(rest)), - } - } -} - -impl TryFrom<&Value> for Constant { - type Error = Error; - - fn try_from(value: &Value) -> Result { - match value { - Value::Con(constant) => Ok(constant.as_ref().clone()), - rest => Err(Error::NotAConstant(rest.clone())), - } - } -} - impl From<&Constant> for Type { fn from(constant: &Constant) -> Self { match constant { @@ -766,7 +333,7 @@ impl From<&Constant> for Type { mod tests { use num_bigint::BigInt; - use super::{cost_model::ExBudget, integer_log2, Value}; + use super::cost_model::ExBudget; use crate::{ ast::{Constant, NamedDeBruijn, Program, Term}, builtins::DefaultFunction, @@ -843,152 +410,4 @@ mod tests { ); } } - - #[test] - fn to_ex_mem_bigint() { - let value = Value::Con(Constant::Integer(1.into()).into()); - - assert_eq!(value.to_ex_mem(), 1); - - let value = Value::Con(Constant::Integer(42.into()).into()); - - assert_eq!(value.to_ex_mem(), 1); - - let value = Value::Con( - Constant::Integer(BigInt::parse_bytes("18446744073709551615".as_bytes(), 10).unwrap()) - .into(), - ); - - assert_eq!(value.to_ex_mem(), 1); - - let value = Value::Con( - Constant::Integer( - BigInt::parse_bytes("999999999999999999999999999999".as_bytes(), 10).unwrap(), - ) - .into(), - ); - - assert_eq!(value.to_ex_mem(), 2); - - let value = Value::Con( - Constant::Integer( - BigInt::parse_bytes("170141183460469231731687303715884105726".as_bytes(), 10) - .unwrap(), - ) - .into(), - ); - - assert_eq!(value.to_ex_mem(), 2); - - let value = Value::Con( - Constant::Integer( - BigInt::parse_bytes("170141183460469231731687303715884105727".as_bytes(), 10) - .unwrap(), - ) - .into(), - ); - - assert_eq!(value.to_ex_mem(), 2); - - let value = Value::Con( - Constant::Integer( - BigInt::parse_bytes("170141183460469231731687303715884105728".as_bytes(), 10) - .unwrap(), - ) - .into(), - ); - - assert_eq!(value.to_ex_mem(), 2); - - let value = Value::Con( - Constant::Integer( - BigInt::parse_bytes("170141183460469231731687303715884105729".as_bytes(), 10) - .unwrap(), - ) - .into(), - ); - - assert_eq!(value.to_ex_mem(), 2); - - let value = Value::Con( - Constant::Integer( - BigInt::parse_bytes("340282366920938463463374607431768211458".as_bytes(), 10) - .unwrap(), - ) - .into(), - ); - - assert_eq!(value.to_ex_mem(), 3); - - let value = Value::Con( - Constant::Integer( - BigInt::parse_bytes("999999999999999999999999999999999999999999".as_bytes(), 10) - .unwrap(), - ) - .into(), - ); - - assert_eq!(value.to_ex_mem(), 3); - - let value = - Value::Con(Constant::Integer(BigInt::parse_bytes("999999999999999999999999999999999999999999999999999999999999999999999999999999999999".as_bytes(), 10).unwrap()).into()); - - assert_eq!(value.to_ex_mem(), 5); - } - - #[test] - fn integer_log2_oracle() { - // Values come from the Haskell implementation - assert_eq!(integer_log2(1.into()), 0); - assert_eq!(integer_log2(42.into()), 5); - assert_eq!( - integer_log2(BigInt::parse_bytes("18446744073709551615".as_bytes(), 10).unwrap()), - 63 - ); - assert_eq!( - integer_log2( - BigInt::parse_bytes("999999999999999999999999999999".as_bytes(), 10).unwrap() - ), - 99 - ); - assert_eq!( - integer_log2( - BigInt::parse_bytes("170141183460469231731687303715884105726".as_bytes(), 10) - .unwrap() - ), - 126 - ); - assert_eq!( - integer_log2( - BigInt::parse_bytes("170141183460469231731687303715884105727".as_bytes(), 10) - .unwrap() - ), - 126 - ); - assert_eq!( - integer_log2( - BigInt::parse_bytes("170141183460469231731687303715884105728".as_bytes(), 10) - .unwrap() - ), - 127 - ); - assert_eq!( - integer_log2( - BigInt::parse_bytes("340282366920938463463374607431768211458".as_bytes(), 10) - .unwrap() - ), - 128 - ); - assert_eq!( - integer_log2( - BigInt::parse_bytes("999999999999999999999999999999999999999999".as_bytes(), 10) - .unwrap() - ), - 139 - ); - assert_eq!( - integer_log2(BigInt::parse_bytes("999999999999999999999999999999999999999999999999999999999999999999999999999999999999".as_bytes(), 10).unwrap()), - 279 - ); - } } diff --git a/crates/uplc/src/machine/cost_model.rs b/crates/uplc/src/machine/cost_model.rs index ad4293f9..bfe648b2 100644 --- a/crates/uplc/src/machine/cost_model.rs +++ b/crates/uplc/src/machine/cost_model.rs @@ -1,4 +1,4 @@ -use std::{collections::HashMap, rc::Rc}; +use std::collections::HashMap; use pallas_primitives::babbage::Language; @@ -975,7 +975,7 @@ impl Default for BuiltinCosts { } impl BuiltinCosts { - pub fn to_ex_budget_v2(&self, fun: DefaultFunction, args: &[Rc]) -> ExBudget { + pub fn to_ex_budget_v2(&self, fun: DefaultFunction, args: &[Value]) -> ExBudget { match fun { DefaultFunction::AddInteger => ExBudget { mem: self @@ -1402,7 +1402,7 @@ impl BuiltinCosts { } } - pub fn to_ex_budget_v1(&self, fun: DefaultFunction, args: &[Rc]) -> ExBudget { + pub fn to_ex_budget_v1(&self, fun: DefaultFunction, args: &[Value]) -> ExBudget { match fun { DefaultFunction::AddInteger => ExBudget { mem: self diff --git a/crates/uplc/src/machine/discharge.rs b/crates/uplc/src/machine/discharge.rs new file mode 100644 index 00000000..080bbe49 --- /dev/null +++ b/crates/uplc/src/machine/discharge.rs @@ -0,0 +1,148 @@ +use std::rc::Rc; + +use crate::ast::{NamedDeBruijn, Term}; + +use super::value::{Env, Value}; + +#[derive(Clone)] +enum PartialTerm { + Delay, + Lambda(Rc), + Apply, + Force, +} + +#[derive(Clone)] +enum DischargeStep { + DischargeValue(Value), + DischargeValueEnv(usize, Env, Rc>), + PopArgStack(PartialTerm), +} + +pub(super) fn value_as_term(value: Value) -> Rc> { + let mut stack = vec![DischargeStep::DischargeValue(value)]; + + let mut arg_stack = vec![]; + + while let Some(stack_frame) = stack.pop() { + match stack_frame { + DischargeStep::DischargeValue(value) => match value { + Value::Con(x) => arg_stack.push(Term::Constant(x.clone()).into()), + Value::Builtin { term, .. } => arg_stack.push(term.clone()), + Value::Delay(body, env) => { + stack.push(DischargeStep::DischargeValueEnv( + 0, + env.clone(), + Term::Delay(body.clone()).into(), + )); + } + Value::Lambda { + parameter_name, + body, + env, + } => { + stack.push(DischargeStep::DischargeValueEnv( + 0, + env.clone(), + Term::Lambda { + parameter_name: parameter_name.clone(), + body: body.clone(), + } + .into(), + )); + } + }, + DischargeStep::DischargeValueEnv(lam_cnt, env, term) => match term.as_ref() { + Term::Var(name) => { + let index: usize = name.index.into(); + + if lam_cnt >= index { + arg_stack.push(Rc::new(Term::Var(name.clone()))); + } else { + let env = env.get::(env.len() - (index - lam_cnt)).cloned(); + + if let Some(v) = env { + stack.push(DischargeStep::DischargeValue(v)); + } else { + arg_stack.push(Rc::new(Term::Var(name.clone()))); + } + } + } + Term::Lambda { + parameter_name, + body, + } => { + stack.push(DischargeStep::PopArgStack(PartialTerm::Lambda( + parameter_name.to_owned(), + ))); + stack.push(DischargeStep::DischargeValueEnv( + lam_cnt + 1, + env, + body.to_owned(), + )); + } + Term::Apply { function, argument } => { + stack.push(DischargeStep::PopArgStack(PartialTerm::Apply)); + stack.push(DischargeStep::DischargeValueEnv( + lam_cnt, + env.clone(), + argument.to_owned(), + )); + stack.push(DischargeStep::DischargeValueEnv( + lam_cnt, + env, + function.to_owned(), + )); + } + Term::Delay(body) => { + stack.push(DischargeStep::PopArgStack(PartialTerm::Delay)); + stack.push(DischargeStep::DischargeValueEnv( + lam_cnt, + env.clone(), + body.to_owned(), + )); + } + + Term::Force(body) => { + stack.push(DischargeStep::PopArgStack(PartialTerm::Force)); + stack.push(DischargeStep::DischargeValueEnv( + lam_cnt, + env.clone(), + body.to_owned(), + )); + } + rest => { + arg_stack.push(rest.to_owned().into()); + } + }, + DischargeStep::PopArgStack(term) => match term { + PartialTerm::Delay => { + let body = arg_stack.pop().unwrap(); + arg_stack.push(Term::Delay(body).into()) + } + PartialTerm::Lambda(parameter_name) => { + let body = arg_stack.pop().unwrap(); + arg_stack.push( + Term::Lambda { + parameter_name, + body, + } + .into(), + ) + } + PartialTerm::Apply => { + let argument = arg_stack.pop().unwrap(); + let function = arg_stack.pop().unwrap(); + + arg_stack.push(Term::Apply { function, argument }.into()); + } + PartialTerm::Force => { + let body = arg_stack.pop().unwrap(); + arg_stack.push(Term::Force(body).into()) + } + }, + } + } + + arg_stack.pop().unwrap() +} diff --git a/crates/uplc/src/machine/runtime.rs b/crates/uplc/src/machine/runtime.rs index 2fb3523e..9137a33d 100644 --- a/crates/uplc/src/machine/runtime.rs +++ b/crates/uplc/src/machine/runtime.rs @@ -11,7 +11,8 @@ use crate::{ use super::{ cost_model::{BuiltinCosts, ExBudget}, - from_pallas_bigint, to_pallas_bigint, Error, Value, + value::{from_pallas_bigint, to_pallas_bigint}, + Error, Value, }; //#[derive(std::cmp::PartialEq)] @@ -22,7 +23,7 @@ use super::{ #[derive(Clone, Debug)] pub struct BuiltinRuntime { - args: Vec>, + args: Vec, fun: DefaultFunction, forces: u32, } @@ -52,11 +53,11 @@ impl BuiltinRuntime { self.forces += 1; } - pub fn call(&self, logs: &mut Vec) -> Result, Error> { + pub fn call(&self, logs: &mut Vec) -> Result { self.fun.call(&self.args, logs) } - pub fn push(&mut self, arg: Rc) -> Result<(), Error> { + pub fn push(&mut self, arg: Value) -> Result<(), Error> { self.fun.check_type(&arg, &self.args)?; self.args.push(arg); @@ -198,7 +199,7 @@ impl DefaultFunction { } } - pub fn check_type(&self, arg: &Value, args: &[Rc]) -> Result<(), Error> { + pub fn check_type(&self, arg: &Value, args: &[Value]) -> Result<(), Error> { match self { DefaultFunction::AddInteger => arg.expect_type(Type::Integer), DefaultFunction::SubtractInteger => arg.expect_type(Type::Integer), @@ -280,7 +281,7 @@ impl DefaultFunction { if args.is_empty() { Ok(()) } else { - let first = args[0].as_ref(); + let first = &args[0]; arg.expect_type(Type::List(Rc::new(first.try_into()?))) } @@ -325,805 +326,670 @@ impl DefaultFunction { // This should be safe because we've already checked // the types of the args as they were pushed. Although // the unreachables look ugly, it's the reality of the situation. - pub fn call(&self, args: &[Rc], logs: &mut Vec) -> Result, Error> { + pub fn call(&self, args: &[Value], logs: &mut Vec) -> Result { match self { - DefaultFunction::AddInteger => match (args[0].as_ref(), args[1].as_ref()) { - (Value::Con(integer1), Value::Con(integer2)) => { - match (integer1.as_ref(), integer2.as_ref()) { - (Constant::Integer(arg1), Constant::Integer(arg2)) => { - let result = arg1 + arg2; + DefaultFunction::AddInteger => { + let arg1 = args[0].unwrap_integer(); + let arg2 = args[1].unwrap_integer(); - Ok(Value::Con(Constant::Integer(result).into()).into()) - } - _ => unreachable!(), - } - } - _ => unreachable!(), - }, - DefaultFunction::SubtractInteger => match (args[0].as_ref(), args[1].as_ref()) { - (Value::Con(integer1), Value::Con(integer2)) => { - match (integer1.as_ref(), integer2.as_ref()) { - (Constant::Integer(arg1), Constant::Integer(arg2)) => { - let result = arg1 - arg2; + let result = arg1 + arg2; - Ok(Value::Con(Constant::Integer(result).into()).into()) - } - _ => unreachable!(), - } - } - _ => unreachable!(), - }, - DefaultFunction::MultiplyInteger => match (args[0].as_ref(), args[1].as_ref()) { - (Value::Con(integer1), Value::Con(integer2)) => { - match (integer1.as_ref(), integer2.as_ref()) { - (Constant::Integer(arg1), Constant::Integer(arg2)) => { - let result = arg1 * arg2; + let value = Value::integer(result); - Ok(Value::Con(Constant::Integer(result).into()).into()) - } - _ => unreachable!(), - } - } - _ => unreachable!(), - }, - DefaultFunction::DivideInteger => match (args[0].as_ref(), args[1].as_ref()) { - (Value::Con(integer1), Value::Con(integer2)) => { - match (integer1.as_ref(), integer2.as_ref()) { - (Constant::Integer(arg1), Constant::Integer(arg2)) => { - if *arg2 != 0.into() { - let (result, _) = arg1.div_mod_floor(arg2); + Ok(value) + } + DefaultFunction::SubtractInteger => { + let arg1 = args[0].unwrap_integer(); + let arg2 = args[1].unwrap_integer(); - Ok(Value::Con(Constant::Integer(result).into()).into()) - } else { - Err(Error::DivideByZero(arg1.clone(), arg2.clone())) - } - } - _ => unreachable!(), - } - } - _ => unreachable!(), - }, - DefaultFunction::QuotientInteger => match (args[0].as_ref(), args[1].as_ref()) { - (Value::Con(integer1), Value::Con(integer2)) => { - match (integer1.as_ref(), integer2.as_ref()) { - (Constant::Integer(arg1), Constant::Integer(arg2)) => { - if *arg2 != 0.into() { - let (result, _) = arg1.div_rem(arg2); + let result = arg1 - arg2; - Ok(Value::Con(Constant::Integer(result).into()).into()) - } else { - Err(Error::DivideByZero(arg1.clone(), arg2.clone())) - } - } - _ => unreachable!(), - } - } - _ => unreachable!(), - }, - DefaultFunction::RemainderInteger => match (args[0].as_ref(), args[1].as_ref()) { - (Value::Con(integer1), Value::Con(integer2)) => { - match (integer1.as_ref(), integer2.as_ref()) { - (Constant::Integer(arg1), Constant::Integer(arg2)) => { - if *arg2 != 0.into() { - let (_, result) = arg1.div_rem(arg2); + let value = Value::integer(result); - Ok(Value::Con(Constant::Integer(result).into()).into()) - } else { - Err(Error::DivideByZero(arg1.clone(), arg2.clone())) - } - } - _ => unreachable!(), - } - } - _ => unreachable!(), - }, - DefaultFunction::ModInteger => match (args[0].as_ref(), args[1].as_ref()) { - (Value::Con(integer1), Value::Con(integer2)) => { - match (integer1.as_ref(), integer2.as_ref()) { - (Constant::Integer(arg1), Constant::Integer(arg2)) => { - if *arg2 != 0.into() { - let (_, result) = arg1.div_mod_floor(arg2); + Ok(value) + } + DefaultFunction::MultiplyInteger => { + let arg1 = args[0].unwrap_integer(); + let arg2 = args[1].unwrap_integer(); - Ok(Value::Con(Constant::Integer(result).into()).into()) - } else { - Err(Error::DivideByZero(arg1.clone(), arg2.clone())) - } - } - _ => unreachable!(), - } - } - _ => unreachable!(), - }, - DefaultFunction::EqualsInteger => match (args[0].as_ref(), args[1].as_ref()) { - (Value::Con(integer1), Value::Con(integer2)) => { - match (integer1.as_ref(), integer2.as_ref()) { - (Constant::Integer(arg1), Constant::Integer(arg2)) => { - Ok(Value::Con(Constant::Bool(arg1 == arg2).into()).into()) - } - _ => unreachable!(), - } - } - _ => unreachable!(), - }, - DefaultFunction::LessThanInteger => match (args[0].as_ref(), args[1].as_ref()) { - (Value::Con(integer1), Value::Con(integer2)) => { - match (integer1.as_ref(), integer2.as_ref()) { - (Constant::Integer(arg1), Constant::Integer(arg2)) => { - Ok(Value::Con(Constant::Bool(arg1 < arg2).into()).into()) - } - _ => unreachable!(), - } - } - _ => unreachable!(), - }, - DefaultFunction::LessThanEqualsInteger => match (args[0].as_ref(), args[1].as_ref()) { - (Value::Con(integer1), Value::Con(integer2)) => { - match (integer1.as_ref(), integer2.as_ref()) { - (Constant::Integer(arg1), Constant::Integer(arg2)) => { - Ok(Value::Con(Constant::Bool(arg1 <= arg2).into()).into()) - } - _ => unreachable!(), - } - } - _ => unreachable!(), - }, - DefaultFunction::AppendByteString => match (args[0].as_ref(), args[1].as_ref()) { - (Value::Con(byte_string1), Value::Con(byte_string2)) => { - match (byte_string1.as_ref(), byte_string2.as_ref()) { - (Constant::ByteString(arg1), Constant::ByteString(arg2)) => Ok(Value::Con( - Constant::ByteString( - arg1.iter().copied().chain(arg2.iter().copied()).collect(), - ) - .into(), - ) - .into()), - _ => unreachable!(), - } - } - _ => unreachable!(), - }, - DefaultFunction::ConsByteString => match (args[0].as_ref(), args[1].as_ref()) { - (Value::Con(integer), Value::Con(byte_string)) => { - match (integer.as_ref(), byte_string.as_ref()) { - (Constant::Integer(arg1), Constant::ByteString(arg2)) => { - let wrap = arg1.mod_floor(&256.into()); + let result = arg1 * arg2; - let byte: u8 = wrap.try_into().unwrap(); + let value = Value::integer(result); - let mut ret = vec![byte]; + Ok(value) + } + DefaultFunction::DivideInteger => { + let arg1 = args[0].unwrap_integer(); + let arg2 = args[1].unwrap_integer(); - ret.extend(arg2.clone()); + if *arg2 != 0.into() { + let (result, _) = arg1.div_mod_floor(arg2); - Ok(Value::Con(Constant::ByteString(ret).into()).into()) - } - _ => unreachable!(), - } - } - _ => unreachable!(), - }, - DefaultFunction::SliceByteString => { - match (args[0].as_ref(), args[1].as_ref(), args[2].as_ref()) { - (Value::Con(integer1), Value::Con(integer2), Value::Con(byte_string)) => { - match (integer1.as_ref(), integer2.as_ref(), byte_string.as_ref()) { - ( - Constant::Integer(arg1), - Constant::Integer(arg2), - Constant::ByteString(arg3), - ) => { - let skip: usize = if arg1.lt(&0.into()) { - 0 - } else { - arg1.try_into().unwrap() - }; - let take: usize = if arg2.lt(&0.into()) { - 0 - } else { - arg2.try_into().unwrap() - }; + let value = Value::integer(result); - let ret: Vec = - arg3.iter().skip(skip).take(take).cloned().collect(); - - Ok(Value::Con(Constant::ByteString(ret).into()).into()) - } - _ => unreachable!(), - } - } - _ => unreachable!(), + Ok(value) + } else { + Err(Error::DivideByZero(arg1.clone(), arg2.clone())) } } - DefaultFunction::LengthOfByteString => match args[0].as_ref() { - Value::Con(byte_string) => match byte_string.as_ref() { - Constant::ByteString(arg1) => { - Ok(Value::Con(Constant::Integer(arg1.len().into()).into()).into()) - } - _ => unreachable!(), - }, - _ => unreachable!(), - }, - DefaultFunction::IndexByteString => match (args[0].as_ref(), args[1].as_ref()) { - (Value::Con(byte_string), Value::Con(integer)) => { - match (byte_string.as_ref(), integer.as_ref()) { - (Constant::ByteString(arg1), Constant::Integer(arg2)) => { - let index: i128 = arg2.try_into().unwrap(); + DefaultFunction::QuotientInteger => { + let arg1 = args[0].unwrap_integer(); + let arg2 = args[1].unwrap_integer(); - if 0 <= index && index < arg1.len() as i128 { - let ret = arg1[index as usize]; + if *arg2 != 0.into() { + let (result, _) = arg1.div_rem(arg2); - Ok(Value::Con(Constant::Integer(ret.into()).into()).into()) - } else { - Err(Error::ByteStringOutOfBounds(arg2.clone(), arg1.to_vec())) - } - } - _ => unreachable!(), - } + let value = Value::integer(result); + + Ok(value) + } else { + Err(Error::DivideByZero(arg1.clone(), arg2.clone())) } - _ => unreachable!(), - }, - DefaultFunction::EqualsByteString => match (args[0].as_ref(), args[1].as_ref()) { - (Value::Con(byte_string1), Value::Con(byte_string2)) => { - match (byte_string1.as_ref(), byte_string2.as_ref()) { - (Constant::ByteString(arg1), Constant::ByteString(arg2)) => { - Ok(Value::Con(Constant::Bool(arg1 == arg2).into()).into()) - } - _ => unreachable!(), - } + } + DefaultFunction::RemainderInteger => { + let arg1 = args[0].unwrap_integer(); + let arg2 = args[1].unwrap_integer(); + + if *arg2 != 0.into() { + let (_, result) = arg1.div_rem(arg2); + + let value = Value::integer(result); + + Ok(value) + } else { + Err(Error::DivideByZero(arg1.clone(), arg2.clone())) } - _ => unreachable!(), - }, - DefaultFunction::LessThanByteString => match (args[0].as_ref(), args[1].as_ref()) { - (Value::Con(byte_string1), Value::Con(byte_string2)) => { - match (byte_string1.as_ref(), byte_string2.as_ref()) { - (Constant::ByteString(arg1), Constant::ByteString(arg2)) => { - Ok(Value::Con(Constant::Bool(arg1 < arg2).into()).into()) - } - _ => unreachable!(), - } + } + DefaultFunction::ModInteger => { + let arg1 = args[0].unwrap_integer(); + let arg2 = args[1].unwrap_integer(); + + if *arg2 != 0.into() { + let (_, result) = arg1.div_mod_floor(arg2); + + let value = Value::integer(result); + + Ok(value) + } else { + Err(Error::DivideByZero(arg1.clone(), arg2.clone())) } - _ => unreachable!(), - }, - DefaultFunction::LessThanEqualsByteString => match (args[0].as_ref(), args[1].as_ref()) - { - (Value::Con(byte_string1), Value::Con(byte_string2)) => { - match (byte_string1.as_ref(), byte_string2.as_ref()) { - (Constant::ByteString(arg1), Constant::ByteString(arg2)) => { - Ok(Value::Con(Constant::Bool(arg1 <= arg2).into()).into()) - } - _ => unreachable!(), - } + } + DefaultFunction::EqualsInteger => { + let arg1 = args[0].unwrap_integer(); + let arg2 = args[1].unwrap_integer(); + + let value = Value::bool(arg1 == arg2); + + Ok(value) + } + DefaultFunction::LessThanInteger => { + let arg1 = args[0].unwrap_integer(); + let arg2 = args[1].unwrap_integer(); + + let value = Value::bool(arg1 < arg2); + + Ok(value) + } + DefaultFunction::LessThanEqualsInteger => { + let arg1 = args[0].unwrap_integer(); + let arg2 = args[1].unwrap_integer(); + + let value = Value::bool(arg1 <= arg2); + + Ok(value) + } + DefaultFunction::AppendByteString => { + let arg1 = args[0].unwrap_byte_string(); + let arg2 = args[1].unwrap_byte_string(); + + let result = arg1.iter().copied().chain(arg2.iter().copied()).collect(); + + let value = Value::byte_string(result); + + Ok(value) + } + DefaultFunction::ConsByteString => { + let arg1 = args[0].unwrap_integer(); + let arg2 = args[1].unwrap_byte_string(); + + let wrap = arg1.mod_floor(&256.into()); + + let byte: u8 = wrap.try_into().unwrap(); + + let mut ret = vec![byte]; + + ret.extend(arg2.clone()); + + let value = Value::byte_string(ret); + + Ok(value) + } + DefaultFunction::SliceByteString => { + let arg1 = args[0].unwrap_integer(); + let arg2 = args[1].unwrap_integer(); + let arg3 = args[2].unwrap_byte_string(); + + let skip: usize = if arg1.lt(&0.into()) { + 0 + } else { + arg1.try_into().unwrap() + }; + let take: usize = if arg2.lt(&0.into()) { + 0 + } else { + arg2.try_into().unwrap() + }; + + let ret: Vec = arg3.iter().skip(skip).take(take).cloned().collect(); + + let value = Value::byte_string(ret); + + Ok(value) + } + DefaultFunction::LengthOfByteString => { + let arg1 = args[0].unwrap_byte_string(); + + let value = Value::integer(arg1.len().into()); + + Ok(value) + } + DefaultFunction::IndexByteString => { + let arg1 = args[0].unwrap_byte_string(); + let arg2 = args[1].unwrap_integer(); + + let index: i128 = arg2.try_into().unwrap(); + + if 0 <= index && index < arg1.len() as i128 { + let ret = arg1[index as usize]; + + let value = Value::integer(ret.into()); + + Ok(value) + } else { + Err(Error::ByteStringOutOfBounds(arg2.clone(), arg1.to_vec())) } - _ => unreachable!(), - }, - DefaultFunction::Sha2_256 => match args[0].as_ref() { - Value::Con(byte_string) => match byte_string.as_ref() { - Constant::ByteString(arg1) => { - use cryptoxide::{digest::Digest, sha2::Sha256}; + } + DefaultFunction::EqualsByteString => { + let arg1 = args[0].unwrap_byte_string(); + let arg2 = args[1].unwrap_byte_string(); - let mut hasher = Sha256::new(); + let value = Value::bool(arg1 == arg2); - hasher.input(arg1); + Ok(value) + } + DefaultFunction::LessThanByteString => { + let arg1 = args[0].unwrap_byte_string(); + let arg2 = args[1].unwrap_byte_string(); - let mut bytes = vec![0; hasher.output_bytes()]; + let value = Value::bool(arg1 < arg2); - hasher.result(&mut bytes); + Ok(value) + } + DefaultFunction::LessThanEqualsByteString => { + let arg1 = args[0].unwrap_byte_string(); + let arg2 = args[1].unwrap_byte_string(); - Ok(Value::Con(Constant::ByteString(bytes).into()).into()) - } - _ => unreachable!(), - }, - _ => unreachable!(), - }, - DefaultFunction::Sha3_256 => match args[0].as_ref() { - Value::Con(byte_string) => match byte_string.as_ref() { - Constant::ByteString(arg1) => { - use cryptoxide::{digest::Digest, sha3::Sha3_256}; + let value = Value::bool(arg1 <= arg2); - let mut hasher = Sha3_256::new(); + Ok(value) + } + DefaultFunction::Sha2_256 => { + use cryptoxide::{digest::Digest, sha2::Sha256}; - hasher.input(arg1); + let arg1 = args[0].unwrap_byte_string(); - let mut bytes = vec![0; hasher.output_bytes()]; + let mut hasher = Sha256::new(); - hasher.result(&mut bytes); + hasher.input(arg1); - Ok(Value::Con(Constant::ByteString(bytes).into()).into()) - } - _ => unreachable!(), - }, - _ => unreachable!(), - }, - DefaultFunction::Blake2b_256 => match args[0].as_ref() { - Value::Con(byte_string) => match byte_string.as_ref() { - Constant::ByteString(arg1) => { - use cryptoxide::{blake2b::Blake2b, digest::Digest}; + let mut bytes = vec![0; hasher.output_bytes()]; - let mut digest = [0u8; 32]; - let mut context = Blake2b::new(32); + hasher.result(&mut bytes); - context.input(arg1); - context.result(&mut digest); + let value = Value::byte_string(bytes); - Ok(Value::Con(Constant::ByteString(digest.to_vec()).into()).into()) - } - _ => unreachable!(), - }, - _ => unreachable!(), - }, + Ok(value) + } + DefaultFunction::Sha3_256 => { + use cryptoxide::{digest::Digest, sha3::Sha3_256}; + + let arg1 = args[0].unwrap_byte_string(); + + let mut hasher = Sha3_256::new(); + + hasher.input(arg1); + + let mut bytes = vec![0; hasher.output_bytes()]; + + hasher.result(&mut bytes); + + let value = Value::byte_string(bytes); + + Ok(value) + } + DefaultFunction::Blake2b_256 => { + use cryptoxide::{blake2b::Blake2b, digest::Digest}; + + let arg1 = args[0].unwrap_byte_string(); + + let mut digest = [0u8; 32]; + let mut context = Blake2b::new(32); + + context.input(arg1); + context.result(&mut digest); + + let value = Value::byte_string(digest.to_vec()); + + Ok(value) + } DefaultFunction::VerifyEd25519Signature => { - match (args[0].as_ref(), args[1].as_ref(), args[2].as_ref()) { - (Value::Con(public_key), Value::Con(message), Value::Con(signature)) => { - match (public_key.as_ref(), message.as_ref(), signature.as_ref()) { - ( - Constant::ByteString(public_key), - Constant::ByteString(message), - Constant::ByteString(signature), - ) => { - use cryptoxide::ed25519; + use cryptoxide::ed25519; - let public_key: [u8; 32] = - public_key.clone().try_into().map_err(|e: Vec| { - Error::UnexpectedEd25519PublicKeyLength(e.len()) - })?; + let public_key = args[0].unwrap_byte_string(); + let message = args[1].unwrap_byte_string(); + let signature = args[2].unwrap_byte_string(); - let signature: [u8; 64] = - signature.clone().try_into().map_err(|e: Vec| { - Error::UnexpectedEd25519SignatureLength(e.len()) - })?; + let public_key: [u8; 32] = public_key + .clone() + .try_into() + .map_err(|e: Vec| Error::UnexpectedEd25519PublicKeyLength(e.len()))?; - let valid = ed25519::verify(message, &public_key, &signature); + let signature: [u8; 64] = signature + .clone() + .try_into() + .map_err(|e: Vec| Error::UnexpectedEd25519SignatureLength(e.len()))?; - Ok(Value::Con(Constant::Bool(valid).into()).into()) - } - _ => unreachable!(), - } - } - _ => unreachable!(), - } + let valid = ed25519::verify(message, &public_key, &signature); + + let value = Value::bool(valid); + + Ok(value) } DefaultFunction::VerifyEcdsaSecp256k1Signature => { - match (args[0].as_ref(), args[1].as_ref(), args[2].as_ref()) { - (Value::Con(public_key), Value::Con(message), Value::Con(signature)) => { - match (public_key.as_ref(), message.as_ref(), signature.as_ref()) { - ( - Constant::ByteString(public_key), - Constant::ByteString(message), - Constant::ByteString(signature), - ) => verify_ecdsa(public_key, message, signature), - _ => unreachable!(), - } - } - _ => unreachable!(), - } + let public_key = args[0].unwrap_byte_string(); + let message = args[1].unwrap_byte_string(); + let signature = args[2].unwrap_byte_string(); + + verify_ecdsa(public_key, message, signature) } DefaultFunction::VerifySchnorrSecp256k1Signature => { - match (args[0].as_ref(), args[1].as_ref(), args[2].as_ref()) { - (Value::Con(public_key), Value::Con(message), Value::Con(signature)) => { - match (public_key.as_ref(), message.as_ref(), signature.as_ref()) { - ( - Constant::ByteString(public_key), - Constant::ByteString(message), - Constant::ByteString(signature), - ) => verify_schnorr(public_key, message, signature), - _ => unreachable!(), - } - } - _ => unreachable!(), + let public_key = args[0].unwrap_byte_string(); + let message = args[1].unwrap_byte_string(); + let signature = args[2].unwrap_byte_string(); + + verify_schnorr(public_key, message, signature) + } + DefaultFunction::AppendString => { + let arg1 = args[0].unwrap_string(); + let arg2 = args[1].unwrap_string(); + + let value = Value::string(format!("{arg1}{arg2}")); + + Ok(value) + } + DefaultFunction::EqualsString => { + let arg1 = args[0].unwrap_string(); + let arg2 = args[1].unwrap_string(); + + let value = Value::bool(arg1 == arg2); + + Ok(value) + } + DefaultFunction::EncodeUtf8 => { + let arg1 = args[0].unwrap_string(); + + let bytes = arg1.as_bytes().to_vec(); + + let value = Value::byte_string(bytes); + + Ok(value) + } + DefaultFunction::DecodeUtf8 => { + let arg1 = args[0].unwrap_byte_string(); + + let string = String::from_utf8(arg1.clone())?; + + let value = Value::string(string); + + Ok(value) + } + DefaultFunction::IfThenElse => { + let condition = args[0].unwrap_bool(); + + if *condition { + Ok(args[1].clone()) + } else { + Ok(args[2].clone()) } } - DefaultFunction::AppendString => match (args[0].as_ref(), args[1].as_ref()) { - (Value::Con(string1), Value::Con(string2)) => { - match (string1.as_ref(), string2.as_ref()) { - (Constant::String(arg1), Constant::String(arg2)) => { - Ok(Value::Con(Constant::String(format!("{arg1}{arg2}")).into()).into()) - } - _ => unreachable!(), - } + DefaultFunction::ChooseUnit => { + // We don't need to check it here because this is already done in + // expect_type + // let Value::Con(Constant::Unit) = args[0] else {unreachable!()}; + + Ok(args[1].clone()) + } + DefaultFunction::Trace => { + let arg1 = args[0].unwrap_string(); + + logs.push(arg1.clone()); + + Ok(args[1].clone()) + } + DefaultFunction::FstPair => { + let (_, _, first, _) = args[0].unwrap_pair(); + + let value = Value::Con(first.clone()); + + Ok(value) + } + DefaultFunction::SndPair => { + let (_, _, _, second) = args[0].unwrap_pair(); + + let value = Value::Con(second.clone()); + + Ok(value) + } + DefaultFunction::ChooseList => { + let (_, list) = args[0].unwrap_list(); + + if list.is_empty() { + Ok(args[1].clone()) + } else { + Ok(args[2].clone()) } - _ => unreachable!(), - }, - DefaultFunction::EqualsString => match (args[0].as_ref(), args[1].as_ref()) { - (Value::Con(string1), Value::Con(string2)) => { - match (string1.as_ref(), string2.as_ref()) { - (Constant::String(arg1), Constant::String(arg2)) => { - Ok(Value::Con(Constant::Bool(arg1 == arg2).into()).into()) - } - _ => unreachable!(), - } + } + DefaultFunction::MkCons => { + let item = args[0].unwrap_constant(); + let (r#type, list) = args[1].unwrap_list(); + + let mut ret = vec![item.clone()]; + + ret.extend(list.clone()); + + let value = Value::list(r#type.clone(), ret); + + Ok(value) + } + DefaultFunction::HeadList => { + let c @ Value::Con(inner) = &args[0] else {unreachable!()}; + let Constant::ProtoList(_, list) = inner.as_ref() else {unreachable!()}; + + if list.is_empty() { + Err(Error::EmptyList(c.clone())) + } else { + let value = Value::Con(list[0].clone().into()); + + Ok(value) } - _ => unreachable!(), - }, - DefaultFunction::EncodeUtf8 => match args[0].as_ref() { - Value::Con(string) => match string.as_ref() { - Constant::String(arg1) => { - let bytes = arg1.as_bytes().to_vec(); + } + DefaultFunction::TailList => { + let c @ Value::Con(inner) = &args[0] else {unreachable!()}; + let Constant::ProtoList(r#type, list) = inner.as_ref() else {unreachable!()}; - Ok(Value::Con(Constant::ByteString(bytes).into()).into()) - } - _ => unreachable!(), - }, - _ => unreachable!(), - }, - DefaultFunction::DecodeUtf8 => match args[0].as_ref() { - Value::Con(byte_string) => match byte_string.as_ref() { - Constant::ByteString(arg1) => { - let string = String::from_utf8(arg1.clone())?; + if list.is_empty() { + Err(Error::EmptyList(c.clone())) + } else { + let value = Value::list(r#type.clone(), list[1..].to_vec()); - Ok(Value::Con(Constant::String(string).into()).into()) - } - _ => unreachable!(), - }, - _ => unreachable!(), - }, - DefaultFunction::IfThenElse => match args[0].as_ref() { - Value::Con(boolean) => match boolean.as_ref() { - Constant::Bool(condition) => { - if *condition { - Ok(args[1].clone()) - } else { - Ok(args[2].clone()) - } - } - _ => unreachable!(), - }, - _ => unreachable!(), - }, - DefaultFunction::ChooseUnit => match args[0].as_ref() { - Value::Con(unit) => match unit.as_ref() { - Constant::Unit => Ok(args[1].clone()), - _ => unreachable!(), - }, - _ => unreachable!(), - }, - DefaultFunction::Trace => match args[0].as_ref() { - Value::Con(string) => match string.as_ref() { - Constant::String(arg1) => { - logs.push(arg1.clone()); + Ok(value) + } + } + DefaultFunction::NullList => { + let (_, list) = args[0].unwrap_list(); - Ok(args[1].clone()) - } - _ => unreachable!(), - }, - _ => unreachable!(), - }, - DefaultFunction::FstPair => match args[0].as_ref() { - Value::Con(pair) => match pair.as_ref() { - Constant::ProtoPair(_, _, first, _) => Ok(Value::Con(first.clone()).into()), - _ => unreachable!(), - }, - _ => unreachable!(), - }, - DefaultFunction::SndPair => match args[0].as_ref() { - Value::Con(pair) => match pair.as_ref() { - Constant::ProtoPair(_, _, _, second) => Ok(Value::Con(second.clone()).into()), - _ => unreachable!(), - }, - _ => unreachable!(), - }, - DefaultFunction::ChooseList => match args[0].as_ref() { - Value::Con(list) => match list.as_ref() { - Constant::ProtoList(_, list) => { - if list.is_empty() { - Ok(args[1].clone()) - } else { - Ok(args[2].clone()) - } - } - _ => unreachable!(), - }, - _ => unreachable!(), - }, - DefaultFunction::MkCons => match (args[0].as_ref(), args[1].as_ref()) { - (Value::Con(item), Value::Con(list)) => match list.as_ref() { - Constant::ProtoList(r#type, list) => { - let mut ret = vec![item.as_ref().clone()]; - ret.extend(list.clone()); + let value = Value::bool(list.is_empty()); - Ok(Value::Con(Constant::ProtoList(r#type.clone(), ret).into()).into()) - } - _ => unreachable!(), - }, - _ => unreachable!(), - }, - DefaultFunction::HeadList => match args[0].as_ref() { - c @ Value::Con(list) => match list.as_ref() { - Constant::ProtoList(_, list) => { - if list.is_empty() { - Err(Error::EmptyList(c.clone())) - } else { - Ok(Value::Con(list[0].clone().into()).into()) - } - } - _ => unreachable!(), - }, - _ => unreachable!(), - }, - DefaultFunction::TailList => match args[0].as_ref() { - c @ Value::Con(list) => match list.as_ref() { - Constant::ProtoList(r#type, list) => { - if list.is_empty() { - Err(Error::EmptyList(c.clone())) - } else { - Ok(Value::Con( - Constant::ProtoList(r#type.clone(), list[1..].to_vec()).into(), - ) - .into()) - } - } - _ => unreachable!(), - }, - _ => unreachable!(), - }, - DefaultFunction::NullList => match args[0].as_ref() { - Value::Con(list) => match list.as_ref() { - Constant::ProtoList(_, list) => { - Ok(Value::Con(Constant::Bool(list.is_empty()).into()).into()) - } - _ => unreachable!(), - }, - _ => unreachable!(), - }, - DefaultFunction::ChooseData => match args[0].as_ref() { - Value::Con(con) => match con.as_ref() { + Ok(value) + } + DefaultFunction::ChooseData => { + let con = args[0].unwrap_constant(); + + match con { Constant::Data(PlutusData::Constr(_)) => Ok(args[1].clone()), Constant::Data(PlutusData::Map(_)) => Ok(args[2].clone()), Constant::Data(PlutusData::Array(_)) => Ok(args[3].clone()), Constant::Data(PlutusData::BigInt(_)) => Ok(args[4].clone()), Constant::Data(PlutusData::BoundedBytes(_)) => Ok(args[5].clone()), _ => unreachable!(), - }, - _ => unreachable!(), - }, - DefaultFunction::ConstrData => match (args[0].as_ref(), args[1].as_ref()) { - (Value::Con(integer), Value::Con(list)) => { - match (integer.as_ref(), list.as_ref()) { - (Constant::Integer(i), Constant::ProtoList(Type::Data, l)) => { - let data_list: Vec = l - .iter() - .map(|item| match item { - Constant::Data(d) => d.clone(), - _ => unreachable!(), - }) - .collect(); + } + } + DefaultFunction::ConstrData => { + let i = args[0].unwrap_integer(); + let l = args[1].unwrap_data_list(); - let i: u64 = i.try_into().unwrap(); + let data_list: Vec = l + .iter() + .map(|item| match item { + Constant::Data(d) => d.clone(), + _ => unreachable!(), + }) + .collect(); - let constr_data = PlutusData::Constr(Constr { - tag: convert_constr_to_tag(i).unwrap_or(ANY_TAG), - any_constructor: convert_constr_to_tag(i).map_or(Some(i), |_| None), - fields: data_list, - }); + let i: u64 = i.try_into().unwrap(); - Ok(Value::Con(Constant::Data(constr_data).into()).into()) + let constr_data = PlutusData::Constr(Constr { + tag: convert_constr_to_tag(i).unwrap_or(ANY_TAG), + any_constructor: convert_constr_to_tag(i).map_or(Some(i), |_| None), + fields: data_list, + }); + + let value = Value::data(constr_data); + + Ok(value) + } + DefaultFunction::MapData => { + let (_, list) = args[0].unwrap_list(); + + let mut map = Vec::new(); + + for item in list { + let Constant::ProtoPair( + Type::Data, + Type::Data, + left, + right + ) = item else {unreachable!()}; + + match (left.as_ref(), right.as_ref()) { + (Constant::Data(key), Constant::Data(value)) => { + map.push((key.clone(), value.clone())); } _ => unreachable!(), } } - _ => unreachable!(), - }, - DefaultFunction::MapData => match args[0].as_ref() { - Value::Con(list) => match list.as_ref() { - Constant::ProtoList(_, list) => { - let mut map = Vec::new(); - for item in list { - match item { - Constant::ProtoPair(Type::Data, Type::Data, left, right) => { - match (left.as_ref(), right.as_ref()) { - (Constant::Data(key), Constant::Data(value)) => { - map.push((key.clone(), value.clone())); - } - _ => unreachable!(), - } - } - _ => unreachable!(), - } - } + let value = Value::data(PlutusData::Map(map.into())); - Ok(Value::Con(Constant::Data(PlutusData::Map(map.into())).into()).into()) - } - _ => unreachable!(), - }, - _ => unreachable!(), - }, - DefaultFunction::ListData => match args[0].as_ref() { - Value::Con(list) => match list.as_ref() { - Constant::ProtoList(_, list) => { - let data_list: Vec = list - .iter() - .map(|item| match item { - Constant::Data(d) => d.clone(), - _ => unreachable!(), - }) - .collect(); + Ok(value) + } + DefaultFunction::ListData => { + let (_, list) = args[0].unwrap_list(); - Ok(Value::Con(Constant::Data(PlutusData::Array(data_list)).into()).into()) - } - _ => unreachable!(), - }, - _ => unreachable!(), - }, - DefaultFunction::IData => match args[0].as_ref() { - Value::Con(integer) => match integer.as_ref() { - Constant::Integer(i) => Ok(Value::Con( - Constant::Data(PlutusData::BigInt(to_pallas_bigint(i))).into(), - ) - .into()), - _ => unreachable!(), - }, - _ => unreachable!(), - }, - DefaultFunction::BData => match args[0].as_ref() { - Value::Con(byte_string) => match byte_string.as_ref() { - Constant::ByteString(b) => Ok(Value::Con( - Constant::Data(PlutusData::BoundedBytes(b.clone().try_into().unwrap())) - .into(), - ) - .into()), - _ => unreachable!(), - }, - _ => unreachable!(), - }, - DefaultFunction::UnConstrData => match args[0].as_ref() { - Value::Con(con) => match con.as_ref() { - Constant::Data(PlutusData::Constr(c)) => Ok(Value::Con( - Constant::ProtoPair( - Type::Integer, - Type::List(Type::Data.into()), - Constant::Integer( - convert_tag_to_constr(c.tag) - .unwrap_or_else(|| c.any_constructor.unwrap()) - .into(), - ) - .into(), - Constant::ProtoList( - Type::Data, - c.fields - .deref() - .iter() - .map(|d| Constant::Data(d.clone())) - .collect(), - ) - .into(), + let data_list: Vec = list + .iter() + .map(|item| match item { + Constant::Data(d) => d.clone(), + _ => unreachable!(), + }) + .collect(); + + let value = Value::data(PlutusData::Array(data_list)); + + Ok(value) + } + DefaultFunction::IData => { + let i = args[0].unwrap_integer(); + + let value = Value::data(PlutusData::BigInt(to_pallas_bigint(i))); + + Ok(value) + } + DefaultFunction::BData => { + let b = args[0].unwrap_byte_string(); + + let value = Value::data(PlutusData::BoundedBytes(b.clone().try_into().unwrap())); + + Ok(value) + } + DefaultFunction::UnConstrData => match &args[0] { + Value::Con(inner) => { + let Constant::Data(PlutusData::Constr(c)) = inner.as_ref() else {unreachable!()}; + + let constant = Constant::ProtoPair( + Type::Integer, + Type::List(Type::Data.into()), + Constant::Integer( + convert_tag_to_constr(c.tag) + .unwrap_or_else(|| c.any_constructor.unwrap()) + .into(), ) .into(), - ) - .into()), - v => Err(Error::DeserialisationError( - "UnConstrData".to_string(), - Value::Con(v.clone().into()), - )), - }, - v => Err(Error::DeserialisationError( - "UnConstrData".to_string(), - v.clone(), - )), - }, - DefaultFunction::UnMapData => match args[0].as_ref() { - Value::Con(data) => match data.as_ref() { - Constant::Data(PlutusData::Map(m)) => Ok(Value::Con( - Constant::ProtoList( - Type::Pair(Type::Data.into(), Type::Data.into()), - m.deref() - .iter() - .map(|p| -> Constant { - Constant::ProtoPair( - Type::Data, - Type::Data, - Constant::Data(p.0.clone()).into(), - Constant::Data(p.1.clone()).into(), - ) - }) - .collect(), - ) - .into(), - ) - .into()), - v => Err(Error::DeserialisationError( - "UnMapData".to_string(), - Value::Con(v.clone().into()), - )), - }, - v => Err(Error::DeserialisationError( - "UnMapData".to_string(), - v.clone(), - )), - }, - DefaultFunction::UnListData => match args[0].as_ref() { - Value::Con(data) => match data.as_ref() { - Constant::Data(PlutusData::Array(l)) => Ok(Value::Con( Constant::ProtoList( Type::Data, - l.deref() + c.fields + .deref() .iter() .map(|d| Constant::Data(d.clone())) .collect(), ) .into(), - ) - .into()), - v => Err(Error::DeserialisationError( - "UnListData".to_string(), - Value::Con(v.clone().into()), - )), - }, + ); + + let value = Value::Con(constant.into()); + + Ok(value) + } + v => Err(Error::DeserialisationError( + "UnConstrData".to_string(), + v.clone(), + )), + }, + DefaultFunction::UnMapData => match &args[0] { + Value::Con(inner) => { + let Constant::Data(PlutusData::Map(m)) = inner.as_ref() else {unreachable!()}; + + let constant = Constant::ProtoList( + Type::Pair(Type::Data.into(), Type::Data.into()), + m.deref() + .iter() + .map(|p| -> Constant { + Constant::ProtoPair( + Type::Data, + Type::Data, + Constant::Data(p.0.clone()).into(), + Constant::Data(p.1.clone()).into(), + ) + }) + .collect(), + ); + + let value = Value::Con(constant.into()); + + Ok(value) + } + v => Err(Error::DeserialisationError( + "UnMapData".to_string(), + v.clone(), + )), + }, + DefaultFunction::UnListData => match &args[0] { + Value::Con(inner) => { + let Constant::Data(PlutusData::Array(l)) = inner.as_ref() else {unreachable!()}; + + let value = Value::list( + Type::Data, + l.deref() + .iter() + .map(|d| Constant::Data(d.clone())) + .collect(), + ); + + Ok(value) + } v => Err(Error::DeserialisationError( "UnListData".to_string(), v.clone(), )), }, - DefaultFunction::UnIData => match args[0].as_ref() { - Value::Con(data) => match data.as_ref() { - Constant::Data(PlutusData::BigInt(b)) => { - Ok(Value::Con(Constant::Integer(from_pallas_bigint(b)).into()).into()) - } - v => Err(Error::DeserialisationError( - "UnIData".to_string(), - Value::Con(v.clone().into()), - )), - }, + DefaultFunction::UnIData => match &args[0] { + Value::Con(inner) => { + let Constant::Data(PlutusData::BigInt(b)) = inner.as_ref() else {unreachable!()}; + + let value = Value::integer(from_pallas_bigint(b)); + + Ok(value) + } v => Err(Error::DeserialisationError( "UnIData".to_string(), v.clone(), )), }, - DefaultFunction::UnBData => match args[0].as_ref() { - Value::Con(data) => match data.as_ref() { - Constant::Data(PlutusData::BoundedBytes(b)) => { - Ok(Value::Con(Constant::ByteString(b.to_vec()).into()).into()) - } - v => Err(Error::DeserialisationError( - "UnBData".to_string(), - Value::Con(v.clone().into()), - )), - }, + DefaultFunction::UnBData => match &args[0] { + Value::Con(inner) => { + let Constant::Data(PlutusData::BoundedBytes(b)) = inner.as_ref() else {unreachable!()}; + + let value = Value::byte_string(b.to_vec()); + + Ok(value) + } v => Err(Error::DeserialisationError( "UnBData".to_string(), v.clone(), )), }, - DefaultFunction::EqualsData => match (args[0].as_ref(), args[1].as_ref()) { - (Value::Con(data1), Value::Con(data2)) => match (data1.as_ref(), data2.as_ref()) { - (Constant::Data(d1), Constant::Data(d2)) => { - Ok(Value::Con(Constant::Bool(d1.eq(d2)).into()).into()) - } - _ => unreachable!(), - }, - _ => unreachable!(), - }, - DefaultFunction::SerialiseData => match args[0].as_ref() { - Value::Con(data) => match data.as_ref() { - Constant::Data(d) => { - let serialized_data = plutus_data_to_bytes(d).unwrap(); - Ok(Value::Con(Constant::ByteString(serialized_data).into()).into()) - } - _ => unreachable!(), - }, - _ => unreachable!(), - }, - DefaultFunction::MkPairData => match (args[0].as_ref(), args[1].as_ref()) { - (Value::Con(data1), Value::Con(data2)) => match (data1.as_ref(), data2.as_ref()) { - (Constant::Data(d1), Constant::Data(d2)) => Ok(Value::Con( - Constant::ProtoPair( - Type::Data, - Type::Data, - Constant::Data(d1.clone()).into(), - Constant::Data(d2.clone()).into(), - ) - .into(), - ) - .into()), - _ => unreachable!(), - }, - _ => unreachable!(), - }, - DefaultFunction::MkNilData => { - Ok(Value::Con(Constant::ProtoList(Type::Data, vec![]).into()).into()) + DefaultFunction::EqualsData => { + let (Value::Con(inner1), Value::Con(inner2)) = (&args[0], &args[1]) else {unreachable!()}; + + let Constant::Data(d1) = inner1.as_ref() else {unreachable!()}; + let Constant::Data(d2) = inner2.as_ref() else {unreachable!()}; + + let value = Value::bool(d1.eq(d2)); + + Ok(value) + } + DefaultFunction::SerialiseData => { + let Value::Con(inner) = &args[0] else {unreachable!()}; + let Constant::Data(d) = inner.as_ref() else {unreachable!()}; + + let serialized_data = plutus_data_to_bytes(d).unwrap(); + + let value = Value::byte_string(serialized_data); + + Ok(value) + } + DefaultFunction::MkPairData => { + let (Value::Con(inner1), Value::Con(inner2)) = (&args[0], &args[1]) else {unreachable!()}; + + let Constant::Data(d1) = inner1.as_ref() else {unreachable!()}; + let Constant::Data(d2) = inner2.as_ref() else {unreachable!()}; + + let constant = Constant::ProtoPair( + Type::Data, + Type::Data, + Constant::Data(d1.clone()).into(), + Constant::Data(d2.clone()).into(), + ); + + let value = Value::Con(constant.into()); + + Ok(value) + } + DefaultFunction::MkNilData => { + let value = Value::list(Type::Data, vec![]); + + Ok(value) + } + DefaultFunction::MkNilPairData => { + let constant = Constant::ProtoList( + Type::Pair(Rc::new(Type::Data), Rc::new(Type::Data)), + vec![], + ); + + let value = Value::Con(constant.into()); + + Ok(value) } - DefaultFunction::MkNilPairData => Ok(Value::Con( - Constant::ProtoList(Type::Pair(Rc::new(Type::Data), Rc::new(Type::Data)), vec![]) - .into(), - ) - .into()), } } } @@ -1151,7 +1017,7 @@ pub fn convert_constr_to_tag(constr: u64) -> Option { pub static ANY_TAG: u64 = 102; #[cfg(not(feature = "native-secp256k1"))] -fn verify_ecdsa(public_key: &[u8], message: &[u8], signature: &[u8]) -> Result, Error> { +fn verify_ecdsa(public_key: &[u8], message: &[u8], signature: &[u8]) -> Result { use secp256k1::{ecdsa::Signature, Message, PublicKey, Secp256k1}; let secp = Secp256k1::verification_only(); @@ -1164,13 +1030,13 @@ fn verify_ecdsa(public_key: &[u8], message: &[u8], signature: &[u8]) -> Result Result, Error> { +fn verify_schnorr(public_key: &[u8], message: &[u8], signature: &[u8]) -> Result { use secp256k1::{schnorr::Signature, Message, Secp256k1, XOnlyPublicKey}; let secp = Secp256k1::verification_only(); @@ -1183,11 +1049,11 @@ fn verify_schnorr(public_key: &[u8], message: &[u8], signature: &[u8]) -> Result let valid = secp.verify_schnorr(&signature, &message, &public_key); - Ok(Value::Con(Constant::Bool(valid.is_ok()).into()).into()) + Ok(Value::Con(Constant::Bool(valid.is_ok()).into())) } #[cfg(feature = "native-secp256k1")] -fn verify_ecdsa(public_key: &[u8], message: &[u8], signature: &[u8]) -> Result, Error> { +fn verify_ecdsa(public_key: &[u8], message: &[u8], signature: &[u8]) -> Result { use k256::ecdsa::{self, signature::hazmat::PrehashVerifier}; let verifying_key = ecdsa::VerifyingKey::try_from(public_key)?; @@ -1196,11 +1062,11 @@ fn verify_ecdsa(public_key: &[u8], message: &[u8], signature: &[u8]) -> Result Result, Error> { +fn verify_schnorr(public_key: &[u8], message: &[u8], signature: &[u8]) -> Result { use k256::schnorr::{self, signature::hazmat::PrehashVerifier}; let verifying_key = schnorr::VerifyingKey::from_bytes(public_key)?; @@ -1209,7 +1075,7 @@ fn verify_schnorr(public_key: &[u8], message: &[u8], signature: &[u8]) -> Result let valid = verifying_key.verify_prehash(message, &signature); - Ok(Value::Con(Constant::Bool(valid.is_ok()).into()).into()) + Ok(Value::Con(Constant::Bool(valid.is_ok()).into())) } #[cfg(test)] diff --git a/crates/uplc/src/machine/value.rs b/crates/uplc/src/machine/value.rs new file mode 100644 index 00000000..741914c3 --- /dev/null +++ b/crates/uplc/src/machine/value.rs @@ -0,0 +1,490 @@ +use std::{collections::VecDeque, ops::Deref, rc::Rc}; + +use num_bigint::BigInt; +use num_traits::Signed; +use pallas_primitives::babbage::{self as pallas, PlutusData}; + +use crate::{ + ast::{Constant, NamedDeBruijn, Term, Type}, + builtins::DefaultFunction, +}; + +use super::{runtime::BuiltinRuntime, Error}; + +pub(super) type Env = Rc>; + +#[derive(Clone, Debug)] +pub enum Value { + Con(Rc), + Delay(Rc>, Env), + Lambda { + parameter_name: Rc, + body: Rc>, + env: Env, + }, + Builtin { + fun: DefaultFunction, + term: Rc>, + runtime: BuiltinRuntime, + }, +} + +impl Value { + pub fn integer(n: BigInt) -> Self { + let constant = Constant::Integer(n); + + Value::Con(constant.into()) + } + + pub fn bool(n: bool) -> Self { + let constant = Constant::Bool(n); + + Value::Con(constant.into()) + } + + pub fn byte_string(n: Vec) -> Self { + let constant = Constant::ByteString(n); + + Value::Con(constant.into()) + } + + pub fn string(n: String) -> Self { + let constant = Constant::String(n); + + Value::Con(constant.into()) + } + + pub fn list(typ: Type, n: Vec) -> Self { + let constant = Constant::ProtoList(typ, n); + + Value::Con(constant.into()) + } + + pub fn data(d: PlutusData) -> Self { + let constant = Constant::Data(d); + + Value::Con(constant.into()) + } + + pub(super) fn unwrap_integer(&self) -> &BigInt { + let Value::Con(inner) = self else {unreachable!()}; + let Constant::Integer(integer) = inner.as_ref() else {unreachable!()}; + + integer + } + + pub(super) fn unwrap_byte_string(&self) -> &Vec { + let Value::Con(inner) = self else {unreachable!()}; + let Constant::ByteString(byte_string) = inner.as_ref() else {unreachable!()}; + + byte_string + } + + pub(super) fn unwrap_string(&self) -> &String { + let Value::Con(inner) = self else {unreachable!()}; + let Constant::String(string) = inner.as_ref() else {unreachable!()}; + + string + } + + pub(super) fn unwrap_bool(&self) -> &bool { + let Value::Con(inner) = self else {unreachable!()}; + let Constant::Bool(condition) = inner.as_ref() else {unreachable!()}; + + condition + } + + pub(super) fn unwrap_pair(&self) -> (&Type, &Type, &Rc, &Rc) { + let Value::Con(inner) = self else {unreachable!()}; + let Constant::ProtoPair(t1, t2, first, second) = inner.as_ref() else {unreachable!()}; + + (t1, t2, first, second) + } + + pub(super) fn unwrap_list(&self) -> (&Type, &Vec) { + let Value::Con(inner) = self else {unreachable!()}; + let Constant::ProtoList(t, list) = inner.as_ref() else {unreachable!()}; + + (t, list) + } + + pub(super) fn unwrap_constant(&self) -> &Constant { + let Value::Con(item) = self else {unreachable!()}; + + item.as_ref() + } + + pub(super) fn unwrap_data_list(&self) -> &Vec { + let Value::Con(inner) = self else {unreachable!()}; + let Constant::ProtoList(Type::Data, list) = inner.as_ref() else {unreachable!()}; + + list + } + + pub fn is_integer(&self) -> bool { + matches!(self, Value::Con(i) if matches!(i.as_ref(), Constant::Integer(_))) + } + + pub fn is_bool(&self) -> bool { + matches!(self, Value::Con(b) if matches!(b.as_ref(), Constant::Bool(_))) + } + + // TODO: Make this to_ex_mem not recursive. + pub fn to_ex_mem(&self) -> i64 { + match self { + Value::Con(c) => match c.as_ref() { + Constant::Integer(i) => { + if *i == 0.into() { + 1 + } else { + (integer_log2(i.abs()) / 64) + 1 + } + } + Constant::ByteString(b) => { + if b.is_empty() { + 1 + } else { + ((b.len() as i64 - 1) / 8) + 1 + } + } + Constant::String(s) => s.chars().count() as i64, + Constant::Unit => 1, + Constant::Bool(_) => 1, + Constant::ProtoList(_, items) => items.iter().fold(0, |acc, constant| { + acc + Value::Con(constant.clone().into()).to_ex_mem() + }), + Constant::ProtoPair(_, _, l, r) => { + Value::Con(l.clone()).to_ex_mem() + Value::Con(r.clone()).to_ex_mem() + } + Constant::Data(item) => self.data_to_ex_mem(item), + }, + Value::Delay(_, _) => 1, + Value::Lambda { .. } => 1, + Value::Builtin { .. } => 1, + } + } + + // I made data not recursive since data tends to be deeply nested + // thus causing a significant hit on performance + pub fn data_to_ex_mem(&self, data: &PlutusData) -> i64 { + let mut stack: VecDeque<&PlutusData> = VecDeque::new(); + let mut total = 0; + stack.push_front(data); + while let Some(item) = stack.pop_front() { + // each time we deconstruct a data we add 4 memory units + total += 4; + match item { + PlutusData::Constr(c) => { + // note currently tag is not factored into cost of memory + // create new stack with of items from the list of data + let mut new_stack: VecDeque<&PlutusData> = + VecDeque::from_iter(c.fields.deref().iter()); + // Append old stack to the back of the new stack + new_stack.append(&mut stack); + stack = new_stack; + } + PlutusData::Map(m) => { + let mut new_stack: VecDeque<&PlutusData>; + // create new stack with of items from the list of pairs of data + new_stack = m.iter().fold(VecDeque::new(), |mut acc, d| { + acc.push_back(&d.0); + acc.push_back(&d.1); + acc + }); + // Append old stack to the back of the new stack + new_stack.append(&mut stack); + stack = new_stack; + } + PlutusData::BigInt(i) => { + let i = from_pallas_bigint(i); + + total += Value::Con(Constant::Integer(i).into()).to_ex_mem(); + } + PlutusData::BoundedBytes(b) => { + let byte_string: Vec = b.deref().clone(); + total += Value::Con(Constant::ByteString(byte_string).into()).to_ex_mem(); + } + PlutusData::Array(a) => { + // create new stack with of items from the list of data + let mut new_stack: VecDeque<&PlutusData> = + VecDeque::from_iter(a.deref().iter()); + // Append old stack to the back of the new stack + new_stack.append(&mut stack); + stack = new_stack; + } + } + } + total + } + + pub fn expect_type(&self, r#type: Type) -> Result<(), Error> { + let constant: Constant = self.clone().try_into()?; + + let constant_type = Type::from(&constant); + + if constant_type == r#type { + Ok(()) + } else { + Err(Error::TypeMismatch(r#type, constant_type)) + } + } + + pub fn expect_list(&self) -> Result<(), Error> { + let constant: Constant = self.clone().try_into()?; + + let constant_type = Type::from(&constant); + + if matches!(constant_type, Type::List(_)) { + Ok(()) + } else { + Err(Error::ListTypeMismatch(constant_type)) + } + } + + pub fn expect_pair(&self) -> Result<(), Error> { + let constant: Constant = self.clone().try_into()?; + + let constant_type = Type::from(&constant); + + if matches!(constant_type, Type::Pair(_, _)) { + Ok(()) + } else { + Err(Error::PairTypeMismatch(constant_type)) + } + } +} + +impl TryFrom for Type { + type Error = Error; + + fn try_from(value: Value) -> Result { + let constant: Constant = value.try_into()?; + + let constant_type = Type::from(&constant); + + Ok(constant_type) + } +} + +impl TryFrom<&Value> for Type { + type Error = Error; + + fn try_from(value: &Value) -> Result { + let constant: Constant = value.try_into()?; + + let constant_type = Type::from(&constant); + + Ok(constant_type) + } +} + +impl TryFrom for Constant { + type Error = Error; + + fn try_from(value: Value) -> Result { + match value { + Value::Con(constant) => Ok(constant.as_ref().clone()), + rest => Err(Error::NotAConstant(rest)), + } + } +} + +impl TryFrom<&Value> for Constant { + type Error = Error; + + fn try_from(value: &Value) -> Result { + match value { + Value::Con(constant) => Ok(constant.as_ref().clone()), + rest => Err(Error::NotAConstant(rest.clone())), + } + } +} + +fn integer_log2(i: BigInt) -> i64 { + let (_, bytes) = i.to_bytes_be(); + match bytes.first() { + None => unreachable!("empty number?"), + Some(u) => (8 - u.leading_zeros() - 1) as i64 + 8 * (bytes.len() - 1) as i64, + } +} + +pub fn from_pallas_bigint(n: &pallas::BigInt) -> BigInt { + match n { + pallas::BigInt::Int(i) => i128::from(*i).into(), + pallas::BigInt::BigUInt(bytes) => BigInt::from_bytes_be(num_bigint::Sign::Plus, bytes), + pallas::BigInt::BigNInt(bytes) => BigInt::from_bytes_be(num_bigint::Sign::Minus, bytes), + } +} + +pub fn to_pallas_bigint(n: &BigInt) -> pallas::BigInt { + if n.bits() <= 64 { + let regular_int: i64 = n.try_into().unwrap(); + let pallas_int: pallas_codec::utils::Int = regular_int.into(); + + pallas::BigInt::Int(pallas_int) + } else if n.is_positive() { + let (_, bytes) = n.to_bytes_be(); + pallas::BigInt::BigUInt(bytes.into()) + } else { + let (_, bytes) = n.to_bytes_be(); + pallas::BigInt::BigNInt(bytes.into()) + } +} + +#[cfg(test)] +mod tests { + use num_bigint::BigInt; + + use crate::{ + ast::Constant, + machine::value::{integer_log2, Value}, + }; + + #[test] + fn to_ex_mem_bigint() { + let value = Value::Con(Constant::Integer(1.into()).into()); + + assert_eq!(value.to_ex_mem(), 1); + + let value = Value::Con(Constant::Integer(42.into()).into()); + + assert_eq!(value.to_ex_mem(), 1); + + let value = Value::Con( + Constant::Integer(BigInt::parse_bytes("18446744073709551615".as_bytes(), 10).unwrap()) + .into(), + ); + + assert_eq!(value.to_ex_mem(), 1); + + let value = Value::Con( + Constant::Integer( + BigInt::parse_bytes("999999999999999999999999999999".as_bytes(), 10).unwrap(), + ) + .into(), + ); + + assert_eq!(value.to_ex_mem(), 2); + + let value = Value::Con( + Constant::Integer( + BigInt::parse_bytes("170141183460469231731687303715884105726".as_bytes(), 10) + .unwrap(), + ) + .into(), + ); + + assert_eq!(value.to_ex_mem(), 2); + + let value = Value::Con( + Constant::Integer( + BigInt::parse_bytes("170141183460469231731687303715884105727".as_bytes(), 10) + .unwrap(), + ) + .into(), + ); + + assert_eq!(value.to_ex_mem(), 2); + + let value = Value::Con( + Constant::Integer( + BigInt::parse_bytes("170141183460469231731687303715884105728".as_bytes(), 10) + .unwrap(), + ) + .into(), + ); + + assert_eq!(value.to_ex_mem(), 2); + + let value = Value::Con( + Constant::Integer( + BigInt::parse_bytes("170141183460469231731687303715884105729".as_bytes(), 10) + .unwrap(), + ) + .into(), + ); + + assert_eq!(value.to_ex_mem(), 2); + + let value = Value::Con( + Constant::Integer( + BigInt::parse_bytes("340282366920938463463374607431768211458".as_bytes(), 10) + .unwrap(), + ) + .into(), + ); + + assert_eq!(value.to_ex_mem(), 3); + + let value = Value::Con( + Constant::Integer( + BigInt::parse_bytes("999999999999999999999999999999999999999999".as_bytes(), 10) + .unwrap(), + ) + .into(), + ); + + assert_eq!(value.to_ex_mem(), 3); + + let value = + Value::Con(Constant::Integer(BigInt::parse_bytes("999999999999999999999999999999999999999999999999999999999999999999999999999999999999".as_bytes(), 10).unwrap()).into()); + + assert_eq!(value.to_ex_mem(), 5); + } + + #[test] + fn integer_log2_oracle() { + // Values come from the Haskell implementation + assert_eq!(integer_log2(1.into()), 0); + assert_eq!(integer_log2(42.into()), 5); + assert_eq!( + integer_log2(BigInt::parse_bytes("18446744073709551615".as_bytes(), 10).unwrap()), + 63 + ); + assert_eq!( + integer_log2( + BigInt::parse_bytes("999999999999999999999999999999".as_bytes(), 10).unwrap() + ), + 99 + ); + assert_eq!( + integer_log2( + BigInt::parse_bytes("170141183460469231731687303715884105726".as_bytes(), 10) + .unwrap() + ), + 126 + ); + assert_eq!( + integer_log2( + BigInt::parse_bytes("170141183460469231731687303715884105727".as_bytes(), 10) + .unwrap() + ), + 126 + ); + assert_eq!( + integer_log2( + BigInt::parse_bytes("170141183460469231731687303715884105728".as_bytes(), 10) + .unwrap() + ), + 127 + ); + assert_eq!( + integer_log2( + BigInt::parse_bytes("340282366920938463463374607431768211458".as_bytes(), 10) + .unwrap() + ), + 128 + ); + assert_eq!( + integer_log2( + BigInt::parse_bytes("999999999999999999999999999999999999999999".as_bytes(), 10) + .unwrap() + ), + 139 + ); + assert_eq!( + integer_log2(BigInt::parse_bytes("999999999999999999999999999999999999999999999999999999999999999999999999999999999999".as_bytes(), 10).unwrap()), + 279 + ); + } +} diff --git a/fib.uplc b/fib.uplc new file mode 100644 index 00000000..82330d98 --- /dev/null +++ b/fib.uplc @@ -0,0 +1 @@ +(program 1.0.0 (lam p0 [(builtin iData) [(lam s [(lam g [[g [(builtin unIData) p0]] s]) (force [[s (con bytestring #06)] (delay [(lam _ (error)) [[(force (builtin trace)) (con string "NameError: validator")] (con unit ())]])])]) [(lam s [(lam s (lam x (lam def (force [[[(force (builtin ifThenElse)) [[(builtin equalsByteString) x] (con bytestring #06)]] (delay (delay (lam p0 (lam s [(lam s (force [[s (con bytestring #00)] (delay [(lam _ (error)) [[(force (builtin trace)) (con string "NameError: a")] (con unit ())]])])) [(lam s [(lam s [[[(lam op [(lam g [g g]) (lam fold (lam xs (lam a (force [[[(force (builtin ifThenElse)) [(force (builtin nullList)) xs]] (delay a)] (delay [[[fold fold] [(force (builtin tailList)) xs]] [[op a] [(force (builtin headList)) xs]]])]))))]) (lam s (lam e [(lam s [(lam s (lam x (lam def (force [[[(force (builtin ifThenElse)) [[(builtin equalsByteString) x] (con bytestring #01)]] (delay (delay [(lam s [[(lam s (force [[s (con bytestring #03)] (delay [(lam _ (error)) [[(force (builtin trace)) (con string "NameError: 1_tup")] (con unit ())]])])) s] (lam v0 (lam v1 (force v1)))]) s]))] (delay [[s x] def])])))) [(lam s (lam x (lam def (force [[[(force (builtin ifThenElse)) [[(builtin equalsByteString) x] (con bytestring #00)]] (delay (delay [(lam s [[(lam s (force [[s (con bytestring #03)] (delay [(lam _ (error)) [[(force (builtin trace)) (con string "NameError: 1_tup")] (con unit ())]])])) s] (lam v0 (lam v1 (force v0)))]) s]))] (delay [[s x] def])])))) [(lam s (lam x (lam def (force [[[(force (builtin ifThenElse)) [[(builtin equalsByteString) x] (con bytestring #03)]] (delay (delay [(lam s (lam __f__ [[__f__ (delay [(lam s (force [[s (con bytestring #01)] (delay [(lam _ (error)) [[(force (builtin trace)) (con string "NameError: b")] (con unit ())]])])) s])] (delay [(lam s [[(builtin addInteger) [(lam s (force [[s (con bytestring #00)] (delay [(lam _ (error)) [[(force (builtin trace)) (con string "NameError: a")] (con unit ())]])])) s]] [(lam s (force [[s (con bytestring #01)] (delay [(lam _ (error)) [[(force (builtin trace)) (con string "NameError: b")] (con unit ())]])])) s]]) s])])) s]))] (delay [[s x] def])])))) s]]]) (lam x (lam def (force [[[(force (builtin ifThenElse)) [[(builtin equalsByteString) x] (con bytestring #07)]] (delay (delay e))] (delay [[s x] def])])))]))] [(lam s [[[(lam s (force [[s (con bytestring #04)] (delay [(lam _ (error)) [[(force (builtin trace)) (con string "NameError: range")] (con unit ())]])])) s] [(lam s (force [[s (con bytestring #05)] (delay [(lam _ (error)) [[(force (builtin trace)) (con string "NameError: n")] (con unit ())]])])) s]] s]) s]] s]) [(lam s (lam x (lam def (force [[[(force (builtin ifThenElse)) [[(builtin equalsByteString) x] (con bytestring #01)]] (delay (delay [(lam s [[(lam s (force [[s (con bytestring #02)] (delay [(lam _ (error)) [[(force (builtin trace)) (con string "NameError: 0_tup")] (con unit ())]])])) s] (lam v0 (lam v1 (force v1)))]) s]))] (delay [[s x] def])])))) [(lam s (lam x (lam def (force [[[(force (builtin ifThenElse)) [[(builtin equalsByteString) x] (con bytestring #00)]] (delay (delay [(lam s [[(lam s (force [[s (con bytestring #02)] (delay [(lam _ (error)) [[(force (builtin trace)) (con string "NameError: 0_tup")] (con unit ())]])])) s] (lam v0 (lam v1 (force v0)))]) s]))] (delay [[s x] def])])))) [(lam s (lam x (lam def (force [[[(force (builtin ifThenElse)) [[(builtin equalsByteString) x] (con bytestring #02)]] (delay (delay [(lam s (lam __f__ [[__f__ (delay [(lam s (con integer 0)) s])] (delay [(lam s (con integer 1)) s])])) s]))] (delay [[s x] def])])))) s]]]]) (lam x (lam def (force [[[(force (builtin ifThenElse)) [[(builtin equalsByteString) x] (con bytestring #05)]] (delay (delay p0))] (delay [[s x] def])])))]]))))] (delay [[s x] def])])))) [(lam s (lam x (lam def (force [[[(force (builtin ifThenElse)) [[(builtin equalsByteString) x] (con bytestring #04)]] (delay (delay [(lam _ (lam limit (lam _ [[[(lam limit (lam step [(lam g [g g]) (lam f (lam cur (force [[[(force (builtin ifThenElse)) [[(builtin lessThanInteger) cur] limit]] (delay [[(force (builtin mkCons)) cur] [[f f] [[(builtin addInteger) cur] step]]])] (delay (con list []))])))])) limit] (con integer 1)] (con integer 0)]))) s]))] (delay [[s x] def])])))) s]]) (lam x (lam def def))]]])) diff --git a/flamegraph.svg b/flamegraph.svg new file mode 100644 index 00000000..596bcac7 --- /dev/null +++ b/flamegraph.svg @@ -0,0 +1,491 @@ +Flame Graph Reset ZoomSearch aiken`aiken::cmd::uplc::exec (1 samples, 0.02%)aiken`uplc::ast::Program<uplc::ast::NamedDeBruijn>::eval (1 samples, 0.02%)aiken`uplc::machine::Machine::run (1 samples, 0.02%)aiken`uplc::machine::Machine::eval_builtin_app (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`aiken::main (1 samples, 0.02%)aiken`aiken::cmd::uplc::exec (1 samples, 0.02%)aiken`uplc::ast::Program<uplc::ast::NamedDeBruijn>::eval (1 samples, 0.02%)aiken`uplc::machine::Machine::run (1 samples, 0.02%)aiken`uplc::machine::Machine::eval_builtin_app (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`DYLD-STUB$$free (76 samples, 1.83%)a..aiken`__rdl_dealloc (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (619 samples, 14.91%)aiken`core::ptr::drop_i..libsystem_malloc.dylib`DYLD-STUB$$_platform_bzero (33 samples, 0.79%)libsystem_malloc.dylib`_nanov2_free (557 samples, 13.42%)libsystem_malloc.dyl..libsystem_malloc.dylib`free (303 samples, 7.30%)libsystem_..libsystem_malloc.dylib`nanov2_madvise_block (1 samples, 0.02%)libsystem_platform.dylib`__bzero (35 samples, 0.84%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,725 samples, 41.56%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBru..aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,725 samples, 41.56%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBru..libsystem_platform.dylib`_platform_memset (91 samples, 2.19%)l..aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1,974 samples, 47.55%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>>libsystem_malloc.dylib`nanov2_madvise_block (249 samples, 6.00%)libsyste..libsystem_malloc.dylib`nanov2_madvise_block_locked (249 samples, 6.00%)libsyste..libsystem_kernel.dylib`madvise (249 samples, 6.00%)libsyste..libsystem_malloc.dylib`_nanov2_free (1 samples, 0.02%)aiken`main (2 samples, 0.05%)aiken`std::rt::lang_start_internal (2 samples, 0.05%)aiken`std::rt::lang_start::_{{closure}} (2 samples, 0.05%)aiken`std::sys_common::backtrace::__rust_begin_short_backtrace (2 samples, 0.05%)aiken`aiken::main (2 samples, 0.05%)aiken`aiken::cmd::uplc::exec (2 samples, 0.05%)aiken`uplc::ast::Program<uplc::ast::NamedDeBruijn>::eval (2 samples, 0.05%)aiken`uplc::machine::Machine::run (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)libsystem_malloc.dylib`free (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`std::rt::lang_start::_{{closure}} (3 samples, 0.07%)aiken`std::sys_common::backtrace::__rust_begin_short_backtrace (3 samples, 0.07%)aiken`aiken::main (3 samples, 0.07%)aiken`aiken::cmd::uplc::exec (3 samples, 0.07%)aiken`uplc::ast::Program<uplc::ast::NamedDeBruijn>::eval (3 samples, 0.07%)aiken`uplc::machine::Machine::run (3 samples, 0.07%)aiken`uplc::machine::Machine::eval_builtin_app (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`std::rt::lang_start_internal (1 samples, 0.02%)aiken`std::rt::lang_start::_{{closure}} (1 samples, 0.02%)aiken`std::sys_common::backtrace::__rust_begin_short_backtrace (1 samples, 0.02%)aiken`aiken::main (1 samples, 0.02%)aiken`aiken::cmd::uplc::exec (1 samples, 0.02%)aiken`uplc::ast::Program<uplc::ast::NamedDeBruijn>::eval (1 samples, 0.02%)aiken`uplc::machine::Machine::run (1 samples, 0.02%)aiken`uplc::machine::Machine::eval_builtin_app (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)libsystem_malloc.dylib`free (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`uplc::ast::Program<uplc::ast::NamedDeBruijn>::eval (3 samples, 0.07%)aiken`uplc::machine::Machine::run (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)libsystem_malloc.dylib`_nanov2_free (2 samples, 0.05%)aiken`uplc::machine::Machine::eval_builtin_app (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`uplc::machine::Machine::run (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)libsystem_malloc.dylib`_nanov2_free (1 samples, 0.02%)aiken`<alloc::rc::Rc<T> as core::ops::drop::Drop>::drop (3 samples, 0.07%)libsystem_platform.dylib`_platform_memset (1 samples, 0.02%)aiken`<uplc::ast::Term<T> as core::clone::Clone>::clone (17 samples, 0.41%)aiken`DYLD-STUB$$free (1 samples, 0.02%)aiken`DYLD-STUB$$malloc (37 samples, 0.89%)aiken`__rdl_alloc (35 samples, 0.84%)aiken`__rust_alloc (1 samples, 0.02%)aiken`core::option::Option<&T>::cloned (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`DYLD-STUB$$free (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)libsystem_malloc.dylib`_nanov2_free (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)libsystem_malloc.dylib`nanov2_madvise_block (1 samples, 0.02%)libsystem_malloc.dylib`nanov2_madvise_block_locked (1 samples, 0.02%)libsystem_kernel.dylib`madvise (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (4 samples, 0.10%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (4 samples, 0.10%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (4 samples, 0.10%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (4 samples, 0.10%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (4 samples, 0.10%)libsystem_malloc.dylib`free (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (5 samples, 0.12%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (5 samples, 0.12%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (5 samples, 0.12%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (5 samples, 0.12%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (5 samples, 0.12%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (5 samples, 0.12%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (5 samples, 0.12%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (5 samples, 0.12%)libsystem_malloc.dylib`free (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (6 samples, 0.14%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (6 samples, 0.14%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (6 samples, 0.14%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (6 samples, 0.14%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (6 samples, 0.14%)libsystem_platform.dylib`_platform_memset (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (7 samples, 0.17%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (7 samples, 0.17%)libsystem_malloc.dylib`_nanov2_free (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)libsystem_malloc.dylib`free (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (10 samples, 0.24%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (9 samples, 0.22%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (9 samples, 0.22%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (9 samples, 0.22%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (9 samples, 0.22%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (9 samples, 0.22%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (9 samples, 0.22%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (9 samples, 0.22%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (9 samples, 0.22%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (9 samples, 0.22%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (9 samples, 0.22%)libsystem_malloc.dylib`free (1 samples, 0.02%)aiken`DYLD-STUB$$free (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (2 samples, 0.05%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (1 samples, 0.02%)libsystem_malloc.dylib`_nanov2_free (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (4 samples, 0.10%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (4 samples, 0.10%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (4 samples, 0.10%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (4 samples, 0.10%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (4 samples, 0.10%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (4 samples, 0.10%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (4 samples, 0.10%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (4 samples, 0.10%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (4 samples, 0.10%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (4 samples, 0.10%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (4 samples, 0.10%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (4 samples, 0.10%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (4 samples, 0.10%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (4 samples, 0.10%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (4 samples, 0.10%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (4 samples, 0.10%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (4 samples, 0.10%)libsystem_malloc.dylib`free (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (7 samples, 0.17%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (7 samples, 0.17%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (7 samples, 0.17%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (7 samples, 0.17%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (7 samples, 0.17%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (7 samples, 0.17%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (7 samples, 0.17%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (7 samples, 0.17%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (6 samples, 0.14%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (6 samples, 0.14%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (6 samples, 0.14%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (6 samples, 0.14%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (6 samples, 0.14%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (6 samples, 0.14%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (6 samples, 0.14%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (6 samples, 0.14%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (6 samples, 0.14%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (5 samples, 0.12%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (5 samples, 0.12%)libsystem_malloc.dylib`_nanov2_free (1 samples, 0.02%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (8 samples, 0.19%)libsystem_malloc.dylib`_nanov2_free (1 samples, 0.02%)aiken`uplc::machine::Machine::eval_builtin_app (9 samples, 0.22%)aiken`uplc::machine::runtime::_<impl uplc::builtins::DefaultFunction>::call (1 samples, 0.02%)aiken`<alloc::rc::Rc<T> as core::ops::drop::Drop>::drop (24 samples, 0.58%)aiken`core::option::Option<&T>::cloned (5 samples, 0.12%)aiken`core::ptr::drop_in_place<uplc::ast::Term<uplc::ast::NamedDeBruijn>> (3 samples, 0.07%)libsystem_malloc.dylib`_nanov2_free (3 samples, 0.07%)libsystem_malloc.dylib`nanov2_allocate_outlined (790 samples, 19.03%)libsystem_malloc.dylib`nanov2_..libsystem_malloc.dylib`nanov2_find_block_and_allocate (485 samples, 11.68%)libsystem_malloc...aiken`uplc::machine::discharge_value (1,438 samples, 34.64%)aiken`uplc::machine::discharge_valuelibsystem_platform.dylib`_platform_memset (1 samples, 0.02%)libsystem_malloc.dylib`_malloc_zone_malloc (258 samples, 6.22%)libsyste..libsystem_malloc.dylib`free (2 samples, 0.05%)libsystem_malloc.dylib`malloc (1 samples, 0.02%)libsystem_malloc.dylib`nanov2_allocate_outlined (2 samples, 0.05%)aiken`aiken::cmd::uplc::exec (2,136 samples, 51.46%)aiken`aiken::cmd::uplc::execaiken`uplc::ast::Program<uplc::ast::NamedDeBruijn>::eval (2,136 samples, 51.46%)aiken`uplc::ast::Program<uplc::ast::NamedDeBruijn>::evalaiken`uplc::machine::Machine::run (2,136 samples, 51.46%)aiken`uplc::machine::Machine::runlibsystem_malloc.dylib`nanov2_malloc (321 samples, 7.73%)libsystem_m..aiken`main (2,137 samples, 51.48%)aiken`mainaiken`std::rt::lang_start_internal (2,137 samples, 51.48%)aiken`std::rt::lang_start_internalaiken`std::rt::lang_start::_{{closure}} (2,137 samples, 51.48%)aiken`std::rt::lang_start::_{{closure}}aiken`std::sys_common::backtrace::__rust_begin_short_backtrace (2,137 samples, 51.48%)aiken`std::sys_common::backtrace::__rust_begin_short_backtraceaiken`aiken::main (2,137 samples, 51.48%)aiken`aiken::mainaiken`clap_lex::RawArgs::cursor (1 samples, 0.02%)dyld`start (2,138 samples, 51.51%)dyld`startlibdyld.dylib`dyld4::LibSystemHelpers::getenv (1 samples, 0.02%)libsystem_kernel.dylib`__exit (1 samples, 0.02%)all (4,151 samples, 100%)libsystem_kernel.dylib`__exit (26 samples, 0.63%) \ No newline at end of file